Cambiare i permessi ricorsivamente: differenze tra le versioni

m
nessun oggetto della modifica
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 1: Riga 1:
__NOTOC__
[Categoria:Sistema]
<!-- ---------- BEGINNING OF HEADER SECTION -------------------------- -->
[Categoria:Shell]
{|style="width:100%; margin-top:+.7em; background-color:#fcfcfc; border: 1px solid #ccc"
|style="width:50%;color:#000"|
{| style="width:280px;border:solid 0px;background:none"
|-
| style="width:280px;text-align:center; white-space: nowrap; color:#000" |
<h1 style="font-size: 162%; border: none; margin: 0; padding:.1em; color:#000">
Bevenuti su [[Guide@Debianizzati.Org:About|Guide@Debianizzati.Org]],
</h1>
<div style="top: +0.2em; font-size: 100%">
La risorsa libera dedicata a Debian e al Software Libero [[Aiuto:Contents|a cui tutti possono contribuire]].
</div>
<div id="articlecount" style="width:100%;text-align:center;font-size:85%;">
Pi� di [[Special:Statistics|{{NUMBEROFARTICLES}}]] Articoli e Guide in Italiano</div>
|-
|}
<!-- ----------Portals Follow----------------------------- -->
|style="width:30%;font-size:95%;color:#000"|
* '''[[Cos'�_Debianizzati.Org|Cos'� Debianizzati.Org]]'''
* [http://www.debianizzati.org/ Portale Debianizzati.Org]
* [http://www.debianizzati.org/component/option,com_joomlaboard/Itemid,29/ Forum]
* [[contratto sociale|Contratto Sociale]]
|}
<!-- -------End Portals----- -->


Questo script cambia ricorsivamente i permessi di file e directory, ma impostando permessi diversi per i file e per le directory. In tal modo si possono impostare con un solo comando i permessi di esecuzione di un'intera gerarchia di directory (in modo da potervi accedere) e contemporaneamente togliere il permesso di esecuzione a tutti i file ivi contenuti.


<!-- ---------- END OF HEADER SECTION / BEGINNING OF LEFT-COLUMN ------------------ -->
Basta posizionarsi nella cartella interessata e lanciare lo script. Se non viene usato nessun parametro verranno impostati dei sani default (640 per i file e 750 per le cartelle).
{| style="border-spacing:8px;margin:0px -8px"
|class="MainPageBG" style="width: 55%; border:1px solid #cef2e0; background-color:#f5fffa; vertical-align:top;color:#000"|
{| width="100%" cellpadding="2" cellspacing="5" style="vertical-align:top; background-color:#f5fffa"
! <h2 style="margin: 0; background-color:#cef2e0; font-family: sans-serif; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding-left:0.4em; padding-top: 0.2em; padding-bottom: 0.2em;">Cos'� Guide@Debianizzati.Org</h2>
|-
|style="color:#000"|


[[Image: swirl-75-alpha.png |left]]'''Guide @ Debianizzati.org''' un progetto che ha lo scopo di raccogliere documentazione italiana su Debian GNU/Linux e su GNU/Linux in generale (nel caso di guide generiche indipendenti dalla distribuzione). Questo progetto � nato in seno alla comunit� [http://www.debianizzati.org Debianizzati] e ne condivide lo spirito ed il [[contratto sociale]].
{{Box|Esempio|Un utilizzo tipico quello di sanare i permessi di file copiati da cdrom, da partizioni windows, da chiavette usb formattate fat32 etc. }}


Questo un [http://it.wikipedia.org/wiki/Pagina_principale wiki], sentiti quindi libero di contribuire anche solo correggendo piccoli errori, estendendo le guide presenti o scrivendone di nuove. Se vuoi contribuire, per favore, leggi le [[Help:Contents|linee guida]] dove troverai le informazioni generali su come editare le pagine.


Ti preghiamo di non inserire nel wiki contenuti coperti da licenze non libere. In particolare tutte le guide inserite sono da considerarsi rilasciate secondo la licenza Creative Commons "[[Some Right Reserved]]". Per ulteriori informazioni vedere anche la pagina [[Guide%40Debianizzati.Org:General_disclaimer|Disclaimer]].
I due parametri opzionali sono i permessi rispettivamente di file e cartelle nello stesso formato accettato da chmod.


La nostra comunit� altro non � che una libera associazione di [[Speciale:Listusers|persone]] accomunate dai medesimi ideali. La nascita del sito [http://www.debianizzati.org Debianizzati.Org] e di questo wiki � stata la naturale conseguenza del desiderio di conoscersi e di condividere le rispettive conoscenze, in piena sintonia con l'[[etica hacker]].
{{Box|Esempio| $ cd cartella/da/modificare/
$ chmodr g-wx g-w
}}


Per avere ulteriore informazione sulla community Debianizzati ed i suoi scopi ti invitiamo a leggere [[Cos' Debianizzati.Org]].


Buona Navigazione!
Ecco lo script:
<pre>
#!/bin/bash
#
# Antonio Ingargiola - 2004
#
# chmodr - Un chmod Ricorsivo, che rispetta le differenze file-directory
#
# Cambia ricorsivamente i permessi di file e directory, ma impostando
# permessi diversi per i file e per le directory
#
# USO
# ^^^
#
# chmodr
#  Senza parametri imposta ad un sano default tutti i file (640) e alle
#  directory (750) contenute nella directory corrente.
#
# chmodr permessi_file permessi_dir
#  Applica ai file nella directory corrente e sotto-directory i
#  'permessi_file' e tutte le directory i 'permessi_dir'. La sintassi
#  per i permessi e' la stessa di chmod quindi sia ottale che simbolica.
#


|}
help () {
<!-- -------------------- START OF RIGHT-COLUMN ---------------------------------- -->
  echo -e "\n    Antonio Ingargiola - 2004\n"
|class="MainPageBG" style="width: 45%; border:1px solid #cedff2; background-color:#f5faff; vertical-align:top"|
  echo -e "  chmodr - Un chmod Ricorsivo, che rispetta le differenze file-directory\n"
  echo -e "  Cambia ricorsivamente i permessi di file e directory, ma impostando"
  echo -e "  permessi diversi per i file e per le directory.\n"
                                                                         
  echo -e "  USO"
  echo -e "  ^^^\n"
  echo -e "  chmodr"
  echo -e "    Senza parametri imposta ad un sano default tutti i file (640) e alle "
  echo -e "    directory (750) contenute nella directory corrente.\n"
 
  echo -e "  chmodr permessi_file permessi_dir"
  echo -e "    Applica ai file nella directory corrente e sotto-directory i "
  echo -e "   'permessi_file' e tutte le directory i 'permessi_dir'. La sintassi"
  echo -e "   per i permessi e' la stessa di chmod quindi sia ottale che simbolica.\n"
  exit 1
}


{| width="100%" cellpadding="2" cellspacing="5" style="vertical-align:top; background-color:#f5faff"
valid_mod () {
# Check if the mods are syntactically correct
   
    echo "$1" |\
    perl -n -e 'if ($_ =~ /^[01234567]{3}$/) {exit 0}; exit 1'
    ok_numerical=$?


! <h2 style="margin: 0; background-color:#cedff2; font-family: sans-serif; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding-left:0.4em; padding-top: 0.2em; padding-bottom: 0.2em;">Risorse sul Wiki</h2>
    echo "$1" |\
|-
    perl -n -e 'if ($_ =~ /^[ugoa]{0,3}[+-=]{1}[rwx]{1,3}$/) {exit 0}; exit 1'
|style="color:#000"|
    ok_symbolical=$?
[[Image: bookcase.png |right|75px]]
   
* '''[[Indice Guide]]''': troverete qui la raccolta delle guide e degli articolo tecnici dedicati a Debian e a GNU/Linux.
    # echo "num $ok_numerical, sym $ok_symbolical" # DEBUG
* '''[[Faq|FAQ]]''': una raccolta di domande frequentemente poste sul nostro [http://www.debianizzati.org/component/option,com_joomlaboard/Itemid,29/func,latest/do,show/sel,24/ forum].
    [ "$ok_numerical" = 0 -o "$ok_symbolical" = 0 ]
* '''[[:Categoria:Glossario|Glossario]]''': un glossario dei termini informatici di uso pi� comune.
    return $?
* '''[[Tabella Software]]''': una tabella comparativa tra software libero e software proprietario disponibile per le varie applicazioni.
}
* '''[[Software_Libero|Software Libero]]''' raccolta di materiale e libri on-line dedicati al Software Libero e alla sua storia.


|-
[[ "$1" = -* ]] && help
! <h2 style="margin: 0; background:#cedff2; font-family: sans-serif; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding-left:0.4em; padding-top: 0.2em; padding-bottom: 0.2em;">Contribuire ...</h2>
|-  
|style="color:#000"|


* '''[[Wishlist]]''': segnala in questa pagina le guide che vorresti venissero scritte sul wiki.
FILE_MOD="$1"
* '''[[Aiuto:Contents|Come scrivere una guida]]''': delle ''linee guida'' da seguire nella stesura di una articolo o di una guida per aiutarci a mantenere un elevato standard qualitativo.
DIR_MOD="$2"
* '''[[Aiuto:Editing|Aiuto sulla formattazione]]''': le principali regole di formattazione del testo nel wiki.
BASE_DIR="$3"
* '''[http://www.debianizzati.org/content/view/344/2/ Contribuire allo sviluppo di Debianizzati.Org]'''
[ -z "$1" ] && FILE_MOD="640"
[ -z "$2" ] && DIR_MOD="750"
[ -z "$3" ] && BASE_DIR="./"


* '''[[Contribuire a Debian]]''': alcuni suggerimenti sui vari modi per contribuire direttamente a Debian.
cd "$BASE_DIR"


|-
if !( valid_mod $FILE_MOD && valid_mod $DIR_MOD ); then
|}
    echo -e "\n ERRORE: Il formato dei permessi e' sbagliato. Per i dettagli"
|}
    echo -e "        vedere la pagina di manuale di chmod.\n"
    exit 2
fi


ls | while read file; do
    if [ -d "$file" ]; then
echo " Entro nella directory '$file'"
chmod u+rwx "$file" 2> /dev/null ||\
{ echo " Non ho i permessi per entrare in '$file'"; continue; }
cd "$file"; $0 $@; cd -
chmod $DIR_MOD "$file" && echo -e " Directory '$file' impostata.\n"
    elif [ -f "$file" ]; then
echo -n "  $file ... "
chmod $FILE_MOD "$file" && echo " [ OK ]"
    else
echo " Ignoro '$file', probabilmente un link."
    fi
done
</pre>


<!-- -------------------- START OF FOOTER BOX ------------------------------ -->
Il core dell script (quello che esegue effettivamente il cambio dei permessi) � la parte finale da '''ls | while read ...''' in poi. Tutta la parte precedente serve solo a controllare la correttezza dei parametri passati e a stampare una eventuale schermata di help.
{| style="border-spacing:8px;margin:-8px -8px"
----
|class="MainPageBG" style="width: 100%; border:1px solid #ddcef2; background-color:#faf5ff; vertical-align:top; color:#000"|
Autore: [[Utente:TheNoise|~ The_Noise]]
{| cellpadding="2" cellspacing="5" style="vertical-align:top; background-color:#faf5ff; color:#000"
! <h2 style="margin: 0; background-color:#ddcef2; font-family: sans-serif; font-size:120%; font-weight:bold; border:1px solid #afa3bf; text-align:left; color:#000; padding-left:0.4em; padding-top: 0.2em; padding-bottom: 0.2em;">Altre Risorse di Debianizzati.Org</h2>
|-
|style="color:#000"|
[[Image: users.png |right|75px]]
* '''[[Chat]]''': gli utenti della community Debianizzati si incontrano regolarmente su un [[Chat|canale IRC]] dove possono conoscersi meglio e parlare di [http://www.debian.org Debian] e di [[Cos'�_il_Software_libero|Software Libero]].
 
|-
|}
|}
1 760

contributi