我有三个用户:
- 用户_1,
- user_2,和
- 超级用户。
有两个目录,
- /root/user_1 (chown -R user_1:user_1)
- /root/user_2 (chown -R user_2:user_2)
我希望我的 user_super 能够修改这些文件并能够将其恢复为原始文件。
user_1 和 user_2 无法读取/更改彼此的文件,并被监禁到他们的根文件夹。
我该怎么做?
PS:user_super 应该没有root 权限,user_super 会在服务器上运行apache,所以它应该尽可能接近www-data (Apache) 用户。
创建一个包含用户 user_super 的组超级组,然后
此设置的问题:在大多数实现中,chown 只能由超级用户执行。希望更改他们拥有的文件组的非特权(常规)用户可以使用 chgrp。所以你会想:完美,我会让 user_super 将组更改回组 user_1 或 user_2 但 chgrp 只允许 user_super 将所有权更改为他所属的一个组。
我猜user_super不是root?
您可以尝试使用 sudo。
在 sudoers 文件中创建条目以允许 user-super 获得 /root/user-1 和 /root/user-2 中的文件的所有权,并将所有权归还给 user-1 和 user-2。
然后,user-super 将运行第一个 sudo chown 命令,编辑文件,然后运行第二个 sudo chown 命令将其改回。不允许不受限制的 sudo chown,但要指定模式。
在设置邮件服务器时,我需要让 apache 创建虚拟邮箱进程拥有的邮箱。所以我所做的是创建一个小脚本来创建脚本,然后将所有权更改为虚拟邮箱进程。我将 apache 添加到 sudoers 文件中,允许它运行脚本。它运作良好,但为了充分披露,您需要小心构建脚本,因为安全错误可能会让人昏昏欲睡。
在目录上设置组粘性位(chmod g+s),以便新创建的文件继承组所有权和组权限。如果您正在处理 apache 托管和多个 ftp 用户,它将有所帮助。
我们通过使用 mod_itk 运行 apache 并将 vhosts 设置为使用 ftp 所有权权限运行,从而在 apache 与 ftp-users 中的服务器上规避了这个问题。