Tips & Tricks

Sistemi operativi Linux e software open source
Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Sono pronto all'installazione della distro xyz: ma come partiziono il mio disco fisso

Scrivo questa breve guida per tutti coloro che si preparano alla loro prima installazione di un sistema Unix-like, ovvero Linux. Spero, che sia utile anche per tutti gli altri.
La prima domanda da porsi è:"Quanti SO intendo installare su questo disco?".
Il motivo di questa domanda è basato sul fatto che per come il Master Boot Record è strutturato non è possibile fare più di 4 partizioni primarie. Allora il consiglio è:
1) se uso un solo SO, allora uso tutte e quattro le partizioni primarie per la distribuzione xyz;
2) se devo usare n SO, allora devo utilizzare le partizioni secondarie (anche dette logiche).

Prendiamo in esame il primo caso: "unico sistema operativo sul disco".
La struttura, che consiglio per la vostra distribuzione è:
1) una partizione primaria, su cui montare /boot, con file system ext2, da circa 800MB. (Ad esempio per chi deciderà di usare Fedora in tale partizione vengono salvati i pacchetti del comando "preupgrade", per saltare da una release all'altra, e se troppo piccola si incorre in problemi post-aggiornamento)
2) una partizione primaria, su cui montare "swap", con file system dedicato (swap appunto), consigliato sui 2GB.
Questa partizione serve per allocare su disco file che su RAM non servono più. Rimando a wikipedia per una migliore comprensione. La dimensione di questa partizione dipende da cosa fate sul pc. Solitamente la faccio di circa 1GB. Più grande non mi serve.
3) una partizione primaria, su cui montare /home, con file system ext4.
In questa partizione verranno salvati tutti i vostri dati personali. Nel caso in cui deciderete di formattare il sistema (montato su /), facendo questa partizione, i vostri dati non verrano toccati. La grandezza è a vostra discrezione: varia da utente ad utente, da quanto sono grandi i vostri dati (se sono film, *.iso o semplici file di testo).
4) partizione primaria, su cui montare /, con file system ext4.
Qui verrà installato il vostro sistema. "/" è la radice di tutto il vostro sistema! La dimensione sarà data da tutta la capienza del vostro HDD meno quella dedicata a /boot, swap e a /home. Ovvio.

Prendiamo in esame il secondo caso: "più sistemi operativi sul disco".
Essendovi più sistemi operativi dobbiamo fare alcune premesse:
1) Posso usare la stessa "swap" per tutti i sistemi linux che desidero installare?
La risposta è SI, tranne se ibernate il vostro sistema. La partizione di swap, viene utilizzata dal sistema per liberare RAM e per salvare i file in caso di ibernazione. Quindi se ibernate il sistema A e avviate il sistema B, B trova i file di A e il risultato non è noto. (Non ho mai provato!)
2) non potete utilizzare la stessa /home per le diverse distribuzione e nemmeno per stesse distribuzione ma diverse release.
3) non potete utilizzare la stessa /boot per ovvie ragioni

Fatte queste premesse, il mio consiglio è quello di installare eventuali sistemi Windows in partizioni primarie (o logiche, tenendo conto che sono sempre quattro massimo le partizioni primarie possibili), di utilizzare una partizione primaria per la swap (soprattutto se utilizzate più sistemi e non ibernate) e di rimarchiare una partizione primaria in "volume logico esteso" creando qui dentro (mediante partizioni logiche) la strutta esposta nel primo caso.

Per ulteriori chiarimenti, postate pure sul forum!
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Copiare in sicurezza file da un sistema locale a un sistema remoto e viceversa (anche per file di grosse dimensioni!]

Quante volte ci è capitato di dover inviare, o ricevere, un file di grosse dimensioni da un amico/parente o semplicemente da un nostro sistema "allocato" fuori dal sistema in uso? Questi pochi passaggi vi permetteranno di fare copie sicure e veloci (Ndr:non quanto i sistemi FTP), tra macchine componenti una rete locale o tra sistemi su rete remota.
Il comando a cui si fa riferimento è scp: deriva da Secure Copy e usa il protocollo SSH, ovvero Secure Shell.
Incoraggio a guardare:

Codice: Seleziona tutto

man scp

per ulteriori informazioni.

Per far si che il comando funzioni dobbiamo fare alcune premesse:
1) il demone SSHD deve essere avviato, sia sulla macchina server che sulla macchina client. E' possibile controllare lo status, ad esempio, con il comando:

Codice: Seleziona tutto

chkconfig | grep sshd 
NB:SSH è un protocollo molto sicuro, forse il più sicuro, ma consiglio allo stesso tempo di mantenere il demone SSHD disattivato quando non serve, per evitare inutili attacchi dall'esterno.
2) il vostro firewall di sistema deve avere una porta aperta. Solitamente scp, e quindi ssh usano la porta 22; ma nessuno ci vieta, anzi è meglio per una ragione di sicurezza, di utilizzare un'altra porta, a nostro piacere (da scegliere tra il numero 1025 e 65535).
Specificheremo al comando scp la porta utilizzata mediante l'opzione -P con la sintassi:

Codice: Seleziona tutto

-P <numero_porta>
.
NdR:l'opzione -p è diversa da -P: la shell di linux è case sensitive!
3) eventuali router e quant'altro dovranno avere la porta 22, o quella prescelta, aperta.
Si può provare con:

Codice: Seleziona tutto

netstat -anp | grep 'LISTEN ' | grep 22
se avete l'instradamento libero. Ovvio che chi ha scelto un'altra porta doveà inserire al posto di "22" il suo numero di porta scelto.

Se nello stabilire la connessione si hanno problemi, è molto probabile che sia saltata una di queste tre premesse.

La sintassi è molto simile a quella del comando cp, usato per fare copie in locale.

Codice: Seleziona tutto

scp path1 nomeutente@nomehost:path2
per copiare dal nostro sistema al sistema in locale o in remoto, oppure:

Codice: Seleziona tutto

scp nomeutente@nomehost:path2 path1
per copiare dal sistema in locale o in remoto sul nostro sistema.

Dove:
path1: percorso del file sul nostro sistema.
path2: percorso del file sul sistema locale/remoto al quale siamo collegati.
nomeutente: è il nome utente del sistema locale/remoto al quale siamo collegati (non il nostro).
nomehost: è l'hostname del sistema locale/remoto al quale siamo collegati (non il nostro).
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Creare un alias per il vostro sistema per l'automatizzazione di alcuni comandi

Questo suggerimento vi permetterà di creare "pochi" comandi concatenati, in modo tale da automatizzare alcune operazioni.
Come tutti sanno "alias" significa "altrimenti detto" e nel caso di linux viene utilizzato per racchiudere in un unico "comando" vari comandi con le relative, ed eventuali, opzioni.
Creiamo un esempio di "alias" per meglio spiegare.
Prima di tutto va detto che gli alias si trovano nel file /home/utente/.bash/rc e nel file /root/.bashrc.
Per visualizzare il loro contenuto:

Codice: Seleziona tutto

cat /home/<nome_utente>/.bashrc
o

Codice: Seleziona tutto

cat /root/.bashrc
Una volta che ci siamo resi conto della loro esistenza e del loro contenuto possiamo aggiungere nostri alias.
Ritornando all'esempio che volevamo creare, possiamo scrivere alcuni comandi - forse inutili - del tipo:
alias aggiornamento='yum check-update && yum -y update && yum clean all'
inserendoli nel file /root/.bashrc, quindi modificandolo in qualcosa di simile a:
[root@localhost ~]# cat /root/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias aggiornamento='yum check-update && yum -y update && yum clean all'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
perchè saranno lanciati da root.
Riavviamo il sistema.
Ora proviamo a dare il comando aggiornamento e il sistema eseguirà in esecuzione quei tre comandi impostati (controllo aggiornamento, aggiorna, pulisci cache).

È ovvio che per cose più complesse è consigliabile l'uso degli script bash.
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Modifichiamo i DNS per una rele locale o remota

Il DNS (domain name service) è un servizio che permette di passare dal nome di un dominio al suo indirizzo IP, o viceversa.
Il file di configurazione principale dei servizi di rete è:
/etc/host.conf
Questo file è scritto per determinare in che modo si intendono risolvere i nomi di dominio. Solitamente è cosi composto:
order hosts,bind
multi on
La riga order indica l'ordine dei servizi. In questo caso si fa riferimento prima al file /etc/hosts e quindi si interpella BIND che è il server DNS più usato su Internet, dai sistemi UNIX-like.
Le voci attribuibili a "multi" sono "on" e "off", usare o non usare la "libreria" in "/etc/hosts". Lasciatela cosi com'è di default a meno che vi serve cambiarla.

Il file:
/etc/hosts
permette di definire i nomi degli elaboratori abbinati al loro indirizzo IP, senza fare uso di un server DNS.

Il file:
/etc/networks
attribuisce i nomi agli indirizzi di rete.

Il file
/etc/resolv.conf
è quello in cui si settano i DNS. Viene usato per conoscere l'indirizzo o gli indirizzi dei servizi di risoluzione dei nomi di competenza della rete cui si appartiene. Se non si vuole gestire questo servizio nella propria rete locale, se ne deve indicare almeno uno esterno per accedere a Internet. Solitamente questo indirizzo è fornito dal proprio ISP, o dalla rete a cui siamo loggati (Esempio: ufficio, università, reti pubbliche, etc...)

Ndr: se non vi sono vincoli imposti dalla vostra rete consiglio di modificare il file /etc/resolv.conf secondo i valori di OpenDNS (molto più sicuro, veloce e "democratico"...), quindi modificandolo nelle sole righe:
nameserver 208.67.220.220
nameserver 208.67.222.222
Ndr: in /etc/resolv.conf è possibile inserire fino a tre nameserver in contemporanea!

Per rendere non modificabile il file /etc/resolv.conf da processi come "networkmanager" si può usare la sintassi:

Codice: Seleziona tutto

chattr +i /etc/resolv.conf
Per rendere, invece, modificabile il file /etc/resolv.conf da processi come "networkmanager" si può usare la sintassi:

Codice: Seleziona tutto

chattr -i /etc/resolv.conf
i sta per "immutabile"!
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Generare password senza l'utilizzo di ranpwd

Lanciamo il comando:

Codice: Seleziona tutto

cat /dev/urandom | tr -dc '[:upper:] [:lower:]' | fold -w XXX | head -n YYY
dove:
XXX è quanto lunga deve essere la password;
YYY è quante password vogliamo generare;

e se la voglio più complessa aggiungo la stringa [:graph:] al comando tr trasformandolo in:

Codice: Seleziona tutto

cat /dev/urandom | tr -dc '[:upper:] [:lower:] [:graph:]' | fold -w XXX | head -n YYY
... e ne escono delle belle! :asd:

per coloro che non vogliono installare nulla! ;)
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Collegamenti fisici e simbolici: pro, contro e come crearli

In questa mini-guida differenziamo i link hard (o fisici) dai soft-link (o simbolici).
In Linux, come ogni altro sistema basato UNIX, il comando per creare i link è:

Codice: Seleziona tutto

ln <nome_file_1> <nome_file_2>
Questo crea link fisici. Per creare link simbolici si aggiune l'opzione -s, trasformando la sintassi in:

Codice: Seleziona tutto

ln -s <nome_file_1> <nome_file_2>
.

Ora vediamo la differenza tra i due comandi.

Visulizziamo il comando e l'output seguente:
[user@localhost ~]$ ls -il Video/Webcam/Video.wmv
6291458 -rwxrw-rw- 1 user user 533528 19 ott 2009 Video/Webcam/Video.wmv
Notiamo le informazioni che ci interessano al momento:
1) il primo numero (6291458) è l'inode di riferimento del file Video.wmv;
2) si tratta di un file regolare: viene indicato con la il carattere '-' (trattino);
3) la sfilza "rwxrw-rw-" indicano i permessi che si hanno per quel file;
4) il numero prima del proprietario, 1 in questo caso, indica quanti riferimenti ha il file. In questo caso ha l'unico riferimento a se stesso.
5) dimensione del file "533528".

Creiamo un link fisico di Video.wmv con:

Codice: Seleziona tutto

[user@localhost Webcam]$ ln Video.wmv Video_LF.wmv
Ho creato cosi il link fisico di Video nominandolo Video_LF (link fisico!).
Vediamo l'output di ls -il:
[user@localhost Webcam]$ ls -il
6291458 -rwxrw-rw- 2 user user 533528 19 ott 2009 Video_LF.wmv
6291458 -rwxrw-rw- 2 user user 533528 19 ott 2009 Video.wmv
Evidenziamo cosa è successo creando il link fisico:
1) il file ha lo stesso inode: quindi il file è lo stesso! Video_LF non è la copia di Video. Editando il file Video si edita anche il file Video_LF e viceversa. Se fosse una copia editando uno non si editerebbe l'altro.
2) entrambi sono file regolari. Hanno il carattere "-" prima dei permessi.
3) eredita i permessi: è lo stesso file!
4) il numero prima del proprietario è 2, e non più 1, perchè ora sono due i riferimenti allo stesso file: Video.wmv e Video_LF.wmv.
5) stessa dimensione fisica: è lo stesso file!

Il vantaggio del link fisico è che per cancellare il file definitivamente devo cancellare entrambi (Video.wmv e Video_LF.wmv) i riferimenti. Se cancellassi uno solo dei due, l'inode resterebbe intatto quindi il file sarebbe comunque raggiungibile dal riferimento esistente, cioè quello non cancellato.
Lo svantaggio del link simbolico infatti è che se cancelliamo il file/directory puntato, il link punta a qualcosa che non esiste!

Creiamo un link simbolico di Video.wmv con:

Codice: Seleziona tutto

ln -s Video.wmv Video_LS.wmv
Ho creato cosi il link simbolico di Video nominandolo Video_LS (link simbolico!).
Vediamo l'output di ls -il:
[user@localhost Webcam]$ ls -il
6293190 lrwxrwxrwx 1 user user 9 31 dic 17.41 Video_LS.wmv -> Video.wmv
6291458 -rwxrw-rw- 1 user user 533528 19 ott 2009 Video.wmv
Evidenziamo cosa è successo creando il link simbolico:
1) il file ha inode diverso: allora non è lo stesso file!Se cancellassi il file puntato, cioè il file Video_LS.wmv, il file Video_LS.wmv punterà ad un file inesistente.
2) Video.wmv è un file regolare (ha il "-"), mentre Video_LS.wmv è un collegamento (ha il carattere "l" prima dei permessi).
3) I permessi del file Video_LS.wmv sono sempre "permessevi con tutti", tanto quelli che poi contano sono i permessi del file puntanto (Video.wmv in questo caso).
4) il numero dei riferimenti è 1: non creo un "nome aggiuntivo", ma creo un altro file che contiene il puntatore al file o alla directory.
5) la dimensione è diversa: il file Video_LS.wmv è un "collegamento"!
6) Ai file di tipo "l", come nel caso di Video_LS.wmv, viene inserito il file/directory puntato.

Il vantaggio del link simbolico è che posso creare un link ad un file/directory e soprattutto quando si vuole creare un link ad un file/directory che si trova all'interno di un dispositivo diverso o addirittura in un filesystem diverso.

A fronte di quanto su detto possiamo dire che introdurre o no l'opzione -s, crea un nuovo file mentre il comando ln senza opzioni crea un secondo nome ma non un secondo file.

NdR: il suffisso *_LF e *_LS gli ho usati solo a scopo di diversificare i file da quello originario.
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Gestire i permessi di accesso a file e directory

Questa mini-guida vi potrà essere utile, soprattutto se siete alle prime armi, per gestire i permessi riferiti a file e directory.
Come sappiamo Linux, a differenza di Windows, ha una, concedetemi di dire, "vera" gestione degli utenti: cioè ha la capacità di attribuire a ogni file e directory chi è il suo proprietario, chi può leggerlo, scriverlo ed infine eseguirlo.

Il comando per visualizzare gli attributi è ls con l'opzione -l (è una elle!).
Ad esempio:
[user@localhost Webcam]$ ls -l /home/user/Video/Webcam/
-rwxrw-rw- 1 user user 533528 19 ott 2009 Video.wmv
Si ricorda che il carattere indicato prima dei permessi indica il tipo di file, che possono essere:
- file regolare
d directory (esatto: la directory è un file che contiene le informazioni sui file contenuto nella directory)
l link (collegamento)
b periferica a blocchi con buffer
c periferica a caratteri con buffer
u periferica a caratteri senza buffer
p pipe FIFO
s socket
Gli altri 9 caratteri (nel nostro caso "rwxrw-rw-") indicano i permessi di accesso al file. I file possono essere acceduti o meno da tre categorie di utenti: il proprietario del file, il gruppo di utenti a cui appartiene il proprietario ed infine tutti gli altri utenti che posseggono un account sul sistema.

NdR: il proprietatrio del file è il primo "nome" indicato sulla stringa, in questo caso "user"
Il gruppo di appartenenza del proprietario è il secondo "nome" indicato nella stringa: in questo caso "user".
Cioè nel nostro caso, user è un utente del gruppo user!

I permessi di accesso al file sono 9 caratteri suddivisi in blocchetti di 3. I primi 3 caratteri sono relativi al proprietario del file, i successivi 3 sono relativi al gruppo al quale appartiene il proprietario e gli ultimi 3 sono relativi a tutti gli altri utenti del sistema. Ogni terna puo' contenere i caratteri '-', 'r', 'w' o 'x'. Il carattere '-' disabilita un permesso, ovunque esso si trova. Il carattere 'r' indica la possibilita' di leggere il file (r sta per read, cioe' lettura). Il carattere 'w' indica la possibilita' di scrivere il file (w sta per write, cioe' scrittura). Il carattere 'x' indica la possibilita' di eseguire il file (x sta per eXecute, cioe' esecuzione).

Quindi si ha:
- prima terna: per il proprietario -> lettura - scrittura - esecuzione;
- seconda terna: per il gruppo del proprietario -> lettura - scrittura - esecuzione;
- terza terna: per i restanti utenti del sistema -> lettura - scrittura - esecuzione.

Quindi se osserviamo la prima terna allora stiamo considerando i permessi di accesso al file posseduti dal proprietario, se osserviamo la seconda terna stiamo considerando i permessi posseduti dal gruppo a cui appartiene il proprietario ed infine, se osserviamo la terza terna, stiamo considerando i permessi di accesso posseduti da tutti gli altri utenti su tale file.

Nel nostro caso i pemessi sono "rwxrw-rw-" quindi:
- prima terna: si riferisce al proprieatario che può leggere, scrivere ed eseguire;
- seconda terna: si riferisce al gruppo del proprieatario: che può leggere, scrivere ma non eseguire;
- terza terna: si riferisce ai restanti utenti del sistema: che possono leggere, scrivere ma non eseguire;

Quando creiamo un file, questo eredita i permessi che possiede la directory.

È possibile cambiare tali permessi mediante il comando chmod. L'utente root e' il proprietario di tutti i file del sistema, pertanto puo' leggere, scrivere ed eseguire qualsiasi file. Inoltre l'utente root puo' modificare i permessi dei file in modo da allargare o restringere l'accesso ad alcuni file agli altri utenti del sistema. Generalmente l'utente possiede una propria directory (/home/user1 /home/user2 ...) all'interno della quale potra' creare, modificare eseguire e leggere qualsiasi file.

Esistono vari modo per cambiare i permessi. Unico è il comando "chmod".

Un primo modo è quello di elencare le variazioni di permessi ed un elenco di file sui quali agire. Per abilitare un permesso occorre usare il simbolo '+' affianco al tipo di permesso che si desidera modificare. Ad esempio la stringa '+w' abilita il permesso di scrittura mentre la stringa '+x' abilita il permesso di esecuzione. Al contrario per disabilitare un permesso occorre usare il simbolo '-'. E' possibile usare una qualsiasi combinazione di questi simboli. Ad esempio, il comando:

Codice: Seleziona tutto

chmod +w-x Video.wmv
abilita la scrittura e disabilita l'esecuzione del file 'Video' per tutti gli utenti. Per specificare la tipologia di utenti ai quali abilitare o disabilitare dei permessi esistono 3 simboli: 'u', 'g' ed 'o'. Il simbolo 'u' sta per user ed indica il proprietario del file, il simbolo 'g' sta per group ed indica il gruppo di utenti del quale fa parte il proprietario ed infine 'o' sta per other, cioe' tutti gli altri utenti. Il simbolo che specifica la categoria di utenti per i quali si desidera modificarne i permessi va specificato prima degli altri simboli. Ad esempio, il comando:

Codice: Seleziona tutto

chmod g+w-x Video.wmv
abilita il gruppo di utenti del quale fa parte il proprietario del file per la scrittura e li disabilita per l'esecuzione. Per abilitare piu' permessi non occorre ripetere il simbolo '+' piu' volte, cosi' come non e' necessario per il simbolo '-'. Ad esempio per abilitare sia la lettura che la lettura si puo' scrivere +rw mentre per abilitare in lettura e disabilitare la scrittura e l'esecuzione occorrera' scrivere +r-wx e cosi' via.

Per specificare tutte le categorie si puo' usare anche il simbolo 'a', tale simbolo infatta sta per all, cioe tutti. E' da notare che tra i vari simboli non esiste alcuno spazio, occorre infatti scrivere tutti i simboli uno affianco all'altro senza interporre spazi.

Il modo più semplice utilizza le cosidette maschere binarie. È possibile specificare i permessi per ogni categoria di utenti singolarmente usando il metodo simbolico ma e' anche possibile specificare tutti i permessi di tutte le categorie di utenti contemporaneamente usando le maschere binarie. Il vantaggio delle maschere binarie e' la possibilita' di cambiare tutti i permessi usando un solo comando.
In una maschera binaria le tre categorie di utenti ossia le tre terne di simboli diventano 3 cifre in formato ottale, nel senso che ciascuna categoria e' rappresentata da un numero in base 8. Ogni numero ottale e' equivalente ad un numero di 3 cifre binarie:
0 - 000
1 - 001
2 - 010
3 - 011
4 - 100
5 - 101
6 - 110
7 - 111
Considerando ciascuno di questi 3 numeri binari come uno switch, cioe' possiamo abilitare o disabilitare un permesso. Il primo numero corrisponde al permesso di lettura, il secondo al permesso di scrittura ed il terzo al permesso di esecuzione.

Il numero zero corrisponde ad un permesso disabilitato, mentre il numero 1 corrisponde ad un permesso abilitato.
Ad esempio osserviamo come la cifra ottale 5 ad esempio, corrisponda alla cifra binaria 101, cioe' significa lettura abilitata, scrittura disabilitata ed esecuzione abilitata. Cosi' 000 disabilita tutti i permessi mentre 111 al contrario li abilita tutti. Tradotto in base ottale significa che 0 disabilita tutti i permessi mentre 7 li abilita tutti, 4 abilita solo la lettura, 1 solo l'esecuzione e cosi' via. Ecco la corrispondenza con i simboli visti precedentemente:
0 - 000 - ---
1 - 001 - --x
2 - 010 - -w-
3 - 011 - -wx
4 - 100 - r--
5 - 101 - r-x
6 - 110 - rw-
7 - 111 - rwx
A questo punto risulta evidente che per rappresentare le 3 terne corrispondenti alle tre categorie di utenti sono sufficienti 3 cifre ottali. La prima cifra ottale infatti e' relativa al proprietario del file, la seconda al gruppo a cui appartiene e la terza a tutti gli altri utenti del sistema. Quindi ad esempio, usando questo sistema con 000 disabilitiamo tutti i permessi a tutti gli utenti proprietario compreso (non consigliabile), mentre con 777 abilitiamo tutti i permessi a tutti gli utenti (altamente non consigliabile).

Ora evidenziamo un piccolo trucco e teniamo a mente
4 - 100 - r--
2 - 010 - -w-
1 - 001 - --x
queste cifre ottali.
La cifra ottale 4 abilita il permesso in lettura, la cifra 2 il permesso in scrittura e la cifra 1 il permesso in esecuzione.
Bene, a questo punto per ricavare tutte le combinazioni di permessi possibili è sufficiente sommare queste 3 cifre ottali. Ad esempio, per abilitare lettura e scrittura occorre sommare 4 e 2 per ottenere 6 (che come si puo' osservare nella tabella precedente corrisponde proprio alla stringa 'rw-' cioe' lettura e scrittura abilitate ed esecuzione disabilitata). Per abilitare lettura ed esecuzione è sufficiente sommare 4 ad 1 per ottenere 5 (cioe' 'r-x').

Quindi per ottenere i permessi ('rwxrw-rw-') che il nostro file Video.wmv ha, bisognava dare:

Codice: Seleziona tutto

chmod 766 Video.wmv
Ma come si fa ad assegnare un proprietario e/o gruppo ad una directory e/o file?

Usiamo il comando "chown", con la sintassi

Codice: Seleziona tutto

chown nomeproprietario:nomegruppo nomefile
Faccio un esempio:

Codice: Seleziona tutto

chown user:suser nome_file
Con questo comando abbiamo impostato user come proprietario e suser come gruppo.

Sostituendo nome_file con nome_directory e se aggiungiamo il parametro opzionale -R lo applichiamo in modo ricorsivo a tutte le sottodirectory.
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Trovare facilmente comandi lanciati in passato di cui non ricordiamo la sintassi

Quante volte è successo di conoscere il comando, studiarsi le varie opzioni per meglio utilizzarlo e poi non usarlo per un po'... e dimenticarsene la sintassi esatta? A me capita spesso!
NdR: ricordo che i comandi dati vengono salvati in un file nascoto denominato ".bash_history", presente in ogni directory utente, anche in root.
Esiste un comando che ci fa visualizzare quel che cerchiamo molto velocemente. Il comando è:

Codice: Seleziona tutto

history
Ecco la parte finale del mio-root history:
[root@localhost ~]# history | tail -n 10
993 /boot/exit
994 exit
995 history | grep mount
996 mount /dev/sda5 /mnt/gentoo/ && mount -t proc none /mnt/gentoo/proc && mount -o bind /dev/ /mnt/gentoo/dev && chroot /mnt/gentoo/
997 poweroff
998 grub
999 mount /dev/sda5 /mnt/gentoo/ && mount -t proc none /mnt/gentoo/proc && mount -o bind /dev/ /mnt/gentoo/dev && chroot /mnt/gentoo/
1000 history
1001 history | tail -n 10
Una cosa che faccio spesso è montare in chroot Gentoo da Fedora...cosi posso sperimentare/compilare su Gentoo usando i programmi che normalmente uso su Fedora, ma non ricordo mai (esempio) la sintassi per montare in bind i device o in proc i processi e allora ricordo che posso utilizzare history:
[root@localhost ~]# history | grep mount
934 mount -t proc none /mnt/gentoo/proc
935 mount -o bind /dev/ /mnt/gentoo/dev
938 mount /dev/sda5 /mnt/gentoo/
939 mount -o bind /dev/ /mnt/gentoo/dev
940 mount -t proc none /mnt/gentoo/proc
943 mount /dev/sda5 /mnt/gentoo/
944 mount -t proc none /mnt/gentoo/proc
945 mount -o bind /dev/ /mnt/gentoo/dev
955 mount /dev/sda5 /mnt/gentoo/
956 mount -o bind /dev/ /mnt/gentoo/dev
957 mount -t proc none /mnt/gentoo/proc
983 history | grep mount
984 mount /dev/sda5 /mnt/gentoo/
985 mount -t proc none /mnt/gentoo/proc
986 mount -o bind /dev/ /mnt/gentoo/dev
995 history | grep mount
996 mount /dev/sda5 /mnt/gentoo/ && mount -t proc none /mnt/gentoo/proc && mount -o bind /dev/ /mnt/gentoo/dev && chroot /mnt/gentoo/
999 mount /dev/sda5 /mnt/gentoo/ && mount -t proc none /mnt/gentoo/proc && mount -o bind /dev/ /mnt/gentoo/dev && chroot /mnt/gentoo/
1003 history | grep mount
..solo una parte...

Noto che i vari che mi servono sono:
984 mount /dev/sda5 /mnt/gentoo/
985 mount -t proc none /mnt/gentoo/proc
986 mount -o bind /dev/ /mnt/gentoo/dev
e allora posso lanciare, in questo caso da root, il comando:

Codice: Seleziona tutto

!984 && !985 && !986
al quale se aggiungo anche chroot:

Codice: Seleziona tutto

!984 && !985 && !986 && chroor /mnt/gentoo
mi trovo "chrootato" in Gentoo.

NdR: potevo benissimo fare direttamente:

Codice: Seleziona tutto

!996
;)
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Sovrascrivere il vostro disco/chiavetta per impedire il recupero dei dati

Scrivo questo suggerimento per chi avesse intenzione di vendere il proprio HDD e quindi vorrebbe cancellare definitivamente i dati senza ovviamente distruggerlo. Molti diranno: non basta formattare l'intero disco? La risposta è certo che no.
Formattare un disco significa reimpostare il file system e quindi verranno "resettate" le informazioni che permetteranno l'accesso ai dati desiderati, ma non i dati stessi (che quindi ci sono ancora!).
Quindi, anche se si è formattato un disco, si ha sempre la possibilità di ricreare le "informazioni" e ricostruire il file system.

Allora dobbiamo sovrascrivere i dati per "cancellare" i nostri dati. (NdR: la memoria può solo essere scritta e letta!).
Allora da root, preferibilmente da una distribuzione live, possiamo dare il comando:

Codice: Seleziona tutto

dd if=/dev/zero of=/dev/sda bs=1M
per scrivere tutti i byte del nostro discosda a 0.

Per migliorare il comando precedente possiamo dare:

Codice: Seleziona tutto

dd if=/dev/urandom of=/dev/sda bs=1M
per scrivere su tutti i byte del nostro disco sda delle informazioni random.

Inoltre se volessimo cancellare qualsiasi tipo di informazione dal MBP (Master Boot Program) contenuto nel MBR (Master Boot Record), cosi da non lasciare traccia anche su come era partizionato il disco e altre informazioni a basso livello, possiamo dare:

Codice: Seleziona tutto

dd if=/dev/zero of=/dev/sda bs=446 count=1
dove in bs specifichiamo la dimensione di memoria da scrivere, appunto il 446 byte, e con count specifichiamo il numero di blocchi.

È ovvio che potete "estendere" questo metodo alle singole partizioni - non so per quale motivo - specificando al parametro of la partizione da raggiungere (sda1, sda2,..., sdb1 o quel che si voglia).

Ovviamente vi suggerisco sempre di guardare:

Codice: Seleziona tutto

man dd
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Settare all'avvio nel kernel risoluzione e profondità colore per la VGA

Riporto qui i vari codici che possiamo aggiungere alla riga del kernel che vogliamo avviare settando la risoluzione e i colori.
Va riportato l'opzione vga seguita dal numero.
Esempio: scrivere vga=792, se volessimo settare una risoluzione di 1024x768 con colori da 24bit!

_______800×600___1024×768__1152×864___1280×1024__1600×1200
8 bit ___vga=771____vga=773___vga=353____vga=775____vga=796
16 bit __vga=788____vga=791___vga=355____vga=794____vga=798
24 bit__vga=789____vga=792_____###______vga=795____vga=799


Spero vi sia utile ;)

NdR: per editare il kernel basta selezionarlo, premere il tasto e, scrivere in fondo l'opzione desiderata, premere il tasto invio per dare conferma delle modifiche effettuate e avviare premendo il tasto b con le modifiche effettuate.

Nulla vieta di inserire la modifica editando il file xorg.conf!
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Rispondi