Setfacl-hulpprogramma’s instellen Toegangscontrolelijsten (ACL’s) van bestanden en mappen. Op de opdrachtregel wordt een reeks opdrachten gevolgd door een reeks bestanden (die op hun beurt kunnen worden gevolgd door een andere reeks opdrachten, enz.).
- De opties -m, en -X verwacht een ACL op de opdrachtregel. Meerdere ACL-vermeldingen worden gescheiden door komma’s (`,’). De opties -M, en -X lees een ACL uit een bestand of uit standaardinvoer. Het ACL-invoerformaat wordt beschreven in Sectie ACL-INVOER.
- De –set en –set-bestand opties stellen de ACL van een bestand of een map in. De vorige ACL wordt vervangen. ACL-vermeldingen voor deze bewerking moeten machtigingen bevatten.
- De -m (–wijzigen) en -M (–wijzig-bestand) opties wijzigen de ACL van een bestand of map. ACL-vermeldingen voor deze bewerking moeten machtigingen bevatten.
- De -x (–verwijder) en -X (–verwijder-bestand) opties verwijderen ACL-vermeldingen. Alleen ACL-vermeldingen zonder de permanenten veld worden geaccepteerd als parameters tenzij POSIXLY_CORRECT is gedefinieerd.
Bij het lezen van bestanden met de -M, en -X opties, accepteert setfacl de uitvoer die getfacl produceert. Er is maximaal één ACL-vermelding per regel. Na een hekje (`#’) wordt alles tot aan het einde van de regel als commentaar behandeld. Als setfacl wordt gebruikt op een bestandssysteem dat geen ACL’s ondersteunt, werkt setfacl op de machtigingsbits in de bestandsmodus. Als de ACL niet volledig in de machtigingsbits past, past setfacl de machtigingsbits in de bestandsmodus aan om de ACL zo goed mogelijk weer te geven, schrijft een foutmelding naar de standaardfout en retourneert met een exit-status groter dan 0.
Setfacl . gebruiken
Probeer eerst een basislijst in te stellen voor een map in uw thuismap. Aangezien je dit voor de eerste keer uitprobeert, moet je een nieuwe maken om mee te spelen. Op deze manier loopt u niet het risico uzelf buiten te sluiten voor belangrijke documenten. mkdir ~/acl-test
Gebruik vervolgens setfacl om een andere gebruiker op uw systeem toegang tot de map te verlenen. Setfacl gebruikt de -m vlag om de toegangscontrolelijsten voor een bestand te wijzigen. Dit betekent meestal het toevoegen van een gebruiker of groep. setfacl -mu:gebruikersnaam:rwx ~/acl-test/
De jij voordat de eerste dubbele punt het commando aangeeft, heb je het over een gebruikersnaam. De rwx na de tweede beurzen rlees, met wieritus, en eXecute-machtigingen. Hetzelfde werkt voor groepen door op te geven g in plaats van jij voor de eerste dubbele punt. setfacl -mg:groepsnaam:rwx ~/acl-test/
Het werkt hetzelfde als het vorige voorbeeld, behalve dat het machtigingen verleent aan de hele groep. De -X vlag werkt het tegenovergestelde van -m. Het zal de toegang tot de opgegeven gebruiker of groep intrekken. setfacl -xu:gebruikersnaam:w ~/acl-test/
De opdracht trekt de gebruiker de schrijftoegang tot de directory in. U kunt de machtigingen voor alle huidige gebruikers ook rechtstreeks wijzigen. Dit omvat de eigenaar van het bestand en eventuele extra gebruikers die machtigingen hebben gekregen. Dit is een soort snelkoppeling, waarbij de bestaande opdracht wordt gebruikt, maar de gebruikersnaam wordt weggelaten. setfacl -mu::rx ~/acl-test/
Dit geeft alle bestaande gebruikers lees- en uitvoerrechten, maar verwijdert schrijftoegang. Hetzelfde werkt met de -X markeren en machtigingen verwijderen. setfacl -xu::w ~/acl-test/
Dit is in wezen hetzelfde als het vorige voorbeeld, omgekeerd. Met setfacl kunt u ook de toegangscontrolelijsten van het ene bestand naar het andere kopiëren. Zorg ervoor dat uw gebruiker volledige toegang heeft tot de testmap en maak twee nieuwe bestanden om mee te werken. raak ~/acl-test/file{1,2}.txt . aan
Wijzig nu de machtigingen van het eerste bestand. setfacl -mu:gebruikersnaam:rx ~/acl-text/file1.txt
Nu kunt u de resultaten van getfacl, het commando voor het ophalen van de huidige ACL-info, naar setfacl pipen. getfacl ~/acl-test/file1.txt | setfacl –set-file=- ~/acl-text/file2.txt
De tweede vulling heeft dezelfde rechten als de eerste. Ten slotte kunt u alle uitgebreide ACL-vermeldingen die met de opdracht zijn gemaakt, verwijderen. Hierdoor blijft het bestand achter met de gebruikers- en groepsrechten die het oorspronkelijk had. Gebruik hiervoor de vlag -b. setfacl -b ~/acl-test/
Dat zijn de meest voorkomende toepassingen van setfacl. Als je dieper wilt duiken, is het volgende deel van deze gids een volledige technische analyse van de opdracht.
Technische uitsplitsing van Setfacl
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] het dossier …
setfacl –restore=bestand
Rechten
De bestandseigenaar en processen die CAP_FOWNER kunnen gebruiken, krijgen het recht om ACL’s van een bestand te wijzigen. Dit is analoog aan de machtigingen die nodig zijn voor toegang tot de bestandsmodus. (Op de huidige Linux-systemen is root de enige gebruiker met de CAP_FOWNER-mogelijkheid.)
Opties
-b, –verwijder-alles
- Verwijder alle uitgebreide ACL-vermeldingen. De basis-ACL-vermeldingen van de eigenaar, groep en anderen blijven behouden.
-k, –remove-default
- Verwijder de standaard ACL. Als er geen standaard-ACL bestaat, worden er geen waarschuwingen gegeven.
-n, –geen-masker
- Bereken het effectieve rechtenmasker niet opnieuw. Het standaardgedrag van setfacl is om de ACL-maskerinvoer opnieuw te berekenen, tenzij expliciet een maskerinvoer is opgegeven. Het maskeritem is ingesteld op de vereniging van alle rechten van de eigenaar van de groep en alle benoemde gebruikers- en groepsitems. (Dit zijn precies de vermeldingen die worden beïnvloed door de maskerinvoer).
–masker
- Herbereken het effectieve rechtenmasker, zelfs als er expliciet een ACL-maskeritem is opgegeven. (Zie de -n keuze.)
-d, –default
- Alle bewerkingen zijn van toepassing op de standaard-ACL. Reguliere ACL-vermeldingen in de invoerset worden gepromoveerd tot Standaard ACL-vermeldingen. Standaard ACL-vermeldingen in de invoerset worden genegeerd. (Er wordt een waarschuwing gegeven als dat gebeurt).
–restore=bestand
- Herstel een machtigingsback-up gemaakt door `getfacl -R’ of iets dergelijks. Alle machtigingen van een volledige directory-substructuur worden hersteld met behulp van dit mechanisme. Als de invoer eigenaaropmerkingen of groepsopmerkingen bevat en setfacl wordt uitgevoerd door root, worden de eigenaar en de groep die eigenaar is van alle bestanden ook hersteld. Deze optie kan niet worden gemengd met andere opties behalve `–test’.
–test
- Test modus. In plaats van de ACL’s van bestanden te wijzigen, worden de resulterende ACL’s weergegeven.
-R, –recursief
- Pas bewerkingen recursief toe op alle bestanden en mappen. Deze optie kan niet worden gemengd met `–restore’.
-L, –logisch
- Logische wandeling, volg symbolische links. Het standaardgedrag is het volgen van symbolische koppelingsargumenten en het overslaan van symbolische koppelingen die in submappen worden aangetroffen. Deze optie kan niet worden gemengd met `–restore’.
-P, –fysiek
- Fysieke wandeling, sla alle symbolische links over. Hiermee worden ook symbolische linkargumenten overgeslagen. Deze optie kan niet worden gemengd met `–restore’.
–versie
- Druk de versie van setfacl af en sluit af.
–helpen
- Help afdrukken met uitleg over de opdrachtregelopties.
Einde van opdrachtregelopties. Alle overige parameters worden geïnterpreteerd als bestandsnamen, zelfs als ze beginnen met een streepje. Als de bestandsnaamparameter een enkel streepje is, leest setfacl een lijst met bestanden uit de standaardinvoer.
ACL-vermeldingen
Het hulpprogramma setfacl herkent de volgende ACL-invoerindelingen:
[d[efault]:] [u[ser]:]uid [:perms]
- Machtigingen van een benoemde gebruiker. Machtigingen van de bestandseigenaar als uid is leeg.
[d[efault]:]g[roup]:gid [:perms]
- Machtigingen van een benoemde groep. Machtigingen van de groep die eigenaar is als gid is leeg.
[d[efault]:]m[ask][:] [:perms]
- Masker van effectieve rechten
[d[efault]:]uit[ther][:] [:perms]
- Machtigingen van anderen
Witruimte tussen scheidingstekens en niet-scheidingstekens wordt genegeerd. De juiste ACL-vermeldingen inclusief machtigingen worden gebruikt bij het wijzigen en instellen van bewerkingen. (opties -m, -M, –set en –set-bestand). Inzendingen zonder de permanenten veld worden gebruikt voor verwijdering van inzendingen (opties -X en -X). Voor uid en gid u kunt een naam of een nummer opgeven. De permanenten veld is een combinatie van karakters die de permissies aangeven: read (r), schrijven (w), uitvoeren (X), alleen uitvoeren als het bestand een map is of al uitvoerrechten heeft voor een gebruiker(X). Als alternatief kan de permanenten veld kan een octaal cijfer (0-7) zijn.
Automatisch aangemaakte items
Aanvankelijk bevatten bestanden en mappen alleen de drie basis-ACL-vermeldingen voor de eigenaar, de groep en anderen. Er zijn enkele regels waaraan moet worden voldaan om een ACL geldig te laten zijn:
- De drie basisitems kunnen niet worden verwijderd. Er moet precies één item zijn van elk van deze typen basisitems.
- Wanneer een ACL benoemde gebruikersitems of benoemde groepsobjecten bevat, moet deze ook een effectief rechtenmasker bevatten.
- Wanneer een ACL standaard ACL-vermeldingen bevat, moeten ook de drie standaard-ACL-basisvermeldingen (standaardeigenaar, standaardgroep en standaard overige) bestaan.
- Wanneer een standaard-ACL benoemde gebruikersitems of benoemde groepsobjecten bevat, moet deze ook een standaard effectief rechtenmasker bevatten.
Om de gebruiker te helpen deze regels te waarborgen, maakt setfacl onder de volgende voorwaarden vermeldingen van bestaande vermeldingen:
- Als een ACL benoemde gebruikers- of benoemde groepsitems bevat en er geen maskeritem bestaat, wordt een maskeritem gemaakt met dezelfde machtigingen als het groepsitem. Tenzij de -n optie wordt gegeven, worden de machtigingen van de maskerinvoer verder aangepast om de unie van alle machtigingen die door de maskerinvoer worden beïnvloed, op te nemen. (Zie de -n optie beschrijving).
- Als er een standaard-ACL-vermelding is gemaakt en de standaard-ACL geen eigenaar, groep die eigenaar is of een andere vermelding bevat, wordt een kopie van de ACL-eigenaar, eigenaar van een groep of andere vermelding toegevoegd aan de standaard-ACL.
- Als een standaard-ACL benoemde gebruikersitems of benoemde groepsitems bevat en er geen maskeritem bestaat, wordt een maskeritem toegevoegd met dezelfde machtigingen als de standaard standaard-ACL-groepsitem. Tenzij de -n optie wordt gegeven, worden de machtigingen van de maskerinvoer verder aangepast om de unie van alle machtigingen die door de maskerinvoer worden beïnvloed, op te nemen. (Zie de -noptie beschrijving).
Voorbeelden
- Een extra gebruiker leestoegang verlenen
- setfacl -mu:lisa:r bestand
- Schrijftoegang intrekken van alle groepen en alle benoemde gebruikers (met behulp van het effectieve rechtenmasker)
- setfacl -mm::rx bestand
- Een benoemde groepsvermelding verwijderen uit de ACL van een bestand
- setfacl -xg:staffbestand
- De ACL van het ene bestand naar het andere kopiëren
- getfacl-bestand1 | setfacl –set-file=- file2
- De toegangs-ACL kopiëren naar de standaard-ACL
- getfacl -a dir | setfacl -d -M- map
Conformiteit met Posix 1003.1e Draft Standard 17
Als de omgevingsvariabele POSIXLY_CORRECT is gedefinieerd, verandert het standaardgedrag van setfacl als volgt: Alle niet-standaard opties zijn uitgeschakeld. Het voorvoegsel “default:” is uitgeschakeld. De -X en -X opties accepteren ook toestemmingsvelden (en negeren ze).