Heb je ooit in een situatie gezeten waarin je een taak moest uitvoeren op een Linux-systeem, alleen om geconfronteerd te worden met een frustrerende toegangsweigering? Nou, zeg vaarwel tegen die problemen en verwelkom de wereld van speciale rechten in Linux!
Deze tutorial is je ticket om de fijnere punten van speciale rechten in Linux onder de knie te krijgen — Sticky Bit, Set User ID (SUID) en Set Group ID (SGID). Deze speciale rechten bieden een hoger niveau van beveiligingscontrole.
Lees verder en beheer je bestanden veilig met precisie en vertrouwen!
Vereisten
Voordat je in de details van speciale rechten in Linux duikt, zorg ervoor dat je een Linux-machine hebt. Deze tutorial gebruikt Ubuntu 22.04 LTS (Jammy Jellyfish) voor hands-on demonstraties.
Bestanden uitvoeren met Speciale Rechten in Linux (SUID)
Normaal gesproken bepalen Linux-bestandsrechten de mogelijkheid van een gebruiker om een bestand te lezen, schrijven of uit te voeren op basis van hun rechten en die van hun groep. Toch zijn er situaties waarin een gebruiker een bestand moet uitvoeren met de rechten van de eigenaar van het bestand in plaats van hun eigen rechten.
Bijvoorbeeld, stel je een programma voor dat alleen door rootgebruikers kan worden uitgevoerd, maar er is een noodzaak voor een normale gebruiker om het uit te voeren voor een specifieke taak. In dergelijke gevallen is SUID onmisbaar.
Om te zien hoe SUID-machtigingen kunnen worden ingesteld, volg deze stappen:
1. Open de terminal en voer de volgende commando’s uit om een gebruiker (useradd
) met de naam A-gebruiker
(willekeurig) aan te maken en geef hem een wachtwoord (passwd
).

2. Voer vervolgens het onderstaande stat
-commando uit om de bestaande machtigingen van het cat
-commando te bekijken.
Let op de toegangsmachtigingen hieronder, omdat je ze later nodig zult hebben voor vergelijkingen:
- 0755 – Staat het bestand toe om te worden uitgevoerd met de machtigingen van de eigenaar, waardoor niet-bevoorrechte gebruikers verhoogde rechten krijgen wanneer ze het bestand uitvoeren.
- -rwxr-xr-x – Stelt toestemming in voor de eigenaar om het bestand te lezen, schrijven en uit te voeren (rwx), terwijl groepsleden en andere gebruikers het bestand kunnen lezen en uitvoeren (r-x en r-x).

cat
command3. Voer nu het onderstaande chmod
-commando uit, dat geen uitvoer geeft maar de SUID-bit instelt op het cat
-commando.
Dit commando maakt het mogelijk dat het cat
-commando wordt uitgevoerd met de machtigingen van de bestandseigenaar in plaats van de machtigingen van de gebruiker die het commando uitvoert.
? Merk op dat het gebruik van SUID met voorzichtigheid moet gebeuren, omdat dit potentieel beveiligingsrisico’s kan introduceren als het niet goed wordt geïmplementeerd. Zorg ervoor dat je SUID alleen toepast op vertrouwde commando’s en bestanden.
4. Nadat je de SUID-bit hebt ingesteld, voer je het volgende stat
-commando uit om de SUID-bit te controleren door de machtigingen van het cat
-commando opnieuw te controleren.
Als het succesvol is, zie je het volgende, waarbij je een vergelijking maakt met de informatie die je hebt genoteerd in stap twee:
- 0755 veranderd naar 4755, waar het getal 4 de SUID-bit vertegenwoordigt.
- -rwxr-xr-x veranderd naar -rwsr-xr-x, waar s respectievelijk de gebruikersuitvoer (x) representeert.

5. Voer het onderstaande cat
-commando uit om de machtiging van de momenteel ingelogde gebruiker te testen om toegang te krijgen tot het /etc/shadow
-bestand. Dit bestand is een kritiek systeembestand waarin versleutelde gebruikerswachtwoorden en gerelateerde informatie worden opgeslagen, die alleen toegankelijk zijn voor een root-gebruiker.
Standaard laat het cat
-commando je de inhoud van een bestand in Linux bekijken. Maar dit gedrag geldt niet altijd voor elk bestand.
De onderstaande boodschap verschijnt omdat de huidige gebruiker geen toestemming heeft om het bestand te openen.

6. Voer nu elk van de onderstaande commando’s uit om over te schakelen (su
) naar de nieuwe gebruiker (A-gebruiker
) en probeer opnieuw toegang te krijgen tot het bestand /etc/shadow
.
Deze keer wordt het cat
-commando uitgevoerd met de rechten van de bestandseigenaar (meestal root) in plaats van de rechten van de gebruiker die het commando heeft uitgevoerd.
Omdat je tijdelijk toestemming hebt verleend aan A-gebruiker om de inhoud van dat bestand te lezen, krijg je een uitvoer zoals hieronder.

7. Om veiligheidsredenen voer je de volgende commando’s uit om uit te exit
en uit de huidige gebruiker (A-gebruiker) te gaan en de rechten van het cat
-commando terug te zetten naar de oorspronkelijke staat.

cat
command8. Voer tot slot het onderstaande commando uit om te controleren of het SUID-bit is verwijderd.
Merk op dat het SUID-bit 4 en s niet langer in de toegangsrechten voorkomen.

Het inschakelen van samenwerkingsworkflows in Linux-mappen (SGID)
Het uitvoeren van bestanden met speciale rechten in Linux via SUID werkt ongetwijfeld goed. Maar wat als je streeft naar samenwerkingsworkflows, waarbij meerdere gebruikers samenwerken aan projecten? Meestal moet je ervoor zorgen dat nieuw gemaakte bestanden de groepseigenaar van de bovenliggende map erven.
Wanneer je met dit scenario wordt geconfronteerd, blijkt SGID de game-changer te zijn. Deze krachtige functie vereenvoudigt het beheer van gedeelde resources en verbetert op groepen gebaseerde workflows in Linux-omgevingen.
Om te zien hoe de SGID werkt, maak je een groep aan, voeg je gebruikers toe, stel je SGID-machtigingen in op een map en test je de functionaliteit als volgt:
1. Voer de volgende opdrachten uit om in te loggen als de rootgebruiker en een nieuwe groep met de naam demo
(willekeurig) aan te maken. Deze groep wordt gebruikt om de SGID-functionaliteit te testen.
Deze opdrachten doen geen

2. Voer vervolgens de onderstaande opdrachten uit om twee gebruikers (userA
en userB
) aan te maken die je zult gebruiken om een samenwerkingsomgeving te simuleren.

3. Na het aanmaken van nieuwe gebruikers, voer de onderstaande usermod
opdrachten uit, die geen uitvoer naar het terminal produceren maar de gebruikers (userA
en userB
) toevoegen aan de demo
groep.
4. Voer nu elke onderstaande opdracht uit, maak een map (mkdir
) genaamd /demo-dir
(willekeurig) aan, en stel de gebruikers- en groepseigendommen van de map in op respectievelijk userA
en demo
.
? Als deze opdrachten succesvol zijn, produceren ze geen uitvoer, wat gedurende deze tutorial van toepassing is.
5. Voer vervolgens de volgende ls
opdracht uit om de machtigingen van de map /demo-dir
te bekijken.
De uitvoer hieronder verifieert dat de gebruiker van de map /demo-dir is ingesteld op gebruikerA en de groep op demo.

6. Met geverifieerde rechten, voer de chmod
-opdracht hieronder uit om de SGID-bit in te stellen op de map /demo-dir/
als volgt:
g+s
– Set the SGID bit on the/demo-dir/
directory.o-rwx
– Remove all permissions (read, write, execute) for others.u+rwx
– Grant read, write, and execute permissions to the owner.g+rwx
– Grant read, write, and execute permissions to the group.
7. Nadat SGID is ingesteld, voer de volgende opdracht uit om de rechten van de map /demo-dir
te verifiëren.
Als het succesvol is, zie je de SGID-bit ingesteld, weergegeven door het nummer 2
vóór de octale modusrechten en s
in de groepseigenaar uitvoeren (x
) toestemming plek (rws
).

8. Voer vervolgens elke opdracht hieronder uit om een /home
-map voor gebruikerA
te maken.
9. Voer de volgende opdrachten uit om over te schakelen (su
) naar gebruikerA
en een bestand (touch
) genaamd tekstA.txt
(willekeurig) te maken in de map /demo-dir
.
Deze opdrachten hebben geen uitvoer (wat geldt voor de rest van deze tutorial), maar je zult de rechten van het bestand in de volgende stap verifiëren.
10. Voer de onderstaande ls
-opdracht uit om de rechten van het bestand tekstA.txt
te bekijken.
Hieronder is het groepseigenaar van het bestand textA.txt demo, dat de primaire groep is van de maker, gebruikerA. Leden van de groep demo kunnen het bestand lezen en wijzigen, terwijl anderen het alleen kunnen lezen.
Om ervoor te zorgen dat nieuwe bestanden in de /demo-dir map de groepseigenaarschap van de map erven, moet een SGID-bit worden ingesteld op de map, die je in de volgende stappen zult behandelen.

11. Voer nu de volgende commando’s uit om uit de huidige gebruiker (gebruikerA) te stappen en de SGID-bit (chmod g+s
) in de /demo-dir
map in te stellen

12. Zodra SGID is ingesteld, voer dan het onderstaande commando uit om te verifiëren dat de SGID-bit die je aan de /demo-dir
map hebt toegevoegd.
Zoals hieronder getoond, zul je merken dat de SUID-bit 2 is toegevoegd, en er is een s op de plek van de groepseigenaaruitvoering. Deze uitvoer bevestigt dat de SGID-bit succesvol is ingesteld op de /demo-dir map.

13. Schakel vervolgens terug naar gebruikerA
en maak een ander bestand genaamd testA.txt
(willekeurig) aan in de /demo-dir
map.
14. Nadat het is aangemaakt, voer dan het onderstaande ls
commando uit om het eigenaarschap van het nieuwe bestand (testA.txt
) te controleren.
Als de SGID zoals verwacht werkt, toont de uitvoer aan dat terwijl gebruikerA de eigenaar is, de groepseigendom demo is vanwege de SGID-bit ingesteld op de /demo-dir directory.

15. Maak nu een /home
directory aan voor gebruikerB
om de SGID-functionaliteit verder te testen.
16. Schakel over naar gebruikerB
en maak een bestand genaamd testB.txt
(willekeurig) aan in dezelfde /demo-dir
directory.

17. Bekijk (ls
) de informatie van het nieuwe bestand (testB.txt
).
Controleer de eigenaar van het textB.txt bestand.

Beveiliging van Bestanden Binnen Directories (Sticky Bit)
Het inschakelen van samenwerkingsworkflows in Linux-directories bevordert teamwork en naadloze samenwerking. Maar wanneer je een beveiligde omgeving moet creëren voor effectief beheer van bestanden, komen de Sticky Bit-rechten van pas.
Door de Sticky Bit in te stellen, geef je in feite de “sleutels tot het kasteel” in handen van de eigenaar van het bestand, de eigenaar van de directory of de rootgebruiker. Dit zorgt ervoor dat alleen zij de bevoegdheid hebben om het bestand binnen de directory te verwijderen of hernoemen, wat een extra bescherming biedt voor gevoelige gegevens.
Om Sticky Bit-rechten in te stellen, moet je eerst een gedeelde directory maken met de volgende stappen:
1. Meld je aan als de rootgebruiker en maak een (gedeelde) map (mkdir
) aan waar meerdere gebruikers bestanden kunnen maken.
2. Voer vervolgens de onderstaande opdrachten uit om de machtigingen van de /gedeelde-map
map te wijzigen om schrijfmachtigingen te verlenen aan iedereen.
Het eerste getal (1
) in 1777
stelt de Sticky Bit in, terwijl de rest (777
) de map leesbaar, beschrijfbaar en uitvoerbaar maakt voor iedereen.
De volgende zijn kenmerken of attributen van de Sticky Bit in een Linux-systeem:
Feature | Function |
Directory Protection | When the Sticky Bit is set on a directory, it allows only the owner of a file within that directory to delete or rename their own files. Other users, even if they have write permissions to the directory, cannot delete or rename files owned by other users. |
Shared Directories | The sticky bit is handy for directories that are shared among multiple users. For example, on a system with a /tmp directory used by all users to store temporary files, setting the Sticky Bit prevents users from accidentally or maliciously deleting files owned by other users. |
Hieronder zie je de letter ‘t’ in het laatste deel van het toestemmingsveld, wat aangeeft dat de Sticky Bit is ingesteld op de /gedeelde-map map.

3. Schakel over naar gebruikerA
en maak een bestand genaamd bestandA.txt
(willekeurig) aan in de /gedeelde-map
map:
4. Log uit bij gebruikerA, schakel over naar gebruikerB
, en maak een ander bestand genaamd bestandB.txt
(willekeurig) aan in dezelfde /gedeelde-map
map.
5. Nu, verlaat gebruikerB
, schakel over naar gebruikerA
, en probeer bestandB.txt
van gebruikerB
te verwijderen.
Je krijgt een output zoals hieronder, omdat alleen de eigenaar van het bestand wijzigingen kan aanbrengen of het bestand kan verwijderen.

6. Voer tot slot de volgende opdracht uit (ls
) om alle bestanden binnen de gedeelde map (/gedeelde-map
) weer te geven.
Als de Sticky Bit-permissies werken, zie je dat het bestandB.txt bestand dat is gemaakt door gebruikerB veilig en ongeschonden is gebleven en niet is verwijderd.

Conclusie
Terwijl je deze verkenning van speciale machtigingen in Linux afrondt, heb je een krachtige set tools ontgrendeld: de SUID, SGID, en Sticky Bit. Gewapend met deze kennis kun je nu toegangsbeheer fijn afstemmen en je bestanden met precisie beveiligen.
Maar stop hier niet! Waarom probeer je niet een gedeelde map op te zetten met SGID en te experimenteren met hoe bestanden groepseigendom erven? De Linux-wereld ligt aan je voeten, en met elke onderneming zul je de kunst van het beveiligen van je systeem meester worden!
Source:
https://adamtheautomator.com/special-permissions-in-linux/