Vaak denken gebruikers bij het draaien van Linux zelden na over wie de eigenaar is van een bestand. Wanneer je echter een server draait, verandert de situatie. Om de veiligheid te vergroten, krijgt de server zijn eigen gebruiker. Het is niet ongewoon dat servers dezelfde groep gebruiken, zoals www-data
. Laten we nu eens kijken hoe deze functie werkt met bestanden en mappen. We zullen speciale aandacht besteden aan symbolische links, omdat deze problemen kunnen veroorzaken bij het gebruik van onveilige instellingen.
De standaard voor bestandspermissies kwam van Unix naar Linux. Dus elk object heeft een gebruiker
, daarnaast beschrijft de groep
de rechten vanandere
gebruikers(other
). De rechten bestaan uit drie onderdelen: lezen, schrijven, uitvoeren. Het umask
commando wordt gebruikt om rechten te wijzigen, maar de chown
commando's worden gebruikt om de eigenaar en groep direct te wijzigen. Het ls
commando kan gebruikt worden om de huidige permissies te bekijken.
Algemene weergave van het chgrp
commando:
$ chgrp [options] new_group file_name
Lijst met veelgebruikte opties voor het chgrp
commando:
-h
- werk direct met de symbolische links zelf;--dereference
- werk met bestanden, niet met de symbolische links zelf. Standaard gebruikt;-R
- recursieve verwerking van een map met al zijn inhoud;-H
- symbolische koppeling volgen en attributen van bestand/directory wijzigen. Gebruikt in combinatie met de -R
parameter;-L
- volg de symbolische link en ga verder met recursieve verwerking. Gebruikt in combinatie met de -R
parameter;-P
- wanneer je een symbolische link tegenkomt, verwerk deze dan alleen. Gebruikt in combinatie met de -R
parameter, is de standaardwaarde;--reference=file_name
- gebruik de voorbeeldgroep;-c
- uitvoer wijzigt alleen tijdens het verwerken;-v
- uitvoerinformatie over elk verwerkt object.Het eenvoudigste voorbeeld van het gebruik van het chgrp
commando. De volgende verandert het hele www-data
object voor het bestand
in de huidige map:
$ sudo chgrp www-data file.txt
En deze verandert de groep in www-data
voor de map map
:
$ sudo chgrp www-data folder
Het commando werkt op een zeer voorspelbare manier, door hun groep te veranderen. De objecten in de map blijven ongewijzigd. Als symbolische links worden behandeld, blijven hun attributen ongewijzigd, maar het object krijgt een nieuwe groep. Dit gedrag is vergelijkbaar met de afhandeling van de --dereference
parameter.
Bijvoorbeeld, deze commando's toegepast op symbolische links zullen werken zoals getoond in de schermafbeelding:
$ sudo chgrp www-data sym_file.txt
Laten we eens kijken hoe de -h
parameter die de attributen van een symbolische link wijzigt, zou werken:
$ sudo chgrp -h www-data sym_file
De groep is niet alleen ingesteld op de map, maar ook op alle bestanden erin. Merk op dat het gedrag is veranderd, nu worden bij het verwerken van een symbolische link de attributen ingesteld voor de link zelf, niet voor het object.
Laten we nog een paar voorbeelden bekijken om het verschil te zien tussen de -H
en -L
parameters. Onthoud dat ze samen met -R
gebruikt moeten worden :
$ sudo chgrp -RH www-data folder
Met -H
is het gedrag bij het verwerken van symbolische links veranderd, ze worden nu afgehandeld alsof de functies afzonderlijk worden uitgevoerd. De attributen van de verwijzingen veranderen niet, de attributen van de objecten zelf wel, en de recursieve verwerking stopt als je naar een map wisselt.
$ sudo chgrp -RL www-data folder
Het voert één functie uit - het verandert de groep van bestanden en mappen.
Bij het verwerken van symbolische koppelingen moet je extreem voorzichtig zijn om het systeem niet te beschadigen.