VaTo Asked: 2018-01-24 10:36:18 +0800 CST2018-01-24 10:36:18 +0800 CST 2018-01-24 10:36:18 +0800 CST chroot 一个用户到不同位置的多个目录 772 我想知道如何限制用户只能访问和拥有 RWX 权限等目录/etc/httpd,/etc/php以及/var/www/html它自己的主目录。 此外,我希望能够限制该用户只能启动/停止/重新启动 apache 服务。 我能想到的只有 chroot,但我只是用一个目录完成了。有任何想法吗? linux chroot 2 个回答 Voted Best Answer L.Ray 2018-01-24T13:28:38+08:002018-01-24T13:28:38+08:00 被监禁的用户将无法按原样访问这些文件夹。如果您在文件系统上启用了 acl,您可以创建一个普通用户并使用访问控制列表来控制对目录的访问。 要授予用户“Bob”访问目录的权限,请创建一个组,将 Bob 放在该组中,然后递归地授予该组访问 /etc/http/ 中所有现有和新创建文件的权限: # groupadd WebAccessGroup # usermod -a -G WebAccessGroup Bob # setfacl -Rm d:g:WebAccessGroup:rwx,g:WebAccessGroup:rwx /etc/httpd/ 您也可以只授予用户“Bob”wrx 访问 /etc/httpd 的权限,而无需创建组: # setfacl -Rm d:u:Bob:rwx,u:Bob:rwx /etc/httpd/ 要允许 WebAccessGroup 组启动和停止 Apache,您可以授予组 sudo 访问权限,以运行您调用的特定脚本,以 root 身份启动/停止 Apache: 使用“visudo”命令将以下内容添加到您的 /etc/sudoers 文件中: # visudo %WebAccessGroup ALL=(root) NOEXEC: /usr/bin/httpd 然后 Bob 将使用 sudo 启动 Apache: $ sudo /usr/sbin/httpd -k start ** 注意:如果您在非标准端口上以非 root 用户身份运行 Apache(本例中为“anotheruser”),将 All=(root) 更改为 All=(anotheruser) 并运行 start 会更安全、更好命令如: sudo -u anotheruser /usr/sbin/httpd -k start ilkkachu 2018-01-24T13:02:06+08:002018-01-24T13:02:06+08:00 在 Linux 上,您可以使用绑定挂载使其他目录在 chroot 中可见: # mkdir -p /users/chroot/var/www/html # mount --bind /var/www/html /users/chroot/var/www/html etc. 要允许用户重新启动单个服务,您可以使用sudo并允许用户运行类似service apache2 restart的命令,等等。 但是,让用户进入 chroot 并允许用户重新启动位于 chroot 之外的服务可能会很困难。它将要求服务管理器(systemd?)所需的一切都在 chroot 中可见。那时,在同一个 chroot(或容器或虚拟机)中运行整个服务器可能更容易。
被监禁的用户将无法按原样访问这些文件夹。如果您在文件系统上启用了 acl,您可以创建一个普通用户并使用访问控制列表来控制对目录的访问。
要授予用户“Bob”访问目录的权限,请创建一个组,将 Bob 放在该组中,然后递归地授予该组访问 /etc/http/ 中所有现有和新创建文件的权限:
您也可以只授予用户“Bob”wrx 访问 /etc/httpd 的权限,而无需创建组:
要允许 WebAccessGroup 组启动和停止 Apache,您可以授予组 sudo 访问权限,以运行您调用的特定脚本,以 root 身份启动/停止 Apache:
使用“visudo”命令将以下内容添加到您的 /etc/sudoers 文件中:
然后 Bob 将使用 sudo 启动 Apache:
** 注意:如果您在非标准端口上以非 root 用户身份运行 Apache(本例中为“anotheruser”),将 All=(root) 更改为 All=(anotheruser) 并运行 start 会更安全、更好命令如:
在 Linux 上,您可以使用绑定挂载使其他目录在 chroot 中可见:
要允许用户重新启动单个服务,您可以使用
sudo
并允许用户运行类似service apache2 restart
的命令,等等。但是,让用户进入 chroot 并允许用户重新启动位于 chroot 之外的服务可能会很困难。它将要求服务管理器(systemd?)所需的一切都在 chroot 中可见。那时,在同一个 chroot(或容器或虚拟机)中运行整个服务器可能更容易。