[Tech] Concorso chmod

Szymon Stefanek pragma@firenze.linux.it
Ven 23 Feb 2007 04:46:30 CET


On Thursday 22 February 2007 22:24, Leonardo Boselli wrote:
> concorso (senza premi in denaro o natura):
> il più elegante script che:
> data una directory o un inseme di directory (con wildcard)
> a tutte le sottodirectory e i file presenti se già non presenti dia al
> gruppo le permission date dal comando AND quelle dell'owner, e a all
> quelle del gruppo AND gruppo.
> per intendersi se un file ha rwxr-xr--
> e do come parametro 766 mi diventa 770 e se lo ripeto 776.
> se detti 755 mi diverrebbe 755 e li si ferma ...

Forse non ho capito bene, ma non mi tornano del tutto gli esempi.

Attuale:   754 rwxr-xr--
Parametro: 766 rwxrw-rw-

Se devo dare al gruppo "owner attuale AND owner parametro" (rwx and rwx = rwx)
e ad all "gruppo attuale AND gruppo parametro" ottengo (r-x and rw- = r--)

Risultato: 774 rwxrwxr--

Se ripeto con parametro 766 ottengo 776 (e qui ok).
Con parametro 755 (rwxr-xr-x) ottengo invece 775 che rimane a oltranza.

Insomma, se gli esempi son leggermente errati ma ho capito bene quello
che vuoi allora:

find /dir | perl -e 'while(<>){ chomp; $o=(stat)[2] & 0777; $p=0775; \
	chmod (($o & 0700) | (($p >> 3) & ($o >> 3))), $_;  }'

dovrebbe risolvere il tuo problema.

Il parametro lo devi passare alla variabile $p (che volendo si potrebbe
pure far sparire...)

Includere questa riga in uno script di shell e passare
la directory e i permessi come parametri è lasciato al lettore come 
esercizio :D

-- 

Szymon Stefanek

------------------------------------------------------------------------------
-
- Will design spacecraft for food.
-
------------------------------------------------------------------------------
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: non disponibile
URL:         <http://lists.linux.it/pipermail/flug-tech/attachments/20070223/75381e54/attachment.pgp>


Maggiori informazioni sulla lista flug-tech