E 'possibile implementare un sistema di prenotazione "nome" usando i permessi del file linux

11

Ho un server multiutente Linux con 100+ utenti in / etc / passwd

Vorrei consentire agli utenti di "prenotare" / "prenotare" un nome a loro piacimento (in questo caso un sottodominio, ma i dettagli non contano)

Ho creato una directory chiamata /reservations e con chmod 777.

Se l'utente johndoe lo fa, touch /reservations/coolsite , lo indica vorrebbe "possedere" quel nome "coolsite"

Il "meccanismo" dovrebbe essere impostato in modo che,

  • johndoe può avere un ripensamento in seguito e rm /reservations/coolsite per annullare la prenotazione di quel nome

  • un altro utente non è autorizzato a touch /reservations/coolsite , perché johndoe lo ha richiesto per primo.

  • se johndoe rm il suo file, un altro utente è autorizzato a prenotarlo.

  • gli utenti non possono rm / rename / mv / etc altri file di persone

  • l'utente johndoe può avere più prenotazioni facendo touch /reservations/coolsite && touch /reservations/coolsite2

È possibile utilizzare un qualche tipo di meccanismo standard di permessi di linux?

Mi dispiacerebbe ricorrere a perl per questo, le mie abilità perl sono diventate arrugginite dal giorno in cui il rubino è arrivato con i suoi capelli biondi ondulati ...

    
posta american-ninja-warrior 29.12.2017 - 15:01
fonte

1 risposta

32

Quello che chiedi per la directory /reservations è esattamente come si comporta la directory standard /tmp :

Ogni utente può creare file e solo a lui è consentito cancellarli o modificarli. Ciò è ottenuto dal t bit (alias sticky bit ) nelle autorizzazioni. Nessun utente ha bisogno quindi di permessi speciali o umask.

In questo modo:

chown root /reservations
chmod 1777 /reservations

è tutto ciò di cui hai bisogno. Il chown root serve solo ad evitare che altri (regolari) utenti giochino con quella directory. Non è veramente necessario. Leggi di più su questo sticky bit qui:

risposta data PerlDuck 29.12.2017 - 15:23
fonte

Leggi altre domande sui tag