我遇到了 /var/www/html 中的权限问题,并且组权限没有按照我想象的方式工作。
bash-4.1$ whoami
barney
bash-4.1$ id barney
uid=507(barney) gid=511(barney) groups=511(barney),509(test-group)
bash-4.1$ ls -la /var/www
total 24
drwxrwxr-x+ 6 frank test-group 4096 Apr 18 20:48 .
drwxr-xr-x 19 root root 4096 Oct 7 2014 ..
drwxrwxr-x+ 3 frank test-group 4096 Mar 22 15:04 cgi-bin
drwxrwxr-x+ 3 frank test-group 4096 Apr 18 20:48 error
drwxrwxr-x+ 2 frank test-group 4096 Apr 20 16:25 html
drwxrwxr-x+ 3 frank test-group 4096 Apr 18 20:48 icons
bash-4.1$ ls -la /var/www/html
total 8
drwxrwxr-x+ 2 frank test-group 4096 Apr 20 16:25 .
drwxrwxr-x+ 6 frank test-group 4096 Apr 18 20:48 ..
bash-4.1$ touch test
touch: cannot touch `test': Permission denied
bash-4.1$ getenforce
Disabled
用户 Barney 位于正确的组中,该组对 /var/www/ 和 /var/www/html 具有权限。
Barney 无法在 /var/www/html 中创建文件。
为确保安全,SELinux 也已被禁用。
我可能只是错过了一些东西,但我现在正竭尽全力试图弄清楚,所以一些外部建议会有所帮助。
答案1
从你提供的信息可以看出,该组成员測試組无权在其中创建文件和文件夹/html文件夹。请按如下方式设置您的 ACL:
setfacl -Rm d:g:test-group:rwX,g:test-group:rwX /var/www/html
或者为此文件夹设置明确的权限:
chmod g+w /var/www/html
但在这种情况下,新创建的子文件夹的权限仍然保留rwxr-xr-x根据组中用户的预定义 umask測試組。因此,您必须手动反复修改每个子文件夹的 chmod。因此,第一种方法是可取的。