如何实现用户权限隔离?

如何实现用户权限隔离?
/opt/software
/home/user1/file
/home/user2/file
  1. user1 可以对 /home/user1/file 进行读写
  2. user2 可以对 /home/user2/file 进行读写
  3. 软件可以对 /home/user1/file 和 /home/user2/file 进行读写
  4. user1 无法对 /home/user2/file 进行 rwx
  5. 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。

相关内容