我有 4 个用户(第一 - 第四)和用户所属的两个组: pro:(第一和第二用户) lammer:(第三和第四用户)每个人的主目录为/home/pro/first
, /home/pro/second
, /home/lammer/third
, /home/lammer/fourth
。
我的问题来自于我并不真正理解练习要求我做什么(这将是粗略的翻译)。
用户可以对他们的文件做任何他们想做的事情。
同组用户可以在彼此的根目录中修改和写入(例如: in /home/pro/first
,但不能 in /home/pro/first/example
)?
用户/home/pro/first
只能删除自己创建的文件,不能删除别人创建的文件。 (可能也适用于其他人)
我的想法是对每个文件执行以下操作:
chown first:pro /home/pro/pirmas
chmod 720 /home/pro/pirmas
但这是否也阻止人们删除他人创建的文件以及在 中创建文件/home/pro/pirmas/example
?
答案1
你需要的是粘性位。从man chmod
:
限制删除标志或粘性位
限制删除标志或粘性位是单个位,其解释取决于文件类型。对于目录,它可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常在 /tmp 等全局可写目录中找到。对于某些旧系统上的常规文件,该位将程序的文本图像保存在交换设备上,以便运行时加载速度更快;这称为粘性位。
为了使目录具有首选权限,我会使用
chmod 1770 /home/pro/pirmas
除了写入之外,该组至少需要执行位,否则他们无法cd
访问该目录。我建议也提供读取位,否则他们无法看到那里的文件列表,即使他们可以创建、编辑和删除它们:)
有关权限的更多信息,请参阅例如这个优秀的答案 相关问题。