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

11

Ich habe einen Linux-Multi-User-Server mit mehr als 100 Benutzern in / etc / passwd

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

Ich habe ein Verzeichnis namens /reservations und mit chmod 777 erstellt.

Wenn Benutzer johndoe das tut, touch /reservations/coolsite , zeigt er dies an er möchte diesen Namen "coolen"

"besitzen"

Der "Mechanismus" sollte so eingerichtet sein, dass

  • johndoe kann sich später ändern, und rm /reservations/coolsite , um diesen Namen zu entfernen

  • ein anderer Benutzer darf touch /reservations/coolsite nicht haben, weil johndoe zuerst danach gefragt hat.

  • Wenn johndoe rm seine Datei ist, kann ein anderer Benutzer sie buchen.

  • Benutzer können nicht rm / rename / mv / etc andere Benutzerdateien

  • Benutzer johndoe kann mehrere Buchungen haben, indem Sie touch /reservations/coolsite && touch /reservations/coolsite2

  • ausführen

Ist dies möglich, indem Sie einen Standard-Linux-Berechtigungsmechanismus verwenden?

Ich würde es hassen, dafür auf Perl zurückgreifen zu müssen, meine Perl-Fähigkeiten sind rostig geworden, seit dem Tag, an dem Rubin mit ihren welligen blonden Haaren kam ...

    
american-ninja-warrior 29.12.2017, 15:01
quelle

1 Antwort

32

Was Sie für das Verzeichnis /reservations fragen, ist genau, wie sich das Standardverzeichnis /tmp verhält:

Jeder Benutzer kann dort Dateien erstellen und nur er darf sie löschen oder ändern. Dies wird durch das t -Bit (aka Sticky-Bit ) in den Berechtigungen erreicht. Kein Benutzer benötigt dann spezielle Berechtigungen oder Umasks.

Also:

chown root /reservations
chmod 1777 /reservations

ist alles was du brauchst. Die chown root soll nur verhindern, dass andere (normale) Benutzer mit diesem Verzeichnis herumspielen. Es ist nicht wirklich benötigt. Lesen Sie mehr über das klebrige Bit hier:

PerlDuck 29.12.2017 15:23
quelle