È possibile implementare un sistema di prenotazione “name” usando i permessi dei file linux


10

Ho un server multiutente linux con oltre 100 utenti in / etc / passwd

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

Ho creato una directory chiamata /reservationse con chmod 777.

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

Il "meccanismo" dovrebbe essere istituito in modo tale che,

  • johndoe può cambiare idea in seguito e rm /reservations/coolsiteannullare la prenotazione di quel nome

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

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

  • gli utenti non possono rm / rename / mv / etcfile di altre persone

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

Questo è possibile usando un qualche tipo di meccanismo di permessi linux standard?

Odierei 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 ...


Non vedo nulla qui fuori dall'ordinario. Hanno "coolsite" creato come "700" (nessuna autorizzazione per il gruppo e altri) e solo il proprio utente + admin può farci qualcosa. A tutti gli altri viene negata l'autorizzazione.
Rinzwind,

Quindi istruire manualmente gli utenti a ricordarsi di chmod 700 dopo touch?
guerriero americano-ninja il

1
joshsverns Penso che tu possa farcela? (con umask). Oh buono uno @perlduck
Rinzwind il

Perché non puoi programmarlo in ruby?
pipe

Risposte:


31

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

Ogni utente può creare file lì dentro e solo lui è autorizzato a cancellarli o modificarli. Ciò è ottenuto dal tbit (alias bit sticky ) nelle autorizzazioni. Nessun utente ha bisogno di autorizzazioni speciali o umask allora.

Così:

chown root /reservations
chmod 1777 /reservations

é tutto quello di cui hai bisogno. L' chown rootè solo per impedire ad altri utenti (regolari) da trafficando con quella directory. Non è davvero necessario. Leggi di più sulla parte adesiva qui:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.