LINUX

Come gestire gli ACL di Linux usando Setfacl e Getfacl

i comandi linux setfacl e getfacl

Il comando Linux setfacl consente agli utenti di impostare elenchi di controllo degli accessi estesi su file e directory. Normalmente, usando il comando chmod, sarai in grado di impostare i permessi per proprietario/gruppo/altri. Ma nel caso in cui tu possa aver bisogno di concedere permessi sui file anche ad altri utenti, questo non può essere fatto usando chmod. Setfacl ti aiuterà a sbarazzarti di tali problemi.

Ad esempio, non possiamo configurare set di autorizzazioni diversi per utenti diversi sulla stessa directory o file. Pertanto, sono state implementate le liste di controllo degli accessi (ACL). È possibile visualizzare l’ACL corrente impostato su file e directory utilizzando il comando getfacl.

Per usare setfacl su un file/directory, il filesystem residente dovrebbe avere il supporto acl abilitato. Se il file system non supporta acl, riceverai l’errore “operazione non supportata”. In questo caso, è necessario aggiungere il supporto acl al file system in /etc/fstab come segue e quindi rimontare il file system.

Controlla se il kernel ha il supporto ACL

Eseguire il comando seguente per verificare la compatibilità ACL per il file system e l’opzione POSIX_ACL=Y (se è presente N invece di Y, significa che il kernel non supporta ACL e deve essere ricompilato).

root@linoxide:/home# grep -i acl /boot/config*
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HFSPLUS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

Verifica se il file system supporta gli ACL

Puoi provare con:

$ cat /etc/fstab

Su alcuni sistemi guardando fstab non ti mostrerà se il filesystem supporta acl, ma mostrerà solo “predefiniti” come opzioni di montaggio:

root@linoxide:/home# cat /etc/fstab
LABEL=cloudimg-rootfs	/	 ext4	defaults	0 0

In questo caso, puoi utilizzare il seguente comando per verificare se il file system è montato con il supporto acl:

root@linoxide:/home# tune2fs -l /dev/sda1
tune2fs 1.42.9 (4-Feb-2014)
Filesystem volume name:   cloudimg-rootfs
Last mounted on:          /
Filesystem UUID:          2e294961-ce03-483e-a53e-ff3fc4514bd4
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl

Se il tuo filesystem non è stato montato con l’opzione “acl”, puoi montarlo fornendo l’opzione necessaria:

# mount -o remount -o acl /dev/sda1

Controlla i pacchetti richiesti

Per utilizzare gli ACL di Linux, assicurati di aver installato i pacchetti necessari. Di seguito sono riportati i pacchetti richiesti che devono essere installati utilizzando yum o apt-get.

Per i sistemi basati su RedHat:

$ sudo yum install nfs4-acl-tools acl libacl

Per basato su Debian:

$ sudo apt-get install nfs4-acl-tools acl

Ora possiamo passare attraverso diversi usi di “setfacl” comando. Innanzitutto, dovremmo creare una cartella chiamata “test_folder” come utente root.

root@linoxide:/home# mkdir test_folder

root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

1. Fornitura di ACL per un singolo utente

Supponiamo che tu voglia dare pieno accesso all’utente “test” (può essere qualsiasi utente) alla directory “test_folder”. Questo può essere fatto usando setfacl come segue.

root@linoxide:/home# setfacl -m u:test:rwx test_folder/

root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
user:test:rwx
group::r-x
mask::rwx
other::r-x

2. Fornire ACL per tutti gli utenti di un gruppo

Se vuoi concedere il permesso di accesso in scrittura a tutti gli utenti del gruppo “test” nella cartella “test_folder”, puoi farlo nel modo seguente.

root@linoxide:/home# setfacl -m g:testg:w test_folder/
  
root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
user:test:rwx
group::r-x
group:testg:-w-
mask::rwx
other::r-x

3. Revoca acl di un utente/gruppo

Se vuoi revocare i permessi che abbiamo concesso all’utente Test e il gruppo testPuoi usare setfacl ordinare come segue.

root@linoxide:/home# setfacl -x u:test,g:testg test_folder/

root@linoxide:/home# getfacl test_folder/
# file: test_folder/
# owner: root
# group: root
user::rwx
group::r-x
mask::rwx
other::r-x

4. Copiare l’ACL di un file/directory in un altro

Supponiamo che tu voglia avere lo stesso set ACL di test_folder e su test_folder1, puoi impostarlo copiando l’ACL come segue.

root@linoxide:/home# getfacl test_folder/ > acl.txt
root@linoxide:/home# mkdir test_folder1
root@linoxide:/home# setfacl -M acl.txt test_folder1/
root@linoxide:/home# getfacl test_folder1/
# file: test_folder1/
# owner: root
# group: root
user::rwx
user:test:rwx
group::r-x
group:testg:-w-
mask::rwx
other::r-x

Conclusione

In questo tutorial abbiamo visto l’utilizzo di base degli strumenti ACL getfacl e setfacl per impostare e revocare alcuni permessi su test_folder. Abbiamo anche imparato come controllare il supporto del kernel e del filesystem acl e come installare i pacchetti richiesti. Se hai pensieri o commenti su Linux acl, scrivili nella sezione commenti qui sotto.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close