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


10

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

我想允许用户“预订” /“保留”他们喜欢的名称(在这种情况下为子域,但是细节无关紧要)

我创建了一个名为/reservationschmod 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,自从红宝石与她波浪形的金发相伴的一天以来,我的perl技能就变得生锈了……


我在这里看不到任何超出常规的东西。将“ coolsite”创建为“ 700”(对组和其他人没有权限),并且只有自己的用户+ admin可以对其进行操作。所有其他人都被拒绝。
林茨温德'17

因此,手动指示用户记住chmod 700之后touch吗?
american-ninja-warrior

1
joshsverns我认为您可以执行该命令?(带有umask)。哦,好人@perlduck
Rinzwind

你为什么不能用红宝石编程呢?
管道

Answers:


31

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

每个用户都可以在其中创建文件,只有他才能删除或修改它们。这是通过权限中的t位(又称粘性位)实现的。这样,没有用户需要特殊权限或umask。

从而:

chown root /reservations
chmod 1777 /reservations

是你所需要的全部。本chown root是只是为了防止其他(常规)用户摆弄周围与该目录中。这不是真的需要。在这里阅读更多关于粘性位的信息:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.