Ultima modifica:
In questo articolo vedremo quali sono e come trattate i permessi su sistemi Unix & Unix-Like ( BSD, Linux, Mac Os [...] )
Il thread si dividerà in una parte di teoria e una pratica, nella prima spiegheremo il significato di proprietario gruppo, permessi e altro
Nel secondo metteremo in atto quello imparato poco prima, inizieremo a usare comandi come chmod, chown, chgrp [...]
Linux nasce con un concetto multi-users a differenza di Windows, perciò saper gestire i permessi è importante per evitare brutte situazioni.
1 Quali sono i permessi e come posso vederli
I permessi si dividono in tre:- r ( read ), permette il diritto di lettura
- w ( write ), permette il diritto di scrittura
- x ( exec ), permette il diritto di esecuzione
ls -l
nella shell per avere più informazioni sui file:
Bash:
[[email protected] ~]
% ll
total 124
drwxr-xr-x 2 ghost ghost 4096 Jan 18 16:11 Desktop
drwxr-xr-x 2 ghost ghost 4096 Jan 26 20:56 Downloads
drwxr-xr-x 2 ghost ghost 4096 Jan 25 21:34 Telegram
drwxr-xr-x 3 ghost ghost 4096 Jan 26 21:18 'VirtualBox VMs'
drwxr-xr-x 2 ghost ghost 4096 Jan 23 21:13 Wallpapers
-rw-r--r-- 1 ghost ghost 83087 Jan 27 16:48 copertina.png
drwxr-xr-x 2 ghost ghost 4096 Jan 23 14:21 iso
-rwxr-xr-x 1 ghost ghost 27 Jan 27 15:01 listener.sh
-rw-r--r-- 1 ghost ghost 85 Jan 22 19:37 readme.txt
drwxr-xr-x 3 ghost ghost 4096 Jan 23 18:15 rkit
-rw-r--r-- 1 ghost ghost 5 Jan 27 15:10 root.txt
1.1 Colonna dei permessi
Si divide in tre ed è composta da 9 ( 10 punti, ma il primo indica l'oggetto ) punti, ogni tripletta è pensata per il proprietario ( la 1° ), il gruppo ( la 2° ), tutti gli altri utenti ( la 3° )- Il primo elemento indica l'oggetto, se inizia con
-
è un file,d
è una directory,l
è un symlink ( ln -s src dest ) - La prima tripletta indica l'owner, nel caso del file readme.txt può essere scritto e letto dall'owner ( ghost ) ( rw- )
- La seconda tripletta indica il gruppo, riprendendo sempre il file
readme.txt
gli utenti appartenenti al gruppoghost
potranno leggere solo ( r-- ) - La terza e ultima tripletta indica gli others ( gli altri utenti ), anche questi hanno solo permessi di lettura ( r-- )
ls -l | grep '^d'
, ossia lista tutto greppando le stringhe che partono per 'd'
:
Bash:
[[email protected] ~]
% ll | grep '^d'
drwxr-xr-x 2 ghost ghost 4096 Jan 18 16:11 Desktop
drwxr-xr-x 2 ghost ghost 4096 Jan 27 18:57 Downloads
drwxr-xr-x 2 ghost ghost 4096 Jan 25 21:34 Telegram
drwxr-xr-x 3 ghost ghost 4096 Jan 26 21:18 VirtualBox VMs
drwxr-xr-x 2 ghost ghost 4096 Jan 23 21:13 Wallpapers
drwxr-xr-x 2 ghost ghost 4096 Jan 23 14:21 iso
drwxr-xr-x 3 ghost ghost 4096 Jan 23 18:15 rkit
1.2 Colonna dell'owner
In questa colonna è specificato l'owner del file, ossia il proprietario, non è per forza il creatore, io potrei creare un filescemochilegge.txt
e *chownarlo ad un altro utente, cambiando così owner ( e volendo anche gruppo ), come abbiamo detto l'owner ha permessi di scrittura e lettura, detto ciò può eliminarlo, modificarlo e leggerlo, non lo può eseguire a meno che non aggiunga il parametro x
a permessi.1.3 Colonna del group
Questa colonna specifica il gruppo,Anche in questo caso il gruppo si può cambiare, vale lo stesso discorso come per l'owner.
Per listare i gruppi possiamo *cattare il file
/etc/group
:
Bash:
[[email protected] ~]
% cat /etc/group
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
wheel:x:4:ghost
tty:x:5:ghost
tape:x:6:
daemon:x:7:
floppy:x:8:
disk:x:9:ghost
lp:x:10:
dialout:x:11:
audio:x:12:ghost,_bluez_alsa
video:x:13:ghost
utmp:x:14:
adm:x:15:
cdrom:x:16:
optical:x:17:
mail:x:18:
storage:x:19:
scanner:x:20:
network:x:21:ghost
kvm:x:24:
input:x:25:
plugdev:x:26:
usbmon:x:27:
nogroup:x:99:
users:x:100:
xbuilder:x:101:
_dhcpcd:x:999:
_uuidd:x:998:
dbus:x:22:
ghost:x:1000:
vboxusers:x:997:ghost
bluetooth:x:996:ghost
_bluez_alsa:x:995:
- La prima specifica il nom del gruppo
- La seconda specifica se c'è una password
- La terza specifica l'id
- La quarta gli appartenenti al gruppo
ghost
fa parte dei gruppi vboxusers
,bluetooth
, network
. audio
, video
, tty
, disk
e wheel
.Con questa immagine dovrebbe essere un po più chiara la situazione:
2 Gestire i permessi con chmod, chown, chgrp
Adesso vediamo come gestirli tramite i comanidi citati sopra2.1 chmod
Per modificare i permessi possiamo su file e cartelle possiamo usare chmod, in due sintassi differenti, ottale & simbolica:Ottale usa i numeri da 0 a 7:
- 0 - NULL
- 1 - x ( exec )
- 2 - w ( write )
- 3 - wx ( write & exec )
- 4 - r ( read )
- 5 - rx ( read & exec )
- 6 - rw ( read & write )
- 7 - rwx ( read & write & exec )
Bash:
chmod 777 listener.sh
Bash:
chmod 444 listener.sh
- a - all
- g - group
- o - others
- u - owner
- r - read
- w - write
- x - exec
- + - aggiunge un permesso
- - - leva un permesso
- = - imposta un permesso
Bash:
chmod a=rwx listener.sh
Bash:
chmod +x listener.sh
./listener.sh
Con l'opzione
-R, --recursive
cambi i permessi di una cartella e di tutto il suo contenuto all'interno, vale anche per tutti gli altri comandi che vedremo ( tolto usermod ).2.2 chown, cambiare owner
Con il comandochown
si può cambiare owner ( volendo anche gruppo ) di un file/cartella, la sintassi è la seguente:
Bash:
chown [owner] file # owner
chown [owner]:[group] file # owner & group
Bash:
useradd -d /home/ledzeppelin -s /bin/bash ledzeppelin
mkdir /home/ledzeppelin
, dato che siamo root la cartella appena creata appartiene a root:root
invece che ledzeppelin:ledzeppelin
:
Bash:
drwx------ 15 ghost ghost 4096 Jan 28 13:48 ghost
drwx------ 2 root root 4096 Jan 28 13:49 ledzeppelin
Bash:
chown ledzeppelin:ledzeppelin /home/ledzeppelin
Bash:
drwx------ 15 ghost ghost 4096 Jan 28 13:48 ghost
drwx------ 2 ledzeppelin ledzeppelin 4096 Jan 28 13:49 ledzeppelin
2.3 chgrp, cambiare group
chgrp
consente di cambiare il gruppo, non l'owner attenzione, solo il gruppo, si potrebbe fare anche con chown, la sintassi è easy:
Bash:
chgrp [group] file
Bash:
chgrp root readme.txt
readme.txt
ora potrà essere letto da tutti gli appartenenti al gruppo root
.Uscirà un altra guida dove vedremo il SUID ( Set User ID ) e Sticky bit.
./ghost