File che eredita l'autorizzazione della directory in cui viene copiato?


9

Ho creato dei file nella mia directory home con il solo permesso di lettura dell'utente ( r-- --- ---). Voglio copiare questo file in un'altra directory /etc/test/che ha il permesso di cartella di 744 ( rwx r-- r--). Devo consentire il file che sto copiando per ereditare l'autorizzazione della cartella in cui è copiato perché finora quando lo copio, i permessi dei file sono sempre gli stessi ( r-- --- ---). Ho provato il comando setfacl, ma non ha funzionato? Per favore aiuto.

PS. Non posso solo chmod -r /etc/test/perché ci sono molti file che verranno copiati in questa cartella nel tempo e non voglio eseguire il comando chmod ogni volta che un file viene copiato.


Quale setfaclcomando hai provato? Qual è stato il suo output?
— Mikel,

setfacl -Rm d: u :: rwx, d: g :: r, d: o :: r / etc / test. Non è stato emesso alcun output, ha semplicemente accettato il comando.
— LUUUUUUUUUUUUU

Come stai copiando il file? Cosa succede se si utilizza /bin/cpsenza opzioni?
— Mikel,

Il comando che uso è sudo cp / home / file / etc / test / file. Ho provato a usare anche / bin / cp ora senza risultati diversi
— LUUUUUUUUUUUUU

Risposte:


14

Le autorizzazioni in genere non vengono propagate dalla directory in cui vengono copiati i file, ma le nuove autorizzazioni sono controllate dall'utente umask. Tuttavia, quando si copia un file da un percorso a un altro, è un po 'un caso speciale in cui l'utente umaskviene sostanzialmente ignorato e le autorizzazioni esistenti sul file vengono conservate. Comprendere questo concetto è la chiave per ottenere ciò che vuoi.

Quindi per copiare un file ma "rilasciare" le sue autorizzazioni correnti puoi dire cpdi "non conservare" usando l' --no-preserve=allopzione.

Esempio

Di 'che ho il seguente file come te.

$ mkdir -m 744 somedir

$ touch afile
$ chmod 400 afile 

$ ll
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

E come hai confermato se lo copiamo semplicemente alla cieca usando cp, otteniamo questo:

$ cp afile somedir/
$ ls -l somedir/
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

Ora ripetiamolo, ma questa volta diciamo cpdi "rilasciare le autorizzazioni":

$ rm -f somedir/afile 

$ cp --no-preserve=all afile somedir/

$ ls -l somedir/
total 0
-rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile

Quindi il file copiato ora ha i permessi impostati su 664, dove li ha ottenuti?

$ umask
0002

Se ho cambiato il mio umaskin qualcos'altro, possiamo ripetere questo test una terza volta e vedere gli effetti che umaskha sul non conservato cp:

$ umask 037
$ rm somedir/afile 

$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-r-----. 1 saml saml 0 Feb 14 15:29 afile

Notare che le autorizzazioni non sono più 664, ma sono 640? Ciò è stato dettato dal umask. Stava dicendo a tutti i comandi che creano un file di disabilitare i 5 bit inferiori nelle autorizzazioni ... questi ragazzi: ( ----wxrwx).


La --no-preservebandiera non è standard, presumibilmente un GNUismo.
— vonbrand,

Esatto, grazie volevo dire che in A.
— slm

nello spirito di San Valentino ti do un bacio virtuale, funziona! GRAZIE!
— LUUUUUUUUUUUUU
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.