我读过无数关于这个主题的文章,搜索了所有我能找到的问题和答案,但都无功而返。我快要疯了,所以我求助于你们,因为我知道我的问题的答案很可能很简单。
在我的 Web 服务器上,我有两个用户和两个组。用户需要读取和写入同一区域。不是单个文件夹,而是复杂的文件夹网络。
>> groups user_1
popuser psaserv psacln
>> groups user_2
psacln popuser psaserv
这些不是真正的用户,所以他们没有 .bashrc 文件。当每个用户创建一个目录时,权限看起来与我预期的完全一样:
drwxr-xr-x 2 user_1 popuser 4096 Apr 30 20:47 folder_1
drwxr-xr-x 2 user_2 psacln 4096 Apr 30 20:49 folder_2
但是一旦两个用户中的一个创建了该文件夹,另一个用户就无法向其中写入任何文件。
如果我 chmod 777,那么他们当然都可以写。
猫/等/组
popuser:x:31:user_1,psaserv,user_2
psacln:x:505:user_2,user_1,psaserv
同样不寻常的是,当将文件写入组时,权限似乎非常严格:
-rw-r--r-- 1 user_2 psacln 0 Apr 30 21:15 some_file.ext
尽管这也许是意料之中的。
无论如何,总结并澄清我的两部分问题:
1) How can I make both users access files and folders from each other, given their group differences?
2) How can I set the default permissions on new files so they inherit the folder permissions?
(2) 我尝试将 umask 022 添加到我的 root 用户的 ~/.bashrc 文件中,但没有任何效果。我不确定对于那些没有主目录的“用户”,应该把它放在哪里。
抱歉,我知道对于 Linux 用户专家来说,这样的问题可能显得多余。当我甚至不知道自己在寻找什么时,搜索就变得很困难。
一如既往,非常感谢。
[我在 centOS 上]
答案1
1)考虑到两个用户的组差异,如何让两个用户彼此访问文件和文件夹?
一种方法是给目录赋予用户共同拥有的组。
chgrp psaserv folder1 folder2
chmod g+w folder1 folder2
2)如何设置新文件的默认权限以便它们继承文件夹权限?
使用“设置组 ID”位。
chmod g+s folder1 folder2
您不能继承 rwx 权限,请设置 umask。
我尝试将 umask 022 添加到我的 root 用户的 ~/.bashrc 文件中,但没有任何效果。我不确定这些没有主目录的“用户”应该把它放在哪里。
您已安排某个进程使用这些用户 ID。您应该安排该进程将其 umask 设置为 022。如何执行此操作取决于您安排执行此操作的进程。也许您使用的是sudo
,也许它是一个 Web 服务器,也许是其他东西。除非您解释,否则无法提供详细的具体建议。
答案2
如果您希望用户创建的新文件默认可由组成员写入,则需要将 umask 修改为 022 以外的值。如果您不介意安全隐患,请将 umask 设置为 002(有关在何处设置 umask 的示例,请参阅https://stackoverflow.com/questions/10220531/how-to-set-system-wide-umask)。
Umask 解释
新创建的文件和目录的默认文件权限是标准权限(rw-rw-rw
对于文件,rwxrwxrwx
对于目录)减去当前 umask 设置。umask 设置为 000 将保留标准权限,而设置为 777 将删除所有权限。
umask 中的三个数字分别代表用户、组和任何人的权限。该数字代表是否删除特定权限的三个二进制数字。
d - rwx
-------
0 - 000 (rwx)
1 - 001 (rw-)
2 - 010 (r-x)
3 - 011 (r--)
4 - 100 (-wx)
5 - 101 (-w-)
6 - 110 (--x)
7 - 111 (---)
要计算新文件在给定特定 umask 时将具有哪些权限,请从默认权限开始并减去 umask。
orig rwx rwx rwx (777, default directory permission)
umask 000 010 010 (022)
result rwx r-x r-x (755)
orig rw- rw- rw- (666, default file permission)
umask 000 010 010 (022)
result rw- r-- r-- (644)
orig rwx rwx rwx (777, default directory permission)
umask 000 000 010 (002)
result rwx rwx r-x (775)
orig rw- rw- rw- (666, default file permission)
umask 000 000 010 (002)
result rw- rw- r-- (664)