我使用 vsftpd 创建了 FTP 服务器。我使用的是 Ubuntu 12.04 桌面版。我想显示仅分配给该用户的目录。
例如我创建了用户“a”、“b”、“c”和组“developer”和“tester”,用户添加到组的方式如下:
"a"----> "developer", "tester". "b"----> "developer". "c"----> "tester".
我已经在文件夹中创建了“developerdoc”(owner-root,group-developer)和“testerdoc”(owner-root,group-tester)目录,/home
并将所有用户的主目录指定为/home
。
现在,当我以用户“a”身份登录时,它应该显示目录“developerdoc”和“testerdoc”,因为用户 a 都属于这两个组。
如果我以用户“b”身份登录,则应该仅显示目录“developerdoc”。不应列出目录“testerdoc”。
对于用户“c”,tre 也是一样,只应列出“testerdoc”。
请指导我如何才能实现这一点。
答案1
我认为这是不可能的。由于两个文件夹共享同一个父文件夹,并且所有用户都应该有权访问该父文件夹,因此所有用户都必须至少对该父文件夹具有读取和执行权限 - 这样才能看到全部位于其中的文件/目录。即使他们无权访问其中的某些文件/子目录,情况也是如此:他们仍然可以看到(但当然不能读取/执行)它。
为了便于理解,我给你画了一幅图:假设/home
有一条“可封闭的街道”,有一个受监视的入口。因此,你允许某人通过该入口并在街道上行走。虽然所有房屋(即子目录/home/*
)都对他关闭(你没有给他进入任何房屋的权限/钥匙),但这位访客仍然可以看到这些房屋。他可能无法进入这些房屋——但你不能在允许他行走的同时隐藏这些房屋。
所以这个故事是这样的:如果游客不想看到房子,就不要让他走在街上,这是唯一的办法。对于你的目录:完全隐藏它们的唯一方法是不允许进入/home
。但如果他们不能进入另一个目录(甚至不知道里面有什么),这为什么会困扰你呢?