是否可以使用 linux 文件权限实现“名称”预订系统

是否可以使用 linux 文件权限实现“名称”预订系统

我有一个 Linux 多用户服务器,/etc/passwd 中有 100 多个用户

我想允许用户“预订”/“预留”他们喜欢的名称(在本例中是子域名,但细节并不重要)

我已经创建了一个名为的目录/reservations,并使用 chmod 777。

如果用户 johndoe 确实这样做了,touch /reservations/coolsite则表明他希望“拥有”该名称“coolsite”

应建立“机制”,以便

  • johndoe 以后可以改变主意,rm /reservations/coolsite取消预订该名字

  • 不允许其他用户这样做touch /reservations/coolsite,因为 johndoe 首先提出了请求。

  • 如果 johndoerm有他的文件,则允许其他用户预订它。

  • 用户无法将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只是为了防止其他(普通)用户摆弄该目录。 它不是真的需要。在此处阅读有关粘性位的更多信息:

相关内容