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.