Hoe de chmod-opdracht op Linux te gebruiken

Gestileerde terminal prompt op een Linux-laptop
Fatmawati Achmad Zaenuri / Shutterstock.com

Bepaal wie toegang heeft tot bestanden, mappen doorzoeken en scripts uitvoeren met behulp van Linux chmod opdracht. Deze opdracht wijzigt Linux-bestandsrechten, die er op het eerste gezicht ingewikkeld uitzien, maar eigenlijk vrij eenvoudig zijn als je eenmaal weet hoe ze werken.

chmod Wijzigt bestandsrechten

In Linux wordt wie wat met een bestand of map kan doen, bepaald via sets machtigingen. Er zijn drie sets machtigingen. Een set voor de eigenaar van het bestand, een andere set voor de leden van de bestandsgroep en een laatste set voor alle anderen.

De machtigingen bepalen de acties die kunnen worden uitgevoerd op het bestand of de directory. Ze staan ​​toe of voorkomen dat een bestand wordt gelezen, gewijzigd of, als het een script of programma is, wordt uitgevoerd. Voor een directory bepalen de machtigingen wie dat kan cd in de directory en wie bestanden in de directory kan maken of wijzigen.

U gebruikt de chmod opdracht om elk van deze machtigingen in te stellen. Om te zien welke rechten zijn ingesteld voor een bestand of map, kunnen we gebruiken ls.

Bestandsrechten bekijken en begrijpen

We kunnen de -l (lang formaat) optie om te hebben ls lijst de bestandsrechten voor bestanden en mappen.

ls -l

uitvoer van ls -l in een terminalvenster

Op elke regel geeft het eerste teken het type item aan dat wordt vermeld. Als het een streepje is (-) het is een bestand. Als het de brief is d het is een directory.

De volgende negen tekens vertegenwoordigen de instellingen voor de drie sets machtigingen.

  • De eerste drie tekens tonen de machtigingen voor de gebruiker die eigenaar is van het bestand (gebruikersrechten).
  • De middelste drie tekens tonen de machtigingen voor leden van de bestandsgroep (groepsrechten).
  • De laatste drie tekens tonen de machtigingen voor iedereen die niet in de eerste twee categorieën valt (andere machtigingen).

Elke set machtigingen bevat drie tekens. De karakters zijn indicatoren voor de aanwezigheid of afwezigheid van een van de permissies. Ze zijn ofwel een streepje (-) of een brief. Als het teken een streepje is, betekent dit dat er geen toestemming is verleend. Als het personage een r, w, of een x, die toestemming is verleend.

De letters staan ​​voor:

  • r: Leesrechten. Het bestand kan worden geopend en de inhoud kan worden bekeken.
  • w: Schrijfrechten. Het bestand kan worden bewerkt, gewijzigd en verwijderd.
  • X: Machtigingen uitvoeren. Als het bestand een script of een programma is, kan het worden uitgevoerd (uitgevoerd).

Bijvoorbeeld:

  • --- betekent dat er helemaal geen rechten zijn verleend.
  • rwx betekent dat volledige machtigingen zijn verleend. De lees-, schrijf- en uitvoeringsindicatoren zijn allemaal aanwezig.

In onze schermafbeelding begint de eerste regel met een d. Deze regel verwijst naar een map met de naam ‘archief’. De eigenaar van de directory is “dave” en de naam van de groep waartoe de directory behoort, wordt ook wel “dave” genoemd.

De volgende drie tekens zijn de gebruikersrechten voor deze directory. Deze laten zien dat de eigenaar volledige machtigingen heeft. De r, w, en x karakters zijn allemaal aanwezig. Dit betekent dat de gebruiker dave lees-, schrijf- en uitvoeringsrechten voor die map heeft.

De tweede set van drie karakters zijn de groepsrechten, dit zijn r-x. Deze laten zien dat de leden van de dave-groep lees- en uitvoeringsrechten voor deze directory hebben. Dat betekent dat ze de bestanden en hun inhoud in de directory kunnen vermelden, en dat kunnen ze ook cd (uitvoeren) in die map. Ze hebben geen schrijfrechten, dus ze kunnen geen bestanden maken, bewerken of verwijderen.

De laatste set van drie karakters is ook r-x. Deze machtigingen zijn van toepassing op mensen die niet onder de eerste twee sets machtigingen vallen. Deze mensen (“anderen” genoemd) hebben machtigingen voor lezen en uitvoeren op deze map.

Dus, om samen te vatten, groepsleden en anderen hebben machtigingen voor lezen en uitvoeren. De eigenaar, een gebruiker genaamd dave, heeft ook schrijfrechten.

Voor alle andere bestanden (behalve het mh.sh-scriptbestand) hebben dave en leden van de dave-groep lees- en schrijfeigenschappen voor de bestanden, en de anderen hebben alleen leesrechten.

Voor het speciale geval van het scriptbestand mh.sh hebben de eigenaar Dave en de groepsleden machtigingen voor lezen, schrijven en uitvoeren, en hebben de anderen alleen machtigingen voor lezen en uitvoeren.

Inzicht in de machtigingssyntaxis

Gebruiken chmod om rechten in te stellen, moeten we het vertellen:

  • Wie: Voor wie we machtigingen instellen.
  • Wat: Welke verandering brengen we door? Zijn we de toestemming aan het toevoegen of verwijderen?
  • Welke: Welke van de rechten stellen we in?

We gebruiken indicatoren om deze waarden weer te geven, en vormen korte “machtigingsverklaringen” zoals u+x, waar “u” betekent “gebruiker” (wie), “+” betekent toevoegen (wat), en “x” betekent de toestemming voor uitvoeren (welke).

De ‘wie’-waarden die we kunnen gebruiken zijn:

  • u: Gebruiker, wat de eigenaar van het bestand betekent.
  • g: Groep, dat wil zeggen leden van de groep waartoe het bestand behoort.
  • O: Anderen, wat betekent dat mensen niet onder de u en g rechten.
  • een: Allemaal, dus al het bovenstaande.

Als geen van deze wordt gebruikt, chmod gedraagt ​​zich alsof “a”Was gebruikt.

De ‘wat’-waarden die we kunnen gebruiken zijn:

  • : Minteken. Verwijdert de toestemming.
  • +: Plusteken. Verleent de toestemming. De toestemming wordt toegevoegd aan de bestaande machtigingen. Als u deze toestemming en alleen deze machtigingenset wilt hebben, gebruikt u de = optie, hieronder beschreven.
  • =: Is gelijk aan teken. Stel een toestemming in en verwijder anderen.

De “welke” waarden die we kunnen gebruiken zijn:

  • r: De toestemming om te lezen.
  • w: De schrijfmachtiging.
  • X: De uitvoeringsmachtiging.

Machtigingen instellen en wijzigen

Laten we zeggen dat we een bestand hebben waar iedereen de volledige machtigingen voor heeft.

ls -l new_ file.txt

ls -l nieuw_bestand.txt in een terminalvenster

We willen dat de gebruiker lees- en schrijfrechten heeft en dat de groep en andere gebruikers alleen leesrechten hebben. We kunnen het volgende commando gebruiken:

chmod u=rw,og=r new_file.txt

chmod u = rw, og = r new_file.txt in een terminalvenster

Het gebruik van de operator “=” betekent dat we alle bestaande rechten wissen en vervolgens de gespecificeerde rechten instellen.

laten we de nieuwe toestemming voor dit bestand controleren:

ls -l new_file.txt

ls -l nieuw_bestand.txt in een terminalvenster

De bestaande machtigingen zijn verwijderd en de nieuwe machtigingen zijn ingesteld, zoals we hadden verwacht.

Hoe zit het met het toevoegen van een toestemming zonder de bestaande machtigingsinstellingen verwijderen? Dat kunnen we ook gemakkelijk doen.

Laten we zeggen dat we een scriptbestand hebben dat we hebben bewerkt. We moeten het uitvoerbaar maken voor alle gebruikers. De huidige machtigingen zien er als volgt uit:

ls -l new_script.sh

ls -l new_script.sh in een terminalvenster

We kunnen de uitvoerrechten voor iedereen toevoegen met het volgende commando:

chmod a+x new_script.sh

chmod a + x new_script.sh in een terminalvenster

Als we de machtigingen bekijken, zullen we zien dat de uitvoeringsmachtiging nu aan iedereen is verleend en dat de bestaande machtigingen nog steeds aanwezig zijn.

ls -l new_script.sh

ls -l new_script.sh in een terminalvenster

We hadden hetzelfde kunnen bereiken zonder de “a” in de “a + x” -verklaring. Het volgende commando zou net zo goed hebben gewerkt.

chmod +x new_script.sh

Machtigingen instellen voor meerdere bestanden

We kunnen in één keer machtigingen toepassen op meerdere bestanden.

Dit zijn de bestanden in de huidige directory:

ls -l

ls -l in een terminalvenster

Laten we zeggen dat we de schrijfrechten voor de “andere” gebruikers willen verwijderen van bestanden met de extensie “.page”. We kunnen dit doen met het volgende commando:

chmod o-r *.page

chmod of * .page in een terminalvenster

Laten we eens kijken welk effect dat heeft gehad:

ls -l

ls -l in een terminalvenster

Zoals we kunnen zien, is de leesmachtiging verwijderd uit de “.page” -bestanden voor de categorie “andere” gebruikers. Er zijn geen andere bestanden aangetast.

Als we bestanden in submappen hadden willen opnemen, hadden we de -R (recursieve) optie.

chmod -R o-r *.page

Numerieke afkorting

Een andere manier om te gebruiken chmod is om de rechten die u aan de eigenaar, de groep en anderen wilt geven, te geven als een driecijferig nummer. Het meest linkse cijfer vertegenwoordigt de machtigingen voor de eigenaar. Het middelste cijfer vertegenwoordigt de machtigingen voor de groepsleden. Het meest rechtse cijfer vertegenwoordigt de toestemmingen voor de anderen.

De cijfers die u kunt gebruiken en wat ze vertegenwoordigen, worden hier vermeld:

  • 0: (000) Geen toestemming.
  • 1: (001) Toestemming uitvoeren.
  • 2: (010) Schrijfmachtiging.
  • 3: (011) Machtigingen voor schrijven en uitvoeren.
  • 4: (100) Leestoestemming.
  • 5: (101) Machtigingen voor lezen en uitvoeren.
  • 6: (110) Lees- en schrijfrechten.
  • 7: (111) Machtigingen voor lezen, schrijven en uitvoeren.

Elk van de drie machtigingen wordt vertegenwoordigd door een van de bits in het binaire equivalent van het decimale getal. Dus 5, wat 101 is in binair getal, betekent lezen en uitvoeren. 2, wat in binair getal 010 is, zou de schrijfmachtiging betekenen.

Met behulp van deze methode stelt u de permissies in die u wilt hebben; u voegt deze machtigingen niet toe aan de bestaande machtigingen. Dus als lees- en schrijfrechten al aanwezig waren, zou u 7 (111) moeten gebruiken om uitvoeringsrechten toe te voegen. Als u 1 (001) gebruikt, worden de lees- en schrijfrechten verwijderd en wordt de uitvoeringsmachtiging toegevoegd.

Laten we de leesmachtiging weer toevoegen aan de “.page” -bestanden voor de andere categorie gebruikers. We moeten ook de gebruikers- en groepsmachtigingen instellen, dus we moeten ze instellen op wat ze al zijn. Deze gebruikers hebben al lees- en schrijfrechten, namelijk 6 (110). We willen dat de “anderen” leesrechten en machtigingen hebben, dus moeten ze worden ingesteld op 4 (100).

Met de volgende opdracht wordt dit bereikt:

chmod 664 *.page

chmod 664 * .page in een terminalvenster

Dit stelt de toestemmingen die we nodig hebben voor de gebruiker, groepsleden en anderen in op wat we nodig hebben. De gebruikers en groepsleden hebben hun machtigingen teruggezet naar wat ze al waren, en de anderen hebben de leesmachtiging hersteld.

ls -l

ls -l in een terminalvenster

Geavanceerde mogelijkheden

Als je de man-pagina voor leest chmod je zult zien dat er enkele geavanceerde opties zijn gerelateerd aan de SETUID- en SETGID-bits, en aan de beperkte verwijdering of “sticky” -bit.

Voor 99% van de gevallen heb je nodig chmod want, de opties die hier worden beschreven, hebben u gedekt.

Nieuwste artikelen

spot_img

Related Stories

Leave A Reply

Vul alstublieft uw commentaar in!
Vul hier uw naam in