linux user group brescia

immagine del castello

Archivio della mailing list

[CAB] Considerazioni A Braccio...

Gabriele Villi gvilli a iol.it
Mar 18 Lug 2000 07:55:34 UTC

DisKre Panza wrote:
>    Colgo l'occasione per buttare li` una domanda che avevo in testa,
> proprio sulle directory. Il fatto che esistano tante directory... come
> dire... "predefinite", e` una cosa alla quale faro` una fatica boia ad
> abituarmicivisi... :) Se do` un'occhiata al PATH di root ed a quello di
> un qualsiasi altro utente (ovviamente sono sempre io, ci metto le mani
> solo io sul mio computer, almeno per ora), vedo che - di default - vengono
> messe queste dir:
> 
> - root
>    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
> - user
>    /usr/local/bin:/usr/bin:/bin
> 
> piu` altre che qui non interessano. Ora, io volevo trafficare un po' con
> gli script, e volevo creare una directory che contenesse solo quelli, e
> che fosse accessibile da tutti. Ho risolto il problema creando la dir
> 
> /usr/local/sh
> 
> ed ho aggiunto il relativo path.
> 
>    La domanda e`: ha un senso un'operazione del genere? E se si`, la
> collocazione e` - piu' o meno - corretta, oppure era meglio un'altra
> posizione? Perche' non sono ancora riuscito a capire bene il significato
> di "usr", "local", e soprattutto "sbin", ed in generale la filosofia che
> informa tutto il progetto.
> 

La "filosofia" e' proprio quella di tenere separati ed "ordinati" i vari
files.

In unix c'e' la tendenza a lavorare "per mattoncini", cioe' ad avere
tanti strumenti (comandi) che fanno una singola operazione e che devono
essere combinati per ottenere operazioni complesse. Questo porta ad un
proliferare di file. Per evitare di soccombere nel caos il tutto viene
inserito in una organizzazione piu' o meno standard, innanzitutto
separando i file "essenziali" per il sistema (cioe' quelli senza i quali
il sistema non riesce nemmeno a partire e/o arrivare al prompt) e gli
altri. Se fai ls / trovi, tra l'altro, /etc (i file di configurazione
del sistema) /bin (gli eseguibili fondamentali, ad esempio mount e le
shell) /sbin (altri eseguibili fondamentali ma "pericolosi", e quindi
eseguibili solo da root, ad esempio mkfs, equivalente a format del dos)
/lib (le librerie fondamentali)

Un sistema con solo /etc /bin /sbin /lib e poco altro e' in grado di
"vivere" pero' e' poco utile, perche' mancano tutti i comandi che
servono agli utenti (ad esempio il compilatore c, piuttosto che il
browser www). Questi comandi (e le relative librerie e file di
configurazione) vengono inseriti di norma sotto la directory /usr, ove
trovi /usr/bin, /usr/etc /usr/lib e via dicendo. Sempre con lo stesso
spirito "segregazionista" tutto (o quasi) quello che e' di pertinenza
dell'interfaccia grafica viene messo sotto /usr/X11 (o equivalenti) e i
dati privati degli utenti li trovi in /home/nomeutente. In /usr/local
trovi in genere file che non sono "standard" (come lo sono, ad esempio,
ls o un compilatore c) ma che sono di utilita' generale per *quel*
particolare sistema)

Aver diviso il mondo ha alcuni innegabili vantaggi. In primis si ha
un'idea vaga della della funzione di un file gia' considerandone la
posizione (ad esempio, /usr/X11R6/bin/animate non so cosa faccia ma ci
scommetto che si appoggia all'intefaccia grafica); cio' e' utile, ad
esempio, quando fai backup (perche' copiare file che possono essere
recuperati dai cd di installazione?). In secondo luogo, poiche' unix e'
in grado di "piazzare" le directory su partizioni differenti, e'
possibile decidere dove mettere fisicamente certi file; ad esempio
potrei mettere tutti i comandi X11 in una partizione su un disco piccolo
e i dati utente su un disco di maggiori dimensioni e che magari, in caso
di crash o di upgrade, puo' essere spostato rapidamente su un'altra
macchina.

Per concludere, se vuoi creare degli script tuoi un buon posto dove
metterli e' nella tua home directory (meglio in una sottodirectory della
tua home) se si tratta di script a tuo esclusivo uso e consumo. Se
invece servono anche ad altri utenti un buon posto e' /usr/local/bin o
/usr/local/myscripts. Nessuno, comunque, ti impedisce di mettere uno
script in /bin o in /var/log se non il buon senso. In ogni caso,
attenzione ai permessi che dai agli script. Se crei uno script che e' in
grado di "far danni" (ad esempio terminator.sh che cancella dati) pensa
*molto* bene a quali utenti potranno eseguirlo e, se e' il caso, crea un
gruppo ad hoc (ad esempio "utentisvegli"), una directory opportuna (ad
es. /usr/local/bin/dangerous) in cui ficcare tutti gli script pericolosi
ed assegna alla dir e/o ai files i permessi solo per il gruppo
"utentisvegli"

gv



Maggiori informazioni sulla lista Lug