Utilizzo di setfacl per consentire ai membri del gruppo di scrivere su qualsiasi file in una directory


12

Vorrei usare setfacl in modo che chiunque nel gruppo "app" possa modificare qualsiasi file contenuto in / usr / local / users / app indipendentemente da ciò che dicono le tradizionali autorizzazioni UNIX. Ho due utenti john e ben. Ho provato a seguire le istruzioni da un'altra domanda , ma john non è in grado di scrivere su alcuni file. Sembra che questo sia a causa della maschera acl. Tuttavia, ho impostato la maschera di default nella directory di rwx, quindi i file al suo interno non dovrebbero ereditarla quando vengono creati?

Ad esempio, john non può scrivere nel file qui sotto, ma è un membro del gruppo "app" che ha scritto acls sul file, quindi sono sorpreso che non possa modificare il file.

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--

Risposte:


7

Noterai il commento "efficace" che getfacl ti sta lanciando. Il problema è che le autorizzazioni vengono calcolate in modo che "app" non ottenga il bit di scrittura impostato. Ciò accade perché la maschera nel file è impostata in sola lettura. La maschera viene utilizzata per limitare la quantità di autorizzazioni che potrebbero essere concesse su un determinato file o directory.

Un esempio del motivo per cui vorresti che questo comportamento fosse come se sapessi che il file potrebbe legittimamente necessitare di diversi utenti / gruppi per accedervi, ma per qualche ragione le cose si stavano complicando con le autorizzazioni e volevi un modo per dire "Qualunque sia l'altro le autorizzazioni predefinite sono impostate su, indipendentemente dall'appartenenza al gruppo o da qualsiasi setfacl ricorsivo che verrà eseguito in seguito, Sicuramente non darlo ! " L'utente proprietario ha uno status speciale nel mondo POSIX, ha diritti che altri utenti non hanno, come la possibilità di essere non root e modificare le autorizzazioni su un file e che i suoi diritti non sarebbero limitati dalla maschera (che sarebbe inutile comunque a causa del primo privilegio che il sistema concede loro). Questo è il motivo per cui ottengono ancora rwx anche se la maschera è limitata.

Per rispondere alla tua domanda specifica però : aggiungi il bit di scrittura alla maschera sul file e riprova come johnutente.

ecco una versione da riga di comando della spiegazione precedente, prendi nota di come cambiano i diritti "effettivi" quando tutto ciò che modifico è la maschera.


Grazie. Apprezzo molto la risposta. È possibile creare nuovi file con una maschera predefinita di rwx? Ho modificato la mia domanda con qualche dettaglio in più.
Ben McCann,

Sì, la maschera è una delle categorie (come utenti e gruppi) su cui è possibile impostare un ACL predefinito. La maschera predefinita dovrebbe ereditare nelle sottodirectory e applicarsi ai file. ESEMPIO: setfacl -md: m :: rwx / path / to / Dir
Bratchley

L'ACL predefinito eredita le sottodirectory, ma non i file, rendendo gli ACL completamente inutili :-(
Ben McCann

Solo per essere sicuri che stiamo parlando della stessa cosa, stai parlando dell'acl predefinito per la voce maschera? Questo è ciò che ottengo nei test.
Bratchley,

Ho anche ripetuto il test sopra per i nuovi file in / testBed dopo aver modificato la maschera effettiva nella directory padre e ho ottenuto lo stesso risultato (la voce della maschera predefinita viene applicata al file e non alla maschera effettiva del padre).
Bratchley,

0

È impossibile. cp, rsync, ecc. creano file ignorando gli ACL predefiniti

Perché cp non rispetta gli ACL?


errato L'utente stava riscontrando la stessa cosa maschera in cui si trovava in precedenza e ha ricevuto una risposta errata da qualcun altro. Non dipende da "cp" o da qualsiasi altra utility ignorare le voci ACL predefinite, ciò accade a livello di filesystem quando cp va a creare il file. Lo strumento ha la possibilità di inviare le chiamate di sistema per eseguire lo striping / aggiungere gli ACL necessari, ma dovrebbe fare uno sforzo per farlo.
Bratchley

Il diavolo è che puoi vedere la voce ACL di cui parlano, sono solo le autorizzazioni efficaci che si aspettano di vedere non ci sono. È stata l'occasione perfetta per dire "Ehi amico, controlla la tua maschera".
Bratchley

1
In realtà, lo riprendo sembra che EvilRyry abbia pubblicato sulla maschera e l'OP abbia appena risposto con "non ha funzionato", quindi ha pubblicato l'output getfacl che sembra mostrare che "felles" ha ottenuto rwx sul file. Di questo passo, la risposta più votata non corrisponde alla mia esperienza personale e a ciò che ho illustrato qui con esempi di comandi.
Bratchley
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.