Pagina 1 di 2

modifica ricorsiva dei permessi...[RISOLTO]

Inviato: mercoledì 5 luglio 2006, 16:45
da leo80s
salve, come da subject vorrei sapere come si fa, quando si cambiano i permessi di una cartella, a cambiare anche i permessi dei file e delle cartelle in essa contenute (cambiarlo cioè in maniera ricorsiva...)

grazie
Leo

Re: modifica ricorsiva dei permessi...

Inviato: mercoledì 5 luglio 2006, 16:47
da More+
leo80s ha scritto: salve, come da subject vorrei sapere come si fa, quando si cambiano i permessi di una cartella, a cambiare anche i permessi dei file e delle cartelle in essa contenute (cambiarlo cioè in maniera ricorsiva...)

grazie
Leo
con l'opzione -R, vedi il man
Ciao

Re: modifica ricorsiva dei permessi...

Inviato: mercoledì 5 luglio 2006, 21:57
da granma
sudo chmod -R permessi  cartella

esempio  sudo chmod -R  777( permesso di  lettura scrittura ed esecuzione a tutti)  /percorso cartella

Re: modifica ricorsiva dei permessi...

Inviato: giovedì 6 luglio 2006, 0:59
da leo80s
grazie a a tutti!

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: sabato 16 giugno 2007, 19:41
da Sischio
perchè a me succede questo?
sischio@sischio-laptop:~$ sudo chmod -r 777 /home/sischio/.wine/
sudo: can't open /etc/sudoers: Permission denied
sischio@sischio-laptop:~$
???

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: sabato 16 giugno 2007, 21:00
da menelicte
devi mettere la -R maiuscola  :D

Re: modifica ricorsiva dei permessi...[RIAPERTO]

Inviato: mercoledì 16 aprile 2008, 15:41
da leonard vertighel
Ciao a tutti.

Volevo chiedere un'informazione alla comunità su questo argomento.

Copiando dei file su un disco rigido formattato in FAT32, vanno perse le informazioni sui permessi. Una volta che ricopio i file sul mio computer, i permessi sono tutti sballati, in particolare sono tutti eseguibili.

Se però chiedo di farmi chmod -R 644 *, linux cambia in 644 anche le sottocartelle, dopodiché, non essendo più eseguibili, mi dice che non ci può entrare per continuare il lavoro ricorsivo.

Come si fa a dire una cosa del tipo "Mettimi 644 a tutti i file ma 755 a tutte le cartelle"?

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: giovedì 17 aprile 2008, 15:01
da Lord_Dex
Crea un file e chiamalo script.sh (ad esempio)

Codice: Seleziona tutto

while i in "*"; do
     if [[ -d $i ]]; then
           chmod 755 $i
           $0 $i/
     else 
           chmod 644 $i
     fi
done
Posizionati nella cartella nella quale è contenuto lo script ed esegui i comandi:

Codice: Seleziona tutto

chmod +x script.sh
export PATH="$PATH:`pwd`"
Poi avvia lo script con:

Codice: Seleziona tutto

script.sh /PATH/aCuiCambiareIPermessi/
Ora non posso provarlo, appena ho un minuto lo faccio ma dovrbbe andare.

Ciao

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: giovedì 17 aprile 2008, 15:23
da leonard vertighel
Grazie della dritta.
Dunque, mi dice
./permessi.sh: line 1: i: command not found
dove permessi.sh è il nome che ho dato al file (reso eseguibile dai precedenti comandi).

Che significa

Codice: Seleziona tutto

export PATH="$PATH:`pwd`"
?

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: giovedì 17 aprile 2008, 16:12
da Lord_Dex
indy ha scritto: Grazie della dritta.
Dunque, mi dice
./permessi.sh: line 1: i: command not found
Si ho sbagliato, ho scritto while al posto di for:

Codice: Seleziona tutto

for i in "*"; do
     if [[ -d $i ]]; then
           chmod 755 "$i"
           $0 $i/
     else 
           chmod 644 "$i"
     fi
done
Ho anche messo un paio di "" che non fanno mai male :D
Che significa

Codice: Seleziona tutto

export PATH="$PATH:`pwd`"
?
inserisci nella variabile d'ambiente PATH (dove son contenuti tutte le directory dove il sistema va a cercare gli eseguibili) il direttorio contenente lo script che hai creato.
export invece fa "esportare" la variabile in tutte le sotto-shell che verranno aperte dalla shell attuale da quando digiti il comando.

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: giovedì 17 aprile 2008, 16:38
da leonard vertighel
L'ho provato in una cartella piccolissima e non la smetteva più... mi ha quasi inchiodato il pc. Sei sicuro che non ci voglia un -R o un while da qualche parte?
Scusa ma non sono esperto di programmazione in shell...  :-\

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: giovedì 17 aprile 2008, 17:45
da Lord_Dex

Codice: Seleziona tutto

cd $1
for i in *; do
     if [[ -d $i ]]; then
           chmod 755 "$i"
           $0 "$i/"
     else 
           chmod 644 "$i"
     fi
done
scusami ma mi ero completamente dimenticato di entrare nella cartella :)
attento anche al for, non servono le "" sull'*

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: venerdì 18 aprile 2008, 10:39
da leonard vertighel
Nada... mi dice:

Codice: Seleziona tutto

indy@charliebrown:~$ ./permessi.sh immagini/
./permessi.sh: line 5: ./permessi.sh: Nessun file o directory
./permessi.sh: line 5: ./permessi.sh: Nessun file o directory
./permessi.sh: line 5: ./permessi.sh: Nessun file o directory
In pratica quello che fa è cambiare i permessi alle cartelle presenti in immagini (sono tre), ma non entra in ognuna di esse per cambiare i permessi dei file.

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: venerdì 18 aprile 2008, 10:49
da jigen74
hai dato i diritti di esecuzione a permessi.sh?

Codice: Seleziona tutto

chmod +x premessi.sh
in alternativa, prova con questi comandi

Codice: Seleziona tutto

find . -type d -exec chmod 755 {} \;
per dare 755 alle directory e

Codice: Seleziona tutto

find . -type f -exec chmod 644 {} \;
per dare 644 a tutti i file.
il '.' nei due comandi (dopo find) indica la directory di ricerca, in questo caso quella corrente in cui sei.
è solo un modo diverso di scrivere quanto già detto da Lord_Dex :)
ciao.

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: venerdì 18 aprile 2008, 23:34
da Lord_Dex
Lord_Dex ha scritto: Crea un file e chiamalo script.sh (ad esempio)

Codice: Seleziona tutto

while i in "*"; do
     if [[ -d $i ]]; then
           chmod 755 $i
           $0 $i/
     else 
           chmod 644 $i
     fi
done
Posizionati nella cartella nella quale è contenuto lo script ed esegui i comandi:

Codice: Seleziona tutto

chmod +x script.sh
export PATH="$PATH:`pwd`"
Poi avvia lo script con:

Codice: Seleziona tutto

script.sh /PATH/aCuiCambiareIPermessi/
Ora non posso provarlo, appena ho un minuto lo faccio ma dovrbbe andare.

Ciao

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: venerdì 18 aprile 2008, 23:35
da Lord_Dex
devi avviarlo senza il ./

Codice: Seleziona tutto

script.sh /PATH/aCuiCambiareIPermessi/
perchè inserisci la cartella dello script nella variabile PATH. ;)

cmq anche la soluzione con il find è molto valida :)

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: venerdì 25 aprile 2008, 12:25
da leonard vertighel
Lord_Dex ha scritto: devi avviarlo senza il ./

Codice: Seleziona tutto

script.sh /PATH/aCuiCambiareIPermessi/
perchè inserisci la cartella dello script nella variabile PATH.

cmq anche la soluzione con il find è molto valida
Funziona, ma si inchioda se una delle sottocartelle o dei file ha un nome con degli spazi:

Canone in re/

Canone ???????????? Non esiste alcuna cartella Canone!!!!! Sei un pazzo, PAZZO!!!!

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: domenica 27 aprile 2008, 22:20
da Lord_Dex
attento che ci siano le "$i" dopo i due comandi chmod

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: lunedì 28 aprile 2008, 10:29
da leonard vertighel
Lord_Dex ha scritto: attento che ci siano le "$i" dopo i due comandi chmod
NOn prendermi in giro, ma le "$i" devono essere fra virgolette?

Re: modifica ricorsiva dei permessi...[RISOLTO]

Inviato: lunedì 28 aprile 2008, 11:17
da Lord_Dex
indy ha scritto: NOn prendermi in giro, ma le "$i" devono essere fra virgolette?
esatto