如何实现用户权限隔离?

isp*_*rto 0 permissions chmod

/opt/software
/home/user1/file
/home/user2/file
Run Code Online (Sandbox Code Playgroud)
  1. user1 可以 rwx 到 /home/user1/file
  2. user2 可以 rwx 到 /home/user2/file
  3. softwarecan rwx 到 /home/user1/file 和 /home/user2/file
  4. user1 不能 rwx 到 /home/user2/file
  5. user2 不能 rwx 到 /home/user1/file

如何实现这种设置?

Fra*_*sen 5

听起来像实现您想要做的事情的最佳方法是使用 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。