/opt/software
/home/user1/file
/home/user2/file
Run Code Online (Sandbox Code Playgroud)
如何实现这种设置?
听起来像实现您想要做的事情的最佳方法是使用 ACL。
ext3 和 ext4 都支持,但需要启用它才能工作。
为了不仅显示我做了什么,而且显示我的测试的文件结构,我把它全部粘贴了。我使用 RHEL 6.2 进行测试。
创建需要的用户
root # useradd -d /opt/software/ software
root # useradd user1
root # useradd user2
Run Code Online (Sandbox Code Playgroud)
在两个用户的家中创建“文件”。对其设置组权限 - 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
Run Code Online (Sandbox Code Playgroud)
设置ACL。-m = 修改。你 = 用户。软件 = 用户名。rwx = 权限。
root # setfacl -m u:software:rwx /home/user1/file
root # setfacl -m u:software:rwx /home/user2/file
Run Code Online (Sandbox Code Playgroud)
获取 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::---
Run Code Online (Sandbox Code Playgroud)
使可执行文件做一些有用的事情。
root # echo "echo horse" > /home/user1/file
root # echo "echo horse" > /home/user2/file
Run Code Online (Sandbox Code Playgroud)
在用户的主目录上设置 ACL
root # setfacl -m u:software:rx /home/user1
root # setfacl -m u:software:rx /home/user2
Run Code Online (Sandbox Code Playgroud)
再次确保该组具有所需的权限。
root # chmod 750 /home/user1 /home/user2
Run Code Online (Sandbox Code Playgroud)
测试时间!
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
Run Code Online (Sandbox Code Playgroud)
关于ACL的一点
要工作,该组必须至少具有与 ACL 条目相同的权限。如果你做了一个rwx ACL条目,但是unix权限组条目只有rw,那么ACL的有效权限就会被限制在rw。
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |