Brug af setfacl
og getfacl
I det følgende ser vi hvorledes man deler en mappestruktur med en læsegruppe, i
eksemplet bestående af rav
, alice
og bob
.
Traditionelt i UNIX filsystemer har enhver fil og mappe en ejer, et gruppenavn
og en mode (tilstandsmaske), som angiver, hvilke rettigheder hhv. ejeren, gruppen
og andre har til filen. Se også manualsiden
chmod(2)
for en forklaring af rettighedsmasken.
POSIX access control lists (ACL) er en udvidelse af dette system af rettigheder, så man kan angive læse- og skriverettigheder pr. bruger.
For at det har den ønskede effekt, skal man først sætte tilstandsmasken til 0700, så det kun er ejeren, der som udgangspunkt har adgang.
rav@llama08:~$ mkdir repo rav@llama08:~$ chmod 0700 repo rav@llama08:~$ git init --bare repo rav@llama08:~$ setfacl -R -m alice:rwX repo rav@llama08:~$ setfacl -d -R -m alice:rwX repo rav@llama08:~$ setfacl -R -m bob:rwX repo rav@llama08:~$ setfacl -d -R -m bob:rwX repo rav@llama08:~$ setfacl -d -R -m rav:rwX repo rav@llama08:~$ getfacl repo # file: repo # owner: rav # group: users user::rwx user:alice:rwx user:bob:rwx group::--- mask::rwx other::--- default:user::rwx default:user:alice:rwx default:user:bob:rwx default:user:rav:rwx default:group::--- default:mask::rwx default:other::---
setfacl
tager et antal forskellige parametre.
De vigtigste er -R
(--recursive
), som udfører ændringen rekursivt, og -d
(--default
) som sætter default-rettighederne, dvs. rettigheder for nye
filer oprettet i mappen.
-m acl
tilføjer den givne rettighed på destinationen. I sin simpleste
opbygning er denne brugernavn:adgang
, hvor adgang
inkluderer r
(læse),
w
(skrive), x
(eksekvere) og/eller X
(indgang i mapper).