我有一个 Linux 多用户服务器,/etc/passwd 中有 100 多个用户
我想允许用户“预订”/“预留”他们喜欢的名称(在本例中是子域名,但细节并不重要)
我已经创建了一个名为的目录/reservations
,并使用 chmod 777。
如果用户 johndoe 确实这样做了,touch /reservations/coolsite
则表明他希望“拥有”该名称“coolsite”
应建立“机制”,以便
johndoe 以后可以改变主意,
rm /reservations/coolsite
取消预订该名字不允许其他用户这样做
touch /reservations/coolsite
,因为 johndoe 首先提出了请求。如果 johndoe
rm
有他的文件,则允许其他用户预订它。用户无法将
rm / rename / mv / etc
其他人的文件用户 johndoe 可以通过以下方式进行多次预订
touch /reservations/coolsite && touch /reservations/coolsite2
使用某种标准的 Linux 权限机制可以实现这一点吗?
我不愿意为此求助于 perl,自从 ruby 带着她那一头波浪形金发出现那天起,我的 perl 技能就生疏了……
答案1
您对目录的请求/reservations
与标准目录的行为完全相同/tmp
:
每个用户都可以在其中创建文件,并且只有他才被允许删除或修改它们。这是通过位t
(又称粘着位) 中的权限。这样一来,用户就不需要特殊权限或 umask 了。
因此:
chown root /reservations
chmod 1777 /reservations
就是您所需要的。chown root
只是为了防止其他(普通)用户摆弄该目录。 它不是真的需要。在此处阅读有关粘性位的更多信息: