我需要提供以最简单的方式通过 Web 进行管理的 FTP 服务。我的客户希望创建文件夹和用户,并任意授予他们只读或读/写访问权限。
例如:
文件夹“文档”应该对一些用户只读、对内部用户可写,而对其余用户不可见。
“图片”文件夹应该只对记者开放,对同事开放,对其他人则不可见。
对于管理员指定的任意用户来说,文件夹“媒体”应该是只读、可写或不可见的。
可能有大量的用户和文件夹。
我找不到一个好的方法来实现这一点。
我原本以为可以为每个用户提供一个主文件夹,并为其具有读取权限的文件夹添加符号链接,并在用户具有写入权限时将其设为该文件夹组的一部分,但现在我认为这行不通,因为使用 PureFTPd(或 ProFTPd)我只能指定虚拟用户到系统用户的映射,并且每个虚拟用户只能指定一个 GUID。我的方法要求我可以为每个用户指定多个 GUID(每个用户具有写入权限的文件夹一个)。
我需要开始对这个管理员进行编程,但我仍然不知道哪种方法可行(如果有的话)。
问题是:如何为大量 FTP 用户授予大约 20 个文件夹的任意权限?
答案1
ACL 对你有用吗?对于 Ubuntu 10.10,使用 acl 选项挂载文件系统。
sudo vim /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 默认值,acl 0 1
sudo mount -o remount,acl /
(或者可能有一个单独的 /home/ 分区?)为此目的创建群组。
sudo groupadd journalists
sudo groupadd associates
sudo usermod -a -G journalists $username_1
sudo usermod -a -G associates $username_2
(用户需要注销并重新登录才能成为群组成员。)
仅以目录 /home/ftp/Pictures 为例,为了实现“文件夹‘Pictures’应该只对记者可读、对同事可写、对其他人不可见”:
sudo chown -R root.associates /home/ftp/Pictures
sudo chmod 0770 /home/ftp/Pictures
sudo chmod g+s /home/ftp/Pictures
sudo setfacl -d -m u::rwx,g::rwx,o::--- /home/ftp/Pictures
sudo setfacl -d -m u::rwx,g:journalists:r-x,o::--- /home/ftp/Pictures
现在,您已经让 associates 组的成员能够读取/写入 /home/ftp/Pictures 中的所有内容,而 journalists 组的成员只能读取(执行),其他人则根本没有权限。
如果我们想要限制除创建文件的用户之外的所有人进行删除和重命名:
sudo chmod +t /home/ftp/Pictures