Cambiare i permessi ricorsivamente: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m (aggiunta piccola descrizione)
mNessun oggetto della modifica
Riga 1: Riga 1:
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.
__NOTOC__
<!-- ---------- BEGINNING OF HEADER SECTION -------------------------- -->
{|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----- -->


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).


{{Box|Esempio|Un utilizzo tipico è quello di sanare i permessi di file copiati da cdrom, da partizioni windows, da chiavette usb formattate fat32 etc. }}
<!-- ---------- END OF HEADER SECTION / BEGINNING OF LEFT-COLUMN ------------------ -->
{| 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]].


I due parametri opzionali sono i permessi rispettivamente di file e cartelle nello stesso formato accettato da chmod.
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.


{{Box|Esempio| $ cd cartella/da/modificare/
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]].
$ chmodr g-wx g-w
}}


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]].


Ecco lo script:
Per avere ulteriore informazione sulla community Debianizzati ed i suoi scopi ti invitiamo a leggere [[Cos'� Debianizzati.Org]].
<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 () {
Buona Navigazione!
  echo -e "\n    Antonio Ingargiola - 2004\n"
  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
}


valid_mod () {
|}
# Check if the mods are syntactically correct
<!-- -------------------- START OF RIGHT-COLUMN ---------------------------------- -->
   
|class="MainPageBG" style="width: 45%; border:1px solid #cedff2; background-color:#f5faff; vertical-align:top"|
    echo "$1" |\
    perl -n -e 'if ($_ =~ /^[01234567]{3}$/) {exit 0}; exit 1'
    ok_numerical=$?


    echo "$1" |\
{| width="100%" cellpadding="2" cellspacing="5" style="vertical-align:top; background-color:#f5faff"
    perl -n -e 'if ($_ =~ /^[ugoa]{0,3}[+-=]{1}[rwx]{1,3}$/) {exit 0}; exit 1'
    ok_symbolical=$?
   
    # echo "num $ok_numerical, sym $ok_symbolical" # DEBUG
    [ "$ok_numerical" = 0 -o "$ok_symbolical" = 0 ]
    return $?
}


[[ "$1" = -* ]] && help
! <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>
|-
|style="color:#000"|
[[Image: bookcase.png |right|75px]]
* '''[[Indice Guide]]''': troverete qui la raccolta delle guide e degli articolo tecnici dedicati a Debian e a GNU/Linux.
* '''[[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].
* '''[[:Categoria:Glossario|Glossario]]''': un glossario dei termini informatici di uso pi� comune.
* '''[[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.


FILE_MOD="$1"
|-
DIR_MOD="$2"
! <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>
BASE_DIR="$3"
|-  
[ -z "$1" ] && FILE_MOD="640"
|style="color:#000"|
[ -z "$2" ] && DIR_MOD="750"
[ -z "$3" ] && BASE_DIR="./"


cd "$BASE_DIR"
* '''[[Wishlist]]''': segnala in questa pagina le guide che vorresti venissero scritte sul wiki.
* '''[[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.
* '''[[Aiuto:Editing|Aiuto sulla formattazione]]''': le principali regole di formattazione del testo nel wiki.
* '''[http://www.debianizzati.org/content/view/344/2/ Contribuire allo sviluppo di Debianizzati.Org]'''


if !( valid_mod $FILE_MOD && valid_mod $DIR_MOD ); then
* '''[[Contribuire a Debian]]''': alcuni suggerimenti sui vari modi per contribuire direttamente a Debian.
    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>


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.
 
----
<!-- -------------------- START OF FOOTER BOX ------------------------------ -->
Autore: [[Utente:TheNoise|~ The_Noise]]
{| style="border-spacing:8px;margin:-8px -8px"
|class="MainPageBG" style="width: 100%; border:1px solid #ddcef2; background-color:#faf5ff; vertical-align:top; color:#000"|
{| 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]].
 
|-
|}
|}