Gli utenti di questo sistema sono attenti e hanno i loro umask impostati sul molto privato 0077. Tuttavia, gli utenti vorrebbero avere directory specifiche del gruppo, dove i file possono essere copiati in modo da condividerli esplicitamente solo tra gli altri membri del gruppo. Potrebbero essere presenti più directory di condivisione di questo tipo, sebbene ciascuna sia specifica di un gruppo.
Limpostazione del bit sticky di gruppo su una data directory da utilizzare per la condivisione non è sufficiente. Sebbene limpostazione dello sticky bit faccia sì che la proprietà del gruppo sia corretta sui file posizionati nella directory, i permessi su tali file sono spesso impostati in modo tale che i file non possano essere letti o modificati, ovvero non possano essere effettivamente condivisi. Appaiono solo nellelenco delle directory. Questo perché alcuni utenti non pensano o non sanno come fare manualmente la regolazione dei permessi di gruppo richiesta per consentire la lettura e la scrittura. Possiamo dare loro una pausa su questo perché gli utenti non sono amministratori, dopotutto. acls può essere utilizzato per specificare che un particolare gruppo ha accesso ai file nella directory di condivisione, indipendentemente da quali sarebbero stati i permessi del gruppo senza acls. Questa è la soluzione perfetta, ma non funziona del tutto.
Di seguito, il gruppo condiviso è “customer_gateway” e lutente di esempio che cerca di condividere un file è “svw”. Come si può vedere nella trascrizione, lutente svw è un membro del gruppo customer_gateway. La directory in cui deve avvenire la condivisione è anche chiamata “customer_gateway /”
Quanto segue usa acls. Ho impostato i permessi di gruppo, i permessi di gruppo predefiniti, la maschera e la maschera predefinita. Funziona bene per i file creati nella directory o per i file spostati lì tramite cat (o tar), ma stranamente, non per i file che “cp” sono presenti:
# rm -r customer_gateway/ # umask 0077 # cat ~/script1 mkdir customer_gateway chown :customer_gateway customer_gateway/ chmod g+rwx customer_gateway/ setfacl -m group:customer_gateway:rwX customer_gateway/ setfacl -m d:group:customer_gateway:rwX customer_gateway/ setfacl -m m::rwX customer_gateway/ setfacl -m d:m::rwX customer_gateway/ getfacl customer_gateway cd customer_gateway touch cga cat << EOF > cgb c g b EOF ls -l # . ~/script1 # file: customer_gateway # owner: root # group: customer_gateway user::rwx group::rwx group:customer_gateway:rwx mask::rwx other::--- default:user::rwx default:group::rwx default:group:customer_gateway:rwx default:mask::rwx default:other::--- total 4 -rw-rw----+ 1 root root 0 Mar 2 20:43 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb # su - svw /home/svw/bin:/usr/local/bin:/usr/bin:/bin (note umask is 0077) > cd /share/customer_gateway/ > groups svw adm dip video plugdev google-sudoers customer_gateway > cat >> cga e f g > cat > cgc c g c > ls -l total 12 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc > ls ~/dat ta tb tc > cat ~/dat/ta > ta > cp ~/dat/tb tb > ls -l total 20 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc -rw-rw----+ 1 svw svw 4 Mar 2 20:45 ta -rw-------+ 1 svw svw 4 Mar 2 20:45 tb > getfacl ta # file: ta # owner: svw # group: svw user::rw- group::rwx #effective:rw- group:customer_gateway:rwx #effective:rw- mask::rw- other::--- > getfacl tb # file: tb # owner: svw # group: svw user::rw- group::rwx #effective:--- group:customer_gateway:rwx #effective:--- mask::--- other::--- >
Ciò che mostra è che quando un file viene creato nella directory, riceve i permessi predefiniti ed è condivisibile. Ma gli utenti non creano sempre i loro file lì, comunemente li copiano lì.
Ma fare una copia è la stessa cosa, perché per fare una copia dobbiamo prima creare un nuovo file. Stiamo parlando di una copia semplice qui, non una copia dei permessi di conservazione. È lo stesso del modulo seguente, che, btw funziona e copia un file che sarà condivisibile nella directory indipendentemente dai suoi permessi di gruppo originali:
cat < data.in > shared/data.out
funziona bene, funziona anche il piping attraverso tar, ma il modulo
cp data.in shared/data.out
fallisce. Il cat
ed il file ottiene la maschera e i permessi predefiniti. Il file cp
ed conserva i suoi permessi nella maschera acl e i permessi del gruppo, come se fosse un cp -p (ma non era “t), e quindi i permessi effettivi si leggono come il file originale, non come sono stati impostati gli ACL.
Come secondo tentativo ho eseguito questo esperimento con il gruppo sticky bit, chmod g + rwxs, insieme al facl ch anges e ha ottenuto gli stessi risultati. Sebbene gli elenchi di directory siano più belli a causa della proprietà del gruppo mostrata per tutti i file condivisi. Lho anche eseguito impostando solo il bit appiccicoso del gruppo, senza setfacl. Ha anche avuto lo stesso risultato per i file copiati (quindi i facl sembrano abbastanza inutili per una directory in cui i file vengono copiati per essere condivisi).
Su quali basi e con quale giustificazione i facl di Linux distinguono tra diverse forme di creazione di dati? Perché forzare cp a preservare i permessi quando non gli è stato detto di farlo? Quale ragione giustificherebbe la confusione causata da questa distinzione tra cat e piping attraverso il funzionamento di tar ma cp non funzionante? Mi manca un incantesimo magico che farebbe questa distinzione evaporare?
Questo riepilogo è corretto: facls ti consentirà di superare la proprietà per condividere file, renderà i permessi più permissivi dellumask durante la “creazione” dei file, a meno che la creazione non sia dovuta al comando cp e per una buona ragione perché … perché perché?
Commenti
Risposta
Questo fatto di creare una directory in cui in cui gli utenti possono accedere è abbastanza semplice e può essere fatto facilmente.
-
Per prima cosa dovrai trovare un posto appropriato per creare questa directory, ti consiglio di farlo in una directory accessibile a tutti (per il momento). Utilizza il comando sudo mkdir per creare la tua nuova directory.
-
Secondo è necessario creare un gruppo, un gruppo è semplicemente un insieme di utenti che vengono arrotondati per limitare o accedere a determinate parti di un sistema Linux. Potresti aver visto gruppi durante la digitazione del comando ls -l che elenca qualcosa di simile:
rwxrwxrwx 3 amministratori root 4736 24 ottobre 12:32 File1.doc
La parte che dice root è il proprietario e ** admins ** è il gruppo che possiede il file. I gruppi garantiscono un modo semplice per consentire a determinate persone di visualizzare i file. Per fare in modo che un gruppo digiti “sudo groupadd, questo sarà il gruppo utilizzato per la directory.
- Una volta che i gruppi sono stati creati, puoi aggiungere gli utenti a cui vuoi accedere alla directory, utilizzando il seguente comando sudo adduser Ciò ti consentirà di aggiungere utenti che puoi verificare se lutente è nel gruppo con il gruppo comando.
Una volta fatto, vai alla directory che hai creato e imposta i permessi del gruppo su 7 (rwx) ricorda che puoi adattarli alle tue preferenze ma 7 dà agli utenti del gruppo i permessi completi alla directory, puoi farlo digitando “sudo chmod 770”
Successivamente devi cambiare la proprietà del gruppo della directory, quindi il proprietario del gruppo della directory è il gruppo che hai creato, fallo con con il seguente comando “sudo chown -R: nomegruppo.
Una volta fatto tutto questo, puoi ora aggiungere chiunque desideri al gruppo e loro avranno accesso per copiare e condividere file fintanto che Sono in quel gruppo specifico per accedere alla directory. Per favore fatemi sapere se lo avete trovato utile !!!!!!
Commenti
- Grazie, ho chiarito il post originale per spiegare perché non lho fatto ‘ t utilizzare questo approccio manuale.
Risposta
I rimuoverà tutti gli acl e utilizzerà solo i permessi di utente e gruppo. Quindi chmod 777
la cartella a cui vuoi che tutti abbiano accesso. Quindi prova il tuo accesso.
Quindi chmod 770
la cartella prova di nuovo laccesso.
Quando funziona come dovrebbe, aggiungi di nuovo gli acl uno alla volta.
Se non hanno bisogno di eseguire perm, puoi ridurlo ancora più in basso a rw *, rx *, *** con chmod 660 nomecartella
Ricorda per il periodo in cui non hai permessi acl “se chmod 777 il tuo la cartella sarà completamente aperta a tutti, quindi non lasciarla così.
Commenti
- Non tutti, solo persone in un particolare gruppo. Potrei impostare il gruppo sticky bit sulla directory. Il problema è che gli utenti inseriscono i file nella directory e il gruppo è corretto ma non ‘ sa o dimentica di impostare laccesso al gruppo. acls può essere utilizzato per specificare che un particolare gruppo ha accesso ai file indipendentemente dalle loro autorizzazioni di gruppo. Questa è la risposta perfetta. Il problema è che acls ha una maschera e cp sta cancellando la maschera acl per abbinare la umask dellutente, quindi i permessi effettivi non consentono la lettura dei file.
Risposta
Lho provato. Sembra che lumask stia oscurando i permessi del gruppo, poiché i permessi del gruppo sono la maschera dellACL. Sta bloccando tutti i gruppi e gli ACL.
Una soluzione è rendere meno restrittiva la umask.Per farlo in sicurezza è necessario aggiungere un gruppo per ogni utente e rendere questo gruppo il gruppo predefinito. (vedi Perché ogni utente ha il proprio gruppo? ).
Questo non è lideale, in quanto esistono ancora umask differenti (g = rx e g = rwx). Questa strategia elimina solo la necessità di nessuna autorizzazione di gruppo.
Commenti
- Sì, è quello che avevo fatto, ho impostato invece le maschere utente su 007 di 077 come soluzione alternativa. Tuttavia, non è ´ perfetto, poiché molti file hanno ancora permessi minori e vengono copiati. La cosa che speravo di imparare qui era perché cp si comporta in questo modo. Mi sembra che questo dovrebbe essere il comportamento cp -p. Avevo sperato che qualcuno qui potesse spiegarlo.
Risposta
Tutte le risposte finora hanno dato consigli su come per gestire la condivisione di file tramite directory di gruppo. Non ha risposto alla tua domanda principale, credo, che era: Perché cp a b
si comporta come se cp -p a b
fosse specificato? La pagina man non ne parla, anzi, ma texinfo ha i dettagli. info coreutils "cp invocation"
mostra:
‘-p’ ‘--preserve[=ATTRIBUTE_LIST]’ Preserve the specified attributes of the original files. ... ... In the absence of this option, the permissions of existing destination files are unchanged. Each new file is created with the <=== mode of the corresponding source file minus the set-user-ID, <=== set-group-ID, and sticky bits as the create mode; the operating system then applies either the umask or a default ACL, possibly resulting in a more restrictive file mode. ...
Quindi, se la destinazione esiste, il contenuto viene sostituito, ma i bit di modalità sono non cambiato. Se la destinazione non esiste, i bit di modalità vengono copiati dallorigine.
cat
, magari tramite uno shellscript dedicato per questo scopo?