如何实现此文件和文件夹权限场景:
考虑这些文件夹:
文件夹 A:640 root apache /var/www/A/
文件夹 www:640 root apache /var/www/
和这个 linux 用户:
id user1
:uid=1000(user1) gid=1000(user1) groups=1000(user1)
我想允许 linux 用户user1
读/写访问权限只是到文件夹A,但不要更改文件夹 A 的所有者或组。
我尝试过这些场景,但没有一个是理想的:
- 添加
user1
到组apache
:
缺点:user1
将能够读取位于 的其他文件/var/www/
。 user1
将 的 home中的文件夹(例如文件夹 B)硬链接/var/www/A/
到文件夹 B 而不是 A 并设置适当的权限:
缺点:硬链接到目录不可能在跨设备上进行。- 添加
user1
到sudoers
:
缺点: 的复杂性user1
,另外,user1
可能会因人为错误而破坏文件夹 A 的所有者/组策略和/或权限。
任何想法?
答案1
我假设您想要授予对 /var/www/A 的访问权限,因为您访问的是viauser1
管理的内容user1
http://您的域名/A?为什么不让 apache 将内容重定向到用户主目录下的目录?
Alias /A/ /path/to/users/homedir/A
这将实现结果,并且不必更改 /path/to/users/homedir/A 的组/用户所有权/权限。
但是如果你想通过文件权限来做到这一点,你将只能实现它经过更改 /var/www 的所有权/权限和/var/www/A。
创建一个“新组”(大多数 UNIX 提供groupadd
命令),将 apache 和 user1 添加到其中。将 /var/www/A 的组所有权更改为此“新组”(使用chown
或chgrp
)。设置权限以禁止“新组”和“其他用户”对 /var/www 目录 ( chmod 711 /var/www
) 的 rw 访问权限,并授予对 /var/www/A ( ) 的“新组”访问权限chmod g+rwx /var/www/A
。
参考:
答案2
创建一个 group group1
,添加apache
和user1
to group1
,然后将拥有的组更改/var/www/A
为group1
using chgrp
,如下所示:
# use `-R' if you want to do this recursively, that is grant `group1' access to
# all sub-directories of `A' as well as access to `A' itself.
# as a regular user with sudo rights:
sudo chgrp -R group1 /var/www/A
# as root
chgrp -R group1 /var/www/A
因此,user1
将不会成为 apache 的成员,因此将无法读取/var/www
,但仍然能够读取/var/www/A
,而 apache 也将能够仍然读取/var/www/A
。
最后,仔细检查组成员是否具有read/write
访问权限,chmod
如下所示:
# use `-R' at your own discretion--it acts the same way as `-R' in `chgrp'
# as root
chmod -R g=rw /var/www/A
# as a regular user with sudo rights
sudo chmod -R g=rw /var/www/A
或类似的东西。