Czy można wdrożyć system rezerwacji „nazwa” przy użyciu uprawnień do plików linux

10

Mam serwer wielu użytkowników systemu Linux z ponad 100 użytkownikami w / etc / passwd

Chciałbym pozwolić użytkownikom na „rezerwację” / „zarezerwowanie” nazwy swoich upodobań (w tym przypadku subdomeny, ale te szczegóły nie mają znaczenia)

Utworzyłem katalog o nazwie /reservationsi przy pomocy chmod 777.

Jeśli użytkownik johndoe to zrobi, touch /reservations/coolsiteoznacza, że ​​chciałby „posiadać” tę nazwę „coolsite”

„Mechanizm” należy skonfigurować tak, aby:

  • johndoe może później zmienić zdanie i rm /reservations/coolsitecofnąć rezerwację tego imienia

  • inny użytkownik nie może tego zrobić touch /reservations/coolsite, ponieważ johndoe najpierw o to poprosił.

  • jeśli johndoe rmjego plik, inny użytkownik może go zarezerwować.

  • użytkownicy nie mogą rm / rename / mv / etcplików innych osób

  • Użytkownik johndoe może mieć wiele rezerwacji touch /reservations/coolsite && touch /reservations/coolsite2

Czy jest to możliwe przy użyciu jakiegoś standardowego mechanizmu uprawnień do Linuksa?

Nie chciałbym uciekać się do perla, moje umiejętności perla stały się zardzewiałe od dnia, w którym rubin przyszedł z jej falującymi blond włosami ...

amerykański wojownik ninja
źródło
Nie widzę tu nic, co byłoby poza porządkiem. Mają „coolsite” utworzony jako „700” (bez uprawnień dla grupy i innych) i tylko własny użytkownik + administrator może coś z tym zrobić. Wszystkim pozostałym odmówiono pozwolenia.
Rinzwind
Więc ręcznie poinstruuj użytkowników, aby pamiętali o chmod 700 po touch?
wojownik-ninja amerykański,
1
joshsverns Myślę, że możesz to egzekwować? (z umask). Oh good one @perlduck
Rinzwind
Dlaczego nie mogłeś zaprogramować go w rubinie?
rura

Odpowiedzi:

31

Pytasz o katalog /reservationsdokładnie tak, jak /tmpzachowuje się katalog standardowy :

Każdy użytkownik może tworzyć tam pliki i tylko on może je usuwać lub modyfikować. Osiąga się to poprzez tbit (inaczej lepki bit ) w uprawnieniach. Wówczas żaden użytkownik nie potrzebuje specjalnych uprawnień ani umasków.

A zatem:

chown root /reservations
chmod 1777 /reservations

to wszystko czego potrzebujesz. Ma chown rootto jedynie na celu uniemożliwienie innym (zwykłym) użytkownikom majstrowania przy tym katalogu. To nie jest naprawdę potrzebne. Przeczytaj więcej o lepkim kawałku tutaj:

PerlDuck
źródło