要在CentOS中设置同一目录下不同文件由不同用户创建,并且只有创建者才能修改和查看文件,你可以使用ACL(Access Control Lists)和特殊的目录权限设置。以下是实现这一目标的步骤:
首先,确保你的文件系统支持ACL。大多数现代Linux文件系统如ext4都默认支持ACL。你可以使用以下命令检查:
tune2fs -l /dev/sdXY | grep "Default mount options:"
如果输出中包含 "acl",则说明已经支持ACL。
安装ACL工具(如果尚未安装):
sudo yum install acl
创建一个共享目录,并设置适当的权限:
sudo mkdir /shared_directory sudo chmod 1770 /shared_directory
这里的 1770 权限意味着:
1: 设置粘滞位(Sticky Bit),防止用户删除其他用户的文件7: 所有者(root)拥有所有权限7: 组拥有所有权限0: 其他用户没有任何权限将需要访问该目录的所有用户添加到一个共同的组,例如 "shared_group":
sudo groupadd shared_group sudo usermod -aG shared_group user1 sudo usermod -aG shared_group user2 # 对所有需要访问的用户重复此操作
将目录的组所有权更改为新创建的组:
sudo chgrp shared_group /shared_directory
设置默认ACL,使新创建的文件只对其创建者可读写:
sudo setfacl -d -m u::rwx,g::---,o::--- /shared_directory
为目录设置ACL,允许所有组成员创建文件:
sudo setfacl -m g:shared_group:rwx /shared_directory
现在,当用户在 /shared_directory 中创建文件时:
文件的所有者将是创建该文件的用户。文件的权限将是 rwx------ (700),意味着只有创建者可以读取、写入和执行。其他用户(包括同组的用户)将无法读取、写入或执行该文件。注意事项:
管理员(root)仍然可以访问所有文件。用户仍然可以看到目录中其他文件的名称,但无法查看内容。如果需要完全隐藏文件名,可能需要考虑其他解决方案,如加密文件系统。这种设置可以满足你的基本需求,使得同一目录下的不同文件只能被其创建者修改和查看。
网友回复