只有项目组成员才能在/public/project1下创建,修改文件,项目下的所有文件只有root或者其所有者才能删除,所有项目组成员只能在自己的home目录下操作,不允许直接访问/public/project1,非项目组成员不能进入该目录,且没有任何访问权限。
时间: 2024-03-23 13:37:26 浏览: 63
为了满足这些要求,可以按照以下步骤进行设置:
1. 创建一个名为 project1 的组,并将项目组成员加入该组:
```
groupadd project1
usermod -aG project1 user1
usermod -aG project1 user2
...
```
2. 创建 /public/project1 目录,并设置其权限和所有权:
```
mkdir /public/project1
chown root:project1 /public/project1
chmod 2770 /public/project1
```
这里的权限设置包括:
- 所有者为 root,组为 project1;
- 所有项目组成员都属于 project1 组;
- 目录的权限为 2770,其中 2 表示启用组ID位,7 表示所有者具有读、写和执行权限,而组成员具有读、写和执行权限,并且新创建的文件和目录的组ID将被设置为目录的组ID。
3. 将 /public/project1 目录添加到 project1 组的访问列表中:
```
setfacl -m g:project1:rwx /public/project1
```
这里使用了 ACL(访问控制列表)来设置访问权限。该命令表示将 project1 组的权限设置为读、写和执行,这样项目组成员就可以在该目录下创建、修改和删除文件。
4. 限制项目组成员只能在自己的 home 目录下操作。这可以通过修改 shell 的配置文件来实现。例如,可以在 /etc/profile 文件中添加以下语句:
```
if [ $(id -g) = $(getent group project1 | cut -d: -f3) ]; then
cd
fi
```
这里的逻辑是:如果当前用户所属的组ID等于 project1 组的ID,则进入用户的 home 目录。这样,项目组成员就不能直接访问 /public/project1 目录,只能通过符号链接或者其他方式来访问。
5. 禁止非项目组成员访问 /public/project1 目录。这可以通过设置目录的权限来实现:
```
chmod o-rwx /public/project1
```
这里的权限设置表示禁止其他用户(即非所有者和非组成员)访问该目录。如果需要进一步限制访问权限,可以考虑使用 SELinux 或者其他安全机制。
阅读全文