Est-il possible d'implémenter un système de réservation par «nom» en utilisant les permissions des fichiers Linux

10

J'ai un serveur multi-utilisateurs Linux avec plus de 100 utilisateurs dans / etc / passwd

Je voudrais permettre aux utilisateurs de "réserver" / "réserver" un nom de leur choix (dans ce cas un sous-domaine, mais ces détails n'ont pas d'importance)

J'ai créé un répertoire appelé /reservationset avec chmod 777.

Si l'utilisateur johndoe le fait, touch /reservations/coolsiteil indique qu'il aimerait "posséder" ce nom "coolsite"

Le "mécanisme" devrait être mis en place de telle sorte que,

  • johndoe peut changer d'avis plus tard et annuler la rm /reservations/coolsiteréservation de ce nom

  • un autre utilisateur n'est pas autorisé à le faire touch /reservations/coolsite, car johndoe l'a demandé en premier.

  • si johndoe rmson fichier, un autre utilisateur est autorisé à le réserver.

  • les utilisateurs ne peuvent pas d' rm / rename / mv / etcautres fichiers

  • l'utilisateur johndoe peut avoir plusieurs réservations en faisant touch /reservations/coolsite && touch /reservations/coolsite2

Est-ce possible en utilisant une sorte de mécanisme d'autorisations Linux standard?

Je détesterais avoir recours à Perl pour cela, mes compétences en Perl sont devenues rouillées depuis le jour où Ruby est arrivée avec ses cheveux blonds ondulés ...

guerrier-ninja-américain
la source
Je ne vois rien ici qui soit hors de l'ordinaire. Avoir "coolsite" créé en "700" (pas d'autorisations pour le groupe et les autres) et seul le propre utilisateur + administrateur peut y faire quelque chose. Tous les autres obtiennent une autorisation refusée.
Rinzwind
Donc, demandez manuellement aux utilisateurs de se rappeler de chmod 700 après touch?
american-ninja-warrior
1
joshsverns Je pense que vous pouvez appliquer cela? (avec umask). Oh good one @perlduck
Rinzwind
Pourquoi ne pourriez-vous pas le programmer en rubis?
pipe

Réponses:

31

Ce que vous demandez pour le répertoire /reservationsest exactement comment /tmpse comporte le répertoire standard :

Chaque utilisateur peut y créer des fichiers et lui seul est autorisé à les supprimer ou à les modifier. Ceci est réalisé par le tbit (aka sticky bit ) dans les autorisations. Aucun utilisateur n'a alors besoin d'autorisations ou de masques spéciaux.

Donc:

chown root /reservations
chmod 1777 /reservations

est tout ce dont vous avez besoin. C'est chown rootuniquement pour empêcher d'autres utilisateurs (réguliers) de jouer avec ce répertoire. Ce n'est pas vraiment nécessaire. En savoir plus sur le bit collant ici:

PerlDuck
la source