Можно ли реализовать систему бронирования «имя», используя разрешения файла linux

10

У меня есть многопользовательский сервер Linux с более чем 100 пользователями в / etc / passwd

Я хотел бы разрешить пользователям «бронировать» / «резервировать» имя по своему вкусу (в данном случае поддомен, но эти детали не имеют значения)

Я создал каталог с именем /reservationsи с chmod 777.

Если пользователь johndoe делает, touch /reservations/coolsiteон указывает, что хотел бы «владеть» этим именем «coolsite»

«Механизм» должен быть настроен так, чтобы

  • Джондо может изменить свое мнение позже, и 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» (нет прав для группы и других), и только собственный пользователь + администратор может что-то с этим сделать. Все остальные получают разрешение отказано.
Rinzwind
Так что вручную поручить пользователям помнить chmod 700 после touch?
американский ниндзя-воин
1
Joshsverns Я думаю, что вы можете обеспечить это? (с umask). О, хороший @perlduck
Rinzwind
Почему вы не можете запрограммировать его в ruby?
труба

Ответы:

31

То, что вы запрашиваете каталог, /reservations- это то, как /tmpведет себя стандартный каталог:

Каждый пользователь может создавать файлы там, и только он может удалять или изменять их. Это достигается с помощью tбита (он же залипает ) в разрешениях. Ни один пользователь не нуждается в специальных разрешениях или масках.

Таким образом:

chown root /reservations
chmod 1777 /reservations

это все, что тебе нужно. chown rootТолько для предотвращения других (обычные) пользователей возиться с этой директории. Это на самом деле не нужно. Узнайте больше о липком месте здесь:

PerlDuck
источник