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

ame*_*ior 10 permissions directory chmod perl multi-user

我有一个 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 技能就变得生疏了......

Per*_*uck 31

您对目录的要求/reservations正是标准/tmp目录的行为方式:

每个用户都可以在那里创建文件,只有他可以删除或修改它们。这是通过权限中的t位(又名粘性位)来实现的。那时没有用户需要特殊权限或 umasks。

因此:

chown root /reservations
chmod 1777 /reservations
Run Code Online (Sandbox Code Playgroud)

是你所需要的全部。这chown root只是为了防止其他(常规)用户摆弄该目录。并不是真的需要。在此处阅读有关粘滞位的更多信息: