授予用户对一个目录的读/写访问权限

Modified on: Sat, 30 Jun 2018 05:39:00 +0800

我正在运行服务器,我需要为单个用户提供对特定目录的读/写访问权限。我尝试了以下内容:

sudo adduser abcd
sudo groupadd abcdefg
chown -R .abcdefg /var/www/allowfolder
chmod -R g+rw /var/www/allowfolder
usermod -a -G comments abcd

上述内容似乎有效,但它为用户提供了对服务器其余部分的只读访问权限。

如何设置权限以便用户只能读取和写入特定文件夹?用户还应该能够运行mysql等程序。

最佳答案

否定ACL

您可以通过设置访问控制列表来阻止用户访问文件系统的某些部分。例如,要确保用户abcd无法访问/home下的任何文件:

setfacl -m user:abcd:0 /home

这种方法很简单,但您必须记住阻止访问您不希望abcd访问的所有内容。

的chroot

要积极控制abcd可以看到的内容,请设置chroot,即将用户限制为文件系统的子树。

你需要制作用户需要的所有文件(例如mysql及其所有依赖项,如果你希望用户能够运行mysql) chroot环境。说chroot的路径是/home/restricted/abcd; mysql程序需要在/home/restricted/abcd下可用。指向chroot外部的符号链接并不好,因为符号链接查找受chroot jail的影响。在Linux下,您可以充分利用绑定装载:

mount --rbind /bin /home/restricted/abcd/bin
mount --rbind /dev /home/restricted/abcd/dev
mount --rbind /etc /home/restricted/abcd/dev
mount --rbind /lib /home/restricted/abcd/lib
mount --rbind /proc /home/restricted/abcd/proc
mount --rbind /sbin /home/restricted/abcd/sbin
mount --rbind /sys /home/restricted/abcd/sys
mount --rbind /usr /home/restricted/abcd/usr

您也可以复制文件(但是您需要注意它们是最新的)。

要将用户限制为chroot,请将ChrootDirectory指令添加到/etc/sshd_config

Match User abcd
    ChrootDirectory /home/restricted/abcd

安全框架

您还可以使用SELinux或AppArmor等安全框架。在这两种情况下,您都需要编写一个相当精细的配置,以确保您不会留下任何漏洞。

作者:Gilles

相关问答

添加新评论