/opt/software
/home/user1/file
/home/user2/file
- user1 可以对 /home/user1/file 进行读写
- user2 可以对 /home/user2/file 进行读写
- 软件可以对 /home/user1/file 和 /home/user2/file 进行读写
- user1 无法对 /home/user2/file 进行 rwx
- user2 无法对 /home/user1/file 进行 rwx
如何实现这个设置?
答案1
听起来实现你想要做的事情的最佳方式是使用 ACL。
ext3 和 ext4 都支持该功能,但需要启用它才能工作。
为了不仅显示我所做的工作,还显示我的测试的文件结构,我将其全部粘贴。我使用 RHEL 6.2 进行测试。
创建所需的用户
root # useradd -d /opt/software/ software
root # useradd user1
root # useradd user2
在两个用户的主目录中创建“文件”。为其设置组权限 - ACL 需要该权限,尽管该组可以是用户自己的。
root # touch /home/user1/file && touch /home/user2/file
root # chmod 770 /home/user1/file /home/user2/file
root # chown user1:user1 /home/user1/file
root # chown user2:user2 /home/user2/file
设置ACL。-m = 修改。u = 用户。software = 用户名。rwx = 权限。
root # setfacl -m u:software:rwx /home/user1/file
root # setfacl -m u:software:rwx /home/user2/file
获取 ACL 来检查其是否正确。
root # getfacl /home/user1/file
getfacl: Removing leading '/' from absolute path names
# file: home/user1/file
# owner: user1
# group: user1
user::rwx
user:software:rwx
group::rwx
mask::rwx
other::---
使可执行文件做一些有用的事情。
root # echo "echo horse" > /home/user1/file
root # echo "echo horse" > /home/user2/file
设置用户主目录的 ACL
root # setfacl -m u:software:rx /home/user1
root # setfacl -m u:software:rx /home/user2
再次确保该组具有所需的权限。
root # chmod 750 /home/user1 /home/user2
测试时间到了!
root # su - software
-bash-4.1$ /home/user1/file
hest
-bash-4.1$ vi /home/user1/file
-bash-4.1$ /home/user1/file
hest
moo
-bash-4.1$ logout
root # su - user1
[user1@tutsrv01 ~]$ /home/user2/file
-bash: /home/user2/file: Permission denied
关于 ACL 的一些知识
要使该组生效,其权限必须至少与 ACL 条目相同。如果您创建了一个读写ACL条目,但unix权限组条目只有rw,那么该ACL的有效权限就会被限制为rw。