Можно ли реализовать систему бронирования «имя», используя разрешения файла 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Только для предотвращения других (обычные) пользователей возиться с этой директории. Это на самом деле не нужно. Узнайте больше о липком месте здесь:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.