Ist es möglich, ein "Name" -Buchungssystem mit Linux-Dateiberechtigungen zu implementieren?

10

Ich habe einen Linux-Mehrbenutzerserver mit mehr als 100 Benutzern in / etc / passwd

Ich möchte Benutzern erlauben, einen Namen ihrer Wahl zu "buchen" / "zu reservieren" (in diesem Fall eine Subdomain, aber diese Details spielen keine Rolle).

Ich habe ein Verzeichnis namens /reservationsund mit chmod 777 erstellt.

Wenn Benutzer Johndoe dies tut, touch /reservations/coolsitegibt er an, dass er diesen Namen "coolsite" "besitzen" möchte.

Der "Mechanismus" sollte so eingerichtet sein, dass

  • Johndoe kann später seine Meinung ändern und rm /reservations/coolsitediesen Namen entfernen

  • Ein anderer Benutzer darf das nicht touch /reservations/coolsite, weil Johndoe zuerst danach gefragt hat.

  • Wenn Johndoe rmseine Datei, kann ein anderer Benutzer sie buchen.

  • Benutzer können keine rm / rename / mv / etcanderen Volksdateien

  • Benutzer Johndoe kann mehrere Buchungen haben, indem er tut touch /reservations/coolsite && touch /reservations/coolsite2

Ist dies mit einem Standard-Linux-Berechtigungsmechanismus möglich?

Ich würde es hassen, dafür auf Perl zurückzugreifen, meine Perl-Fähigkeiten sind rostig geworden, seit der Tag, an dem Rubin mit ihren welligen blonden Haaren einherging ...

American-Ninja-Krieger
quelle
Ich sehe hier nichts, was außerhalb der Ordinairy liegt. Lassen Sie "coolsite" als "700" erstellen (keine Berechtigungen für Gruppen und andere) und nur der eigene Benutzer + Administrator kann etwas dagegen tun. Allen anderen wird eine Erlaubnis verweigert.
Rinzwind
Also Benutzer manuell anweisen, sich danach an chmod 700 zu erinnern touch?
American-Ninja-Krieger
1
Joshsverns Ich denke, Sie können das durchsetzen? (mit umask). Oh gut @perlduck
Rinzwind
Warum konnten Sie es nicht in Ruby programmieren?
Pipe

Antworten:

31

Was Sie nach dem Verzeichnis fragen, /reservationsist genau das Verhalten des Standardverzeichnisses /tmp:

Jeder Benutzer kann dort Dateien erstellen und nur er darf sie löschen oder ändern. Dies wird durch das tBit (auch bekannt als Sticky Bit ) in den Berechtigungen erreicht. Kein Benutzer benötigt dann spezielle Berechtigungen oder Aufgaben.

Somit:

chown root /reservations
chmod 1777 /reservations

ist alles, was du brauchst. Dies chown rootsoll nur verhindern, dass andere (normale) Benutzer mit diesem Verzeichnis herumspielen. Es wird nicht wirklich benötigt. Lesen Sie hier mehr über das klebrige Stück:

PerlDuck
quelle