Copia le autorizzazioni del proprietario di un file per raggruppare le autorizzazioni


25

Come posso copiare le autorizzazioni utente / proprietario di un file nelle autorizzazioni di gruppo?

Ad esempio, se le autorizzazioni sono 755, voglio che diventino 775.

Chiarimento: 755 -> 775 123 -> 113 abc -> aac

Bonus se posso farlo in modo ricorsivo per tutti i file in una directory.

(Cioè, per ogni file le autorizzazioni del proprietario vengono copiate nelle autorizzazioni del gruppo. Ogni file può avere autorizzazioni diverse.)


Non sono sicuro di capire. Vuoi cambiare l'autorizzazione su directory / file affinché l'autorizzazione del gruppo sia come il proprietario? Se è così, allora gioca con chmod. Posso mostrarti un esempio più esplicito nella mia risposta, se vuoi.
Anarko_Bizounours,

Nella tua risposta cambia tutti i file in 775. Cosa succede se in origine uno dei file dispone dell'autorizzazione 123? Quindi deve essere modificato in 113 e non in 775. L'autorizzazione che ho usato nella domanda (755) è solo un esempio, l'autorizzazione effettiva può essere qualsiasi cosa. Voglio farlo programmaticamente.
Annan,

il numero dopo chmod è solo un'autorizzazione numerica. Se fai una ls -l e ottieni 452 come permesso, allora solo per chmod 442 / you_directory /. Tutto è spiegato (abbastanza bene) nella pagina di Wikipedia che ho collegato alla mia risposta.
Anarko_Bizounours,

questa sembra essere una domanda duplicata di serverfault.com/questions/241082/…
ShoeLace

Risposte:


54

puoi usare g=uper rendere i permanenti di gruppo uguali a quelli dell'utente

ls -l file
-rw------- 1 user users 0 Jun 27 13:47 file

chmod g=u file

ls -l file
-rw-rw---- 1 user users 0 Jun 27 13:47 file

e ricorsivamente

chmod -R g=u *

o per alcuni filespec

find /patch/to/change/perms -name '*.txt' -exec chmod g=u {} +

la manpage di chmod è tua amica.


buon modo per farlo! Ho dimenticato questo trucco ogni volta xD
Anarko_Bizounours il

Non ho mai sentito parlare di questo trucco! Uno utile.
skinp,

Quel g=utrucco mi ha appena salvato ore di noiosa gestione. C'è un +1 ;-)
Edurne Pascual il

avevo un sacco di file di proprietà del mio utente che volevo condividere con tutti gli utenti. così ho fattochmod -R ag=u ${path_to_directory}
Trevor Boyd Smith il

2

Come è stato detto, cambiare le autorizzazioni dei file può essere pericoloso. Da un grande potere derivano grandi responsabilità e tutto ciò che è shizas. Questa è la mia risposta:

file / usr / bin / otog:

#!/bin/sh

f=$1
p=`stat -c "%a" $f`
chmod ${p:0:1}${p:0:1}${p:2:1} $f

Esempio di utilizzo:

find . -exec otog {} \;

Utilizza stat per ottenere autorizzazioni numeriche, usa chmod per modificare le autorizzazioni.

PS: Vedi la risposta di Iain per un modo migliore di farlo!


1
Non dovrebbe essere $ {p: 0: 1} $ {p: 0: 1} $ {p: 2: 1}?
minaev,

Sì, hai ragione. Ha funzionato stranamente anche a modo mio.
Annan,

Qualcuno per favore spiega il downvote?
Annan,

Non io, ma vorrei compensare. Questa è una buona soluzione che funziona.
minaev,

1
Direi che è più sicuro usare comandi pericolosi negli script che manualmente. In script ben testati, questo è :). D'altra parte, chmodè ben lungi dall'essere un comando davvero molto pericoloso. Rispetto rm, intendo, rsync --deleteo di alcuni altri.
minaev,

1

Prima di tutto, devi elencare i tuoi diritti.

ls -l /your_directory/
-rwxr-xr-x  1   57 Jul  3 10:13  file1
-rwxr-xr-x  1   57 Jul  3 10:13  file2

per tradurre il risultato in autorizzazione numerica usare questo: R = 4, W = 2, X = 1.

Quindi su questo 2 file le autorizzazioni sono 755.

Dopo aver ottenuto il diritto, è necessario utilizzare il comando chmod per modificare il diritto nel modo desiderato:

chmod 775 /your_directory/

Questo comando cambierà solo il diritto sulla directory, ma non sul file all'interno.

Se vuoi cambiare anche il diritto dentro, allora esegui questo comando:

chmod 775 /your_directory/ -fR

-FR forzerà la ricorsività. (utilizzalo solo se sei sicuro del diritto che desideri applicare e del file all'interno della directory.)

Se vuoi solo cambiare il diritto su file1, allora:

chmod 775 /your_directory/file1

E che il modo in cui i biscotti si sbriciolano!

/! \ Attenzione, l'uso improprio di questo comando può distruggere tutte le autorizzazioni del sistema operativo e causare malfunzionamenti. /! \

ps: guarda per scoprire maggiori informazioni su chmod.

Spero che questo ti possa aiutare.


Ho aggiunto alcuni chiarimenti alla domanda. I file potrebbero non avere le stesse autorizzazioni del proprietario, quindi se si deve utilizzare chmod ci deve essere un modo per estrarre le autorizzazioni del proprietario prima di passarlo a chmod?
Annan,

è complicato, ma il comando ls -l deve darti il ​​permesso, ma sarà in questa forma -rw-rw-r--. Il problema è che NON DEVI usare uno script per lavorare con chmod! devi prima ottenere tutte le autorizzazioni dal file. Quindi chmod per avere il giusto diritto per il gruppo. Modificherò la mia risposta per mostrare un esempio.
Anarko_Bizounours,
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.