Ultima modifica:
In questo articolo vedremo quali sono e come trattare i permessi su sistemi Unix & Unix-Like.
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
per avere più informazioni sui file:
Bash:
[ghost@hackware ~]
% ll # alias per "ls -l"
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 10 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 (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:
[ghost@hackware ~]
% 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:
[ghost@hackware ~]
% 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
chmod
di dare a tutti i permessi di scrittura, lettura ed esecuzione, se volessimo rendere uno script eseguibile dovremmo fare:
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.2.2 chown, cambiare owner
Con il comandochown
si può cambiare owner (volendo anche gruppo) di un file/cartella:
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,, solo il gruppo, si potrebbe fare anche con chown
, la sintassi è:
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.