EXPLAINED: How to use "chmod" command [COMPLETE GUIDE]
Inhoudsopgave:
- Linux bestandsrechten
chmod
- Symbolische (tekst) methode
- Numerieke methode
- Een referentiebestand gebruiken
- Wijzig recursief de machtigingen van het bestand
- Werkt op symbolische links
- Bulkrechten wijzigen in bulk
- Conclusie
In Linux wordt toegang tot de bestanden beheerd via de bestandsrechten, attributen en eigendom. Dit zorgt ervoor dat alleen geautoriseerde gebruikers en processen toegang hebben tot bestanden en mappen.
Deze tutorial behandelt het gebruik van de opdracht
chmod
om de toegangsrechten van bestanden en mappen te wijzigen.
Linux bestandsrechten
Laten we, voordat we verder gaan, het basismodel voor Linux-machtigingen uitleggen.
In Linux is elk bestand gekoppeld aan een eigenaar en een groep en toegewezen aan toegangstoegangsrechten voor drie verschillende klassen gebruikers:
- De eigenaar van het bestand. De groepsleden. Anderen (alle anderen).
Bestandseigendom kan worden gewijzigd met de opdrachten
chown
en
chgrp
.
Er zijn drie soorten bestandstoestemmingen die op elke klasse van toepassing zijn:
- De leesrechten. De schrijfrechten. De machtiging uitvoeren.
Met dit concept kunt u opgeven welke gebruikers het bestand mogen lezen, naar het bestand kunnen schrijven of het bestand mogen uitvoeren.
Bestandsrechten kunnen worden bekeken met de opdracht
ls
:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
Het eerste teken toont het bestandstype. Het kan een normaal bestand (
-
), een map (
d
), een symbolische link (
l
) of een ander speciaal bestandstype zijn.
De volgende negen tekens vertegenwoordigen de bestandsrechten, drie triplets van elk drie tekens. Het eerste triplet toont de eigenaarsrechten, de tweede groepstoestemmingen en het laatste triplet toont alle andere rechten. De machtigingen kunnen een andere betekenis hebben, afhankelijk van het bestandstype.
In het bovenstaande voorbeeld (
rw-r--r--
) betekent dat de bestandseigenaar lees- en schrijfrechten heeft (
rw-
), de groep en anderen alleen leesrechten hebben (
r--
).
Elk van de drie toestemmings-drieling kan worden opgebouwd uit de volgende tekens en heeft verschillende effecten, afhankelijk van of deze zijn ingesteld op een bestand of op een map:
Effect van machtigingen op bestanden
Toestemming | Karakter | Betekenis in bestand |
---|---|---|
Lezen |
-
|
Het bestand is niet leesbaar. U kunt de inhoud van het bestand niet bekijken. |
r
|
Het bestand is leesbaar. | |
Schrijven |
-
|
Het bestand kan niet worden gewijzigd of aangepast. |
w
|
Het bestand kan worden gewijzigd of aangepast. | |
uitvoeren |
-
|
Het bestand kan niet worden uitgevoerd. |
x
|
Het bestand kan worden uitgevoerd. | |
s
|
Als het wordt gevonden in het
user
triplet, wordt het
setuid
bit ingesteld. Indien gevonden in het
group
triplet, wordt het
setgid
bit ingesteld. Het betekent ook dat de vlag
x
is ingesteld.
Wanneer de vlaggen
|
|
S
|
Hetzelfde als
s
maar de
x
vlag is niet ingesteld. Deze vlag wordt zelden in bestanden gebruikt. |
|
t
|
Als het in de
others
triplet wordt gevonden, stelt het het
sticky
bit in.
Het betekent ook dat de vlag
|
|
T
|
Hetzelfde als
t
maar de
x
vlag is niet ingesteld. Deze vlag is nutteloos voor bestanden. |
Effect van machtigingen op mappen (mappen)
In Linux zijn mappen speciale typen bestanden die andere bestanden en mappen bevatten.
Toestemming | Karakter | Betekenis op Directory |
---|---|---|
Lezen |
-
|
De inhoud van de map kan niet worden getoond. |
r
|
De inhoud van de map kan worden getoond.
(U kunt bijvoorbeeld bestanden in de map weergeven met
|
|
Schrijven |
-
|
De inhoud van de map kan niet worden gewijzigd. |
w
|
De inhoud van de map kan worden gewijzigd.
(U kunt bijvoorbeeld geen nieuwe bestanden maken, bestanden verwijderen enz.) |
|
uitvoeren |
-
|
De map kan niet worden gewijzigd in. |
x
|
De map kan worden genavigeerd met behulp van
cd
. |
|
s
|
Als het wordt gevonden in het
user
triplet, wordt het
setuid
bit ingesteld. Indien gevonden in het
group
triplet stelt het de
setgid
bit in. Het betekent ook dat de vlag
x
is ingesteld. Wanneer de
setgid
vlag is ingesteld op een map, nemen de nieuwe bestanden die erin worden gemaakt de directory-groeps-ID (GID) over in plaats van de primaire groeps-ID van de gebruiker die het bestand heeft gemaakt.
|
|
S
|
Hetzelfde als
s
maar de
x
vlag is niet ingesteld. Deze vlag is nutteloos in mappen. |
|
t
|
Als het in de
others
triplet wordt gevonden, stelt het het
sticky
bit in.
Het betekent ook dat de vlag
|
|
T
|
Hetzelfde als
t
maar de
x
vlag is niet ingesteld. Deze vlag is nutteloos in mappen. |
chmod
De opdracht
chmod
neemt de volgende algemene vorm aan:
chmod MODE FILE…
Met de opdracht
chmod
kunt u de machtigingen voor een bestand wijzigen met behulp van een symbolische of numerieke modus of een referentiebestand. We zullen de modi later in meer detail toelichten. De opdracht kan een of meer bestanden en / of mappen, gescheiden door een spatie, als argumenten accepteren.
Alleen root, de bestandseigenaar of gebruiker met sudo-rechten kunnen de rechten van een bestand wijzigen. Wees extra voorzichtig bij het gebruik van
chmod
, vooral bij het recursief wijzigen van de machtigingen.
Symbolische (tekst) methode
De syntaxis van de opdracht
chmod
bij gebruik van de symbolische modus heeft de volgende indeling:
chmod perms… FILE…
De eerste set vlaggen (
), vlaggen van gebruikers, definieert welke gebruikersklassen de machtigingen voor het bestand wijzigen.
-
u
- De bestandseigenaar.g
- De gebruikers die lid zijn van de groep.o
- Alle andere gebruikers.a
- Alle gebruikers, identiek aanugo
.
Als de vlag van de gebruiker wordt weggelaten, is de standaardvlag
a
en worden de machtigingen die zijn ingesteld door umask niet beïnvloed.
De tweede set vlaggen (
), de bewerking markeert, definieert of de machtigingen moeten worden verwijderd, toegevoegd of ingesteld:
-
-
Verwijdert de opgegeven machtigingen.+
Voegt gespecificeerde machtigingen toe.=
Wijzigt de huidige machtigingen in de opgegeven machtigingen. Als na het symbool=
geen machtigingen worden opgegeven, worden alle machtigingen van de opgegeven gebruikersklasse verwijderd.
De machtigingen (machtigingen
perms…
) kunnen expliciet worden ingesteld met nul of een of meer van de volgende letters:
r
,
w
,
x
,
X
,
s
en
t
. Gebruik een enkele letter van de set
u
,
g
en
o
bij het kopiëren van machtigingen van de ene naar de andere gebruikersklasse.
Bij het instellen van machtigingen voor meer dan één gebruikersklasse (
), gebruik komma's (zonder spaties) om de symbolische modi te scheiden.
Hieronder volgen enkele voorbeelden van het gebruik van de opdracht
chmod
in symbolische modus:
-
Geef de leden van de groep toestemming om het bestand te lezen, maar niet om het te schrijven en uit te voeren:
chmod g=r filename
Verwijder de uitvoeringsmachtiging voor alle gebruikers:
chmod ax filename
Verwijder met tegenzin de schrijfmachtiging voor andere gebruikers:
chmod -R ow dirname
Verwijder de lees-, schrijf- en uitvoeringsmachtiging voor alle gebruikers behalve de eigenaar van het bestand:
chmod og-rwx filename
Hetzelfde kan ook worden bereikt met behulp van de volgende vorm:
chmod og= filename
Geef lees-, schrijf- en uitvoeringsrechten aan de eigenaar van het bestand, leesmachtigingen voor de groep van het bestand en geen machtigingen voor alle andere gebruikers:
chmod u=rwx, g=r, o= filename
Voeg de eigenaarrechten van het bestand toe aan de machtigingen die de leden van de groep van het bestand hebben:
chmod g+u filename
Voeg een plakkerig bit toe aan een bepaalde map:
chmod o+t dirname
Numerieke methode
De syntaxis van de opdracht
chmod
bij gebruik van de numerieke methode heeft de volgende indeling:
chmod NUMBER FILE…
Wanneer u de numerieke modus gebruikt, kunt u de machtigingen voor alle drie gebruikersklassen (eigenaar, groep en alle andere) tegelijkertijd instellen.
Het
NUMBER
kan een getal van 3 of 4 cijfers zijn.
Wanneer het nummer van 3 cijfers wordt gebruikt, staat het eerste cijfer voor de machtigingen van de eigenaar van het bestand, het tweede voor de groep van het bestand en het laatste voor alle andere gebruikers.
Elke schrijf-, lees- en uitvoeringsmachtiging heeft de volgende nummerwaarde:
-
r
(lezen) = 4w
(schrijven) = 2x
(uitvoeren) = 1 nee machtigingen = 0
Het machtigingsnummer van een specifieke gebruikersklasse wordt weergegeven door de som van de waarden van de machtigingen voor die groep.
Om de machtigingen van het bestand in de numerieke modus te achterhalen, berekent u eenvoudig de totalen voor alle gebruikersklassen. Als u bijvoorbeeld toestemming voor lezen, schrijven en uitvoeren van de eigenaar van het bestand wilt geven, machtigingen voor lezen en uitvoeren voor de groep van het bestand en alleen machtigingen wilt lezen voor alle andere gebruikers, doet u het volgende:
- Eigenaar: rwx = 4 + 2 + 1 = 7 Groep: rx = 4 + 0 + 1 = 5 Anderen: rx = 4 + 0 + 0 = 4
Met behulp van de bovenstaande methode komen we op het nummer
754
, dat de gewenste machtigingen vertegenwoordigt.
Gebruik vier cijfers om de
setuid
,
setgid
en
sticky bit
setgid
te stellen.
Wanneer het 4-cijferige nummer wordt gebruikt, heeft het eerste cijfer de volgende betekenis:
- setuid = 4setgid = 2sticky = 1no wijzigingen = 0
De volgende drie cijfers hebben dezelfde betekenis als wanneer u een nummer van 3 cijfers gebruikt.
Als het eerste cijfer 0 is, kan dit worden weggelaten en kan de modus worden weergegeven met 3 cijfers. De numerieke modus
0755
is hetzelfde als
755
.
Om de numerieke modus te berekenen, kunt u ook een andere methode (binaire methode) gebruiken, maar deze is iets gecompliceerder. Weten hoe de numerieke modus met 4, 2 en 1 moet worden berekend, is voor de meeste gebruikers voldoende.
U kunt de machtigingen van het bestand controleren in de numerieke notatie met de opdracht
stat
:
stat -c "%a" filename
644
Hier zijn enkele voorbeelden van het gebruik van de opdracht
chmod
in de numerieke modus:
-
Geef de eigenaar van het bestand lees- en schrijfrechten en leesrechten alleen voor groepsleden en alle andere gebruikers:
chmod 644 dirname
Geef de eigenaar van het bestand lees-, schrijf- en uitvoeringsrechten, lees- en uitvoeringsrechten voor groepsleden en geen machtigingen voor alle andere gebruikers:
chmod 750 dirname
Geef lees-, schrijf- en uitvoeringsrechten en een plakkerig bit aan een bepaalde map:
chmod 1777 dirname
Stel recursief lees-, schrijf- en uitvoeringsrechten in voor de bestandseigenaar en geen machtigingen voor alle andere gebruikers in een bepaalde map:
chmod -R 700 dirname
Een referentiebestand gebruiken
Met de optie
--reference=ref_file
kunt u instellen dat de machtigingen van het bestand hetzelfde zijn als die van het opgegeven referentiebestand (
ref_file
).
chmod --reference=REF_FILE FILE
De volgende opdracht wijst bijvoorbeeld de machtigingen van
file1
aan
file2
Wijzig recursief de machtigingen van het bestand
Gebruik de optie
-R
(
--recursive
) om recursief op alle bestanden en mappen in de opgegeven map te werken:
chmod -R MODE DIRECTORY
Als u bijvoorbeeld de machtigingen van alle bestanden en submappen in de map
/var/www
wilt wijzigen in
755
u:
Werkt op symbolische links
Symbolische links hebben altijd
777
machtigingen.
Standaard wijzigt
chmod
bij het wijzigen van de machtigingen van symlink de machtigingen voor het bestand waarnaar de link verwijst.
chmod 755 symlink
De kans is groot dat in plaats van het doeleigendom te wijzigen, de foutmelding 'Geen toegang tot' symlink 'krijgt: toestemming geweigerd' wordt weergegeven.
De fout treedt op omdat standaard op de meeste Linux-distributies symlinks zijn beveiligd en u niet op doelbestanden kunt werken. Deze optie wordt opgegeven in
/proc/sys/fs/protected_symlinks
.
1
betekent ingeschakeld en
0
uitgeschakeld. Het wordt aanbevolen om de symlink-beveiliging niet uit te schakelen.
Bulkrechten wijzigen in bulk
Soms zijn er situaties waarin u bestanden en mappenmachtigingen in bulk moet wijzigen.
Het meest voorkomende scenario is om de machtigingen van het websitebestand recursief te wijzigen in
644
en de machtigingen voor mappen in
755
.
Met behulp van de numerieke methode:
find /var/www/my_website -type d -exec chmod 755 {} ;
find /var/www/my_website -type f -exec chmod 644 {} ;
Met behulp van de symbolische methode:
find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ;
find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;
De opdracht
find
zoekt naar bestanden en mappen onder
/var/www/my_website
en geeft elk gevonden bestand en elke map door aan de opdracht
chmod
om de machtigingen in te stellen.
Conclusie
De opdracht
chmod
wijzigt de machtigingen van het bestand. De machtigingen kunnen worden ingesteld met behulp van de symbolische of numerieke modus.
Voor meer informatie over
chmod
bezoekt u de chmod man-pagina.
Pwd commando in linux (huidige werkmap)
De huidige werkmap is de map waarin de gebruiker momenteel werkt. In dit artikel laten we u zien hoe u uw huidige werkmap kunt bepalen met de opdracht pwd
Dmesg commando in linux
Het opdrachtregelprogramma dmesg drukt de kernelringbuffer af en bestuurt deze. Het is handig voor het onderzoeken van kernel boot berichten en het debuggen van hardware gerelateerde problemen.
Du commando in linux
De opdracht du, kort voor schijfgebruik, geeft de geschatte hoeveelheid schijfruimte weer die wordt gebruikt door bepaalde bestanden of mappen. Het is praktisch handig voor het vinden van bestanden en mappen die grote hoeveelheden schijfruimte in beslag nemen.