是否可以设置目录权限,使组能够读写文件和子目录,但不能删除任何内容?

推荐答案

在目录上设置粘性位可能就足够了.用户可以删除自己拥有的任何文件,但不能删除其他用户的文件.对于您的用例来说,这可能已经足够了.在大多数系统上,/tmp是这样设置的(/tmp设置为1777)

chmod 1775/受控

然而,如果您想要更多的控制,就必须在有问题的文件系统上启用ACL.

在/etc/fstab中,将acl附加到标志:

/dev/root        /                       ext3    defaults,acl       1 1

然后可以使用setfacl/getfacl来控制和查看acl级别的权限.

示例:(创建文件,一旦写入,它们是只读的,但可以由所有者删除,但不能由其他人删除.)

setfacl --set u::rwxs,g::rwx /controlled
setfacl -d --set u::r-x,g::r-x,o::- /controlled

您可以在一个目录上设置默认acl列表,该目录将由在该目录中创建的所有文件使用.

正如其他人所指出的,要小心地明确说明你想要什么.你说"写"——但用户能覆盖他们自己的文件吗?他们可以更改现有内容,还是只是附加内容?一旦写好,它就是只读的?也许你可以在 comments 中详细说明.

最后,selinux和grsecurity提供了更多的控制,但这是另一种蠕虫.它的设置可能非常复杂.

Linux相关问答推荐

在shell 中使用排除模式的grep

为什么硬编码的阿拉伯字母与Unicode代码点不具有相同的值

列出Linux上特定目录和子目录名称的bash命令

erlang 格式的 utf8 变为 \x(反斜杠 x)ascii 编码

用于替换 struct 文档中文本的 Bash 脚本

用户级线程如何与内核级线程对话

try 使用 patchelf 修补 MuJoCo 二进制文件时出现执行格式错误

如何在 AWS Linux 服务器上实现虚拟主机?

如何重新安装最新的 cmake 版本?

如何更改目录中所有文件中所有出现的单词

Linux 上 pid_t、uid_t、gid_t 的大小

使用 Scp 时防止覆盖文件

Colored shell 脚本输出库

在 Python 中删除 Root 权限

Windows 开发环境值得付出代价吗?

卸载从源代码构建的python?

如何将初始输入通过管道传输到随后将是交互式的进程中?

svn over HTTP 代理

当我已经 ssh 进入远程机器时,如何 scp 回到本地?

如何计算一个单词在目录的所有文件中出现的次数?