Permessi file

9 risposte [Ultimo contenuto]
Ritratto di lpav82
lpav82
(Junior)
Offline
Junior
Iscritto: 16/10/2004
Messaggi: 22

ciao,
ho la necessità di cambiare i permessi da 744 a 666 ad una serie di file contenuti in una serie directory e sottodirectory senza però applicare i permessi 666 alle direcotry altrimenti non le posso più aprire.
ho provato coni successo con chmod -R 666 * nella directory che contiente le sottodirectory e i file.

saluti

Luca mail
web www.gruppocontroluce.org

Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Mi spiazzi!

Non ci avevo pensato Laughing

Ritratto di lpav82
lpav82
(Junior)
Offline
Junior
Iscritto: 16/10/2004
Messaggi: 22

grazie a tutti delel risposte oggi pomeriggio quando vasdo a casa lo provo e vi faccio sapere.

saluti

Luca mail
web www.gruppocontroluce.org

Ritratto di kripsio
kripsio
(Collaboratore)
Offline
Collaboratore
Iscritto: 10/09/2004
Messaggi: 1486

Metto lo script di Antonio nella mia ~/bin ... un giorno potrebbe servirmi Laughing)

Grassie!

Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Quote:

maxer ha scritto:
proporrei la creazione di uno script di bash...
penso sia la soluzione migliore...

Mentre proponevi io scrivevo :-P, eccolo

<br />#!/bin/bash<br /># chmodr - Un chmod Ricorsivo, che rispetta le differenze file-directory<br /># <br /># Cambia ricorsivamente i permessi di file e directory, ma impostando<br /># permessi diversi per i file e per le directory<br />#<br /># USO<br /># ^^^<br /># <br /># chmodr<br />#   Senza parametri imposta ad un sano default tutti i file (640) e le <br />#   directory (750) contenute nella directory corrente.<br /># <br /># chmodr permessi_file permessi_dir<br />#   Applica ai file nella directory corrente e sotto-directory i <br />#   'permessi_file' e tutte le directory i 'permessi_dir'. La sintassi<br />#   per i permessi e' la stessa di chmod quindi sia ottale che simbolica.<br />#<br /><br />FILE_MOD=$1<br />DIR_MOD=$2<br />[ -z "$1" ] && FILE_MOD="640"<br />[ -z "$2" ] && DIR_MOD="750"<br /><br />ls | while read file; do<br />    if [ -d "$file" ]; then<br />  echo " Entro nella directory '$file'"<br />     <br />  chmod u+rwx "$file" || { echo " Non ho i permessi per entrare in '$file'" <br />                                 continue; }<br />      cd "$file"; $0 $@; cd -<br />   <br />  chmod $DIR_MOD "$file" 2> /dev/null && echo " Directory '$file' impostata."<br />    elif [ -f "$file" ]; then<br />    echo -n "  $file ... "<br />    chmod $FILE_MOD "$file" && echo " [ OK ]"<br />    else<br />   echo " Ignoro '$file', probabilmente un link."<br />    fi<br />done<br />      <br />

dovrebbe andare Laughing

Bye

EDIT: tolta una è nei commenti che potrebbe causare problemi su locali diversi.

Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Ho dimenticato di dire che lo script deve essere inserito nel path oppure deve essere eseguito con un percorso assoluto (ad es. /home/anto/chmodr) altrimenti la ricorsione non funziona. Per il resto può avere qualsiasi nome vogliate (anche se chmodr è consigliato 8-)).

Il vantaggio rispetto alla seppur ottima idea di keltik (veramente Wink) di usare find è che (a parte che basta un solo comando per impostare permessi sia di file che directory) se si incontrano delle directory senza permesso di esecuzione o lettura, chmodr cerca di cambiare i permessi per poter entrare e una volta finito il lavoro nelle sotto-directory imposta i permessi scelti per la directory (che possono quindi anche essere 000). Il find invece non riuscirebbe ad entrare in dir senza i permessi e volendo cambiare prima i permessi ricorsivamente si ricade in qualcosa simile al mio script ed a questo punto è inutile usare find.

Concludo con qualche esempio:
<br />Impostiamo dei permessi prestabiliti (660 per file e 770 per dir):<br />$ chmodr 660 770<br /><br />Aggiungiamo il permesso di scrittura a proprietario e gruppo sui file e togliamo tutti i permessi sulle dir agli altri):<br />$ chmodr ug+w o-rwx<br /><br />e così via usando la stessa sintassi di chmod per i permessi.<br />

Ricordo di fare attenzione perchè lo script cambia i permessi di tutti i file e le dir contenute nella dir corrente (entrando ricorsivamente in tutte le sotto-dir).

Bye

Ritratto di lpav82
lpav82
(Junior)
Offline
Junior
Iscritto: 16/10/2004
Messaggi: 22

funziona perfettamente grazie per l'aiuto..

saluti

Luca mail
web www.gruppocontroluce.org