Zoeken op website

Gebruikers en groepen beheren, bestandsrechten en -attributen en sudo-toegang op accounts inschakelen - Deel 8


Afgelopen augustus is de Linux Foundation gestart met de LFCS certificering (Linux Foundation Certified Sysadmin), een gloednieuw programma dat tot doel heeft individuen overal en op elke plek een examen te laten afleggen om Gecertificeerd worden in fundamentele tot middelmatige operationele ondersteuning voor Linux-systemen, inclusief het ondersteunen van actieve systemen en services, samen met algemene monitoring en analyse, plus intelligente besluitvorming om te kunnen beslissen wanneer het nodig is om problemen te escaleren naar ondersteuningsteams op een hoger niveau.

Bekijk alstublieft snel de volgende video waarin een inleiding tot het Linux Foundation Certificeringsprogramma wordt beschreven.

Dit artikel is deel 8 van een lange serie van 10 tutorials. Hier in deze sectie zullen we u begeleiden bij het beheren van gebruikers- en groepsrechten in een Linux-systeem, die vereist zijn voor het LFCS-certificeringsexamen.

Omdat Linux een besturingssysteem voor meerdere gebruikers is (in de zin dat het meerdere gebruikers op verschillende computers of terminals toegang geeft tot één systeem), moet u weten hoe u effectief gebruikersbeheer kunt uitvoeren: hoe u gebruikers kunt toevoegen, bewerken, onderbreken of verwijderen gebruikersaccounts, en verleent hen de nodige machtigingen om de hun toegewezen taken uit te voeren.

Gebruikersaccounts toevoegen

Om een nieuw gebruikersaccount toe te voegen, kunt u een van de volgende twee opdrachten als root uitvoeren.

adduser [new_account]
useradd [new_account]

Wanneer een nieuw gebruikersaccount aan het systeem wordt toegevoegd, worden de volgende bewerkingen uitgevoerd.

1. Zijn/haar thuismap wordt aangemaakt (standaard /home/gebruikersnaam).

2. De volgende verborgen bestanden worden naar de thuismap van de gebruiker gekopieerd en zullen worden gebruikt om omgevingsvariabelen voor zijn/haar gebruikerssessie aan te bieden.

.bash_logout
.bash_profile
.bashrc

3. Er wordt een e-mailspool gemaakt voor de gebruiker op /var/spool/mail/gebruikersnaam.

4. Er wordt een groep gemaakt die dezelfde naam krijgt als het nieuwe gebruikersaccount.

/etc/passwd begrijpen

De volledige accountinformatie wordt opgeslagen in het bestand /etc/passwd. Dit bestand bevat een record per systeemgebruikersaccount en heeft het volgende formaat (velden worden gescheiden door een dubbele punt).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. De velden [gebruikersnaam] en [Commentaar] spreken voor zich.
  2. De x in het tweede veld geeft aan dat het account is beveiligd met een schaduwwachtwoord (in /etc/shadow), dat nodig is om in te loggen als [gebruikersnaam] .
  3. De velden [UID] en [GID] zijn gehele getallen die respectievelijk de gebruikers-ID en de primaire groeps-ID vertegenwoordigen waartoe [gebruikersnaam] behoort .
  4. De [Thuismap] geeft het absolute pad aan naar de thuismap van [gebruikersnaam], en
  5. De [Standaard shell] is de shell die beschikbaar wordt gesteld aan deze gebruiker wanneer hij of zij inlogt op het systeem.
/etc/group begrijpen

Groepsinformatie wordt opgeslagen in het bestand /etc/group. Elke record heeft het volgende formaat.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Groepsnaam] is de naam van de groep.
  2. Een x in [Groepswachtwoord] geeft aan dat groepswachtwoorden niet worden gebruikt.
  3. [GID]: hetzelfde als in /etc/passwd.
  4. [Groepsleden]: een door komma's gescheiden lijst met gebruikers die lid zijn van [Groepsnaam].

Nadat je een account hebt toegevoegd, kun je de volgende informatie bewerken (om een paar velden te noemen) met behulp van de opdracht usermod, waarvan de basissyntaxis van usermod als volgt is.

usermod [options] [username]
De vervaldatum voor een account instellen

Gebruik de vlag –expiredate gevolgd door een datum in het formaat JJJJ-MM-DD.

usermod --expiredate 2014-10-30 tecmint
De gebruiker toevoegen aan aanvullende groepen

Gebruik de gecombineerde opties -aG of –toevoegen –groepen, gevolgd door een door komma's gescheiden lijst met groepen.

usermod --append --groups root,users tecmint
De standaardlocatie van de thuismap van de gebruiker wijzigen

Gebruik de opties -d of –home, gevolgd door het absolute pad naar de nieuwe thuismap.

usermod --home /tmp tecmint
Het wijzigen van de shell die de gebruiker standaard zal gebruiken

Gebruik –shell, gevolgd door het pad naar de nieuwe shell.

usermod --shell /bin/sh tecmint
Weergave van de groepen waarvan een gebruiker lid is
groups tecmint
id tecmint

Laten we nu alle bovenstaande opdrachten in één keer uitvoeren.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

In het bovenstaande voorbeeld stellen we de vervaldatum van het tecmint-gebruikersaccount in op 30 oktober 2014. We zullen het account ook toevoegen aan de root- en gebruikersgroep. Ten slotte zullen we sh instellen als de standaardshell en de locatie van de thuismap wijzigen in /tmp:

Lees ook:

  1. 15 useradd-opdrachtvoorbeelden in Linux
  2. 15 usermod-opdrachtvoorbeelden in Linux

Voor bestaande accounts kunnen we ook het volgende doen.

Account uitschakelen door wachtwoord te vergrendelen

Gebruik de optie -L (hoofdletter L) of de optie –lock om het wachtwoord van een gebruiker te vergrendelen.

usermod --lock tecmint
Gebruikerswachtwoord ontgrendelen

Gebruik de optie –u of –unlock om het wachtwoord van een gebruiker te ontgrendelen dat eerder geblokkeerd was.

usermod --unlock tecmint

Een nieuwe groep aanmaken voor lees- en schrijftoegang tot bestanden die door meerdere gebruikers moeten worden geopend

Voer de volgende reeks opdrachten uit om het doel te bereiken.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Een groep verwijderen

Met het volgende commando kunt u een groep verwijderen.

groupdel [group_name]

Als er bestanden zijn die eigendom zijn van groepsnaam, worden deze niet verwijderd, maar wordt de groepseigenaar ingesteld op de GID van de groep die is verwijderd.

Linux-bestandsrechten

Naast de basisrechten voor lezen, schrijven en uitvoeren die we hebben besproken in Archiving Tools en Bestandskenmerken instellen – Deel 3 van deze serie, zijn er nog andere, minder gebruikte (maar niet minder belangrijke) toestemmingsinstellingen, ook wel “speciale instellingen” genoemd. rechten ”.

Net als de eerder besproken basisrechten worden ze ingesteld met behulp van een octaal bestand of via een letter (symbolische notatie) die het type toestemming aangeeft.

Gebruikersaccounts verwijderen

U kunt een account verwijderen (samen met de thuismap, als deze eigendom is van de gebruiker, en alle bestanden die zich daarin bevinden, en ook de mailspool) met behulp van de opdracht userdel met de –remove optie.

userdel --remove [username]

Groep management

Elke keer dat er een nieuw gebruikersaccount aan het systeem wordt toegevoegd, wordt er een groep met dezelfde naam gemaakt met de gebruikersnaam als enig lid. Andere gebruikers kunnen later aan de groep worden toegevoegd. Een van de doelen van groepen is het implementeren van een eenvoudige toegangscontrole tot bestanden en andere systeembronnen door de juiste machtigingen voor die bronnen in te stellen.

Stel dat u de volgende gebruikers heeft.

  1. gebruiker1 (primaire groep: gebruiker1)
  2. gebruiker2 (primaire groep: gebruiker2)
  3. gebruiker3 (primaire groep: gebruiker3)

Ze hebben allemaal lees en schrijf toegang nodig tot een bestand met de naam common.txt dat zich ergens op uw lokale systeem bevindt, of misschien op een netwerkshare die gebruiker1 heeft gemaakt. Je komt misschien in de verleiding om iets te doen als:

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Dit geeft echter alleen lees en schrijf toegang aan de eigenaar van het bestand en aan de gebruikers die lid zijn van de groepseigenaar van het bestand (gebruiker1 in dit geval). Nogmaals, je zou in de verleiding kunnen komen om gebruiker2 en gebruiker3 toe te voegen aan de groep gebruiker1, maar dat geeft ze ook toegang tot de rest van de bestanden die ze bezitten door gebruiker gebruiker1 en groep gebruiker1.

Dit is waar groepen van pas komen, en dit is wat u in een geval als dit moet doen.

Setuid begrijpen

Wanneer de toestemming setuid wordt toegepast op een uitvoerbaar bestand, erft een gebruiker die het programma uitvoert de effectieve rechten van de eigenaar van het programma. Omdat deze aanpak redelijkerwijs beveiligingsproblemen kan veroorzaken, moet het aantal bestanden met setuid-toestemming tot een minimum worden beperkt. U zult waarschijnlijk programma's vinden met deze machtigingenset wanneer een systeemgebruiker toegang moet krijgen tot een bestand dat eigendom is van root.

Samenvattend komt het er niet alleen op neer dat de gebruiker het binaire bestand kan uitvoeren, maar ook dat hij dit kan doen met de privileges van root. Laten we bijvoorbeeld de rechten van /bin/passwd controleren. Dit binaire bestand wordt gebruikt om het wachtwoord van een account te wijzigen en wijzigt het bestand /etc/shadow. De superuser kan ieders wachtwoord wijzigen, maar alle andere gebruikers mogen alleen hun eigen wachtwoord wijzigen.

Elke gebruiker zou dus toestemming moeten hebben om /bin/passwd uit te voeren, maar alleen root kan een account opgeven. Andere gebruikers kunnen alleen hun bijbehorende wachtwoorden wijzigen.

Setgid begrijpen

Wanneer de setgid bit is ingesteld, wordt de effectieve GID van de echte gebruiker die van de groepseigenaar. Elke gebruiker heeft dus toegang tot een bestand onder de rechten die zijn verleend aan de groepseigenaar van een dergelijk bestand. Bovendien, wanneer de setgid-bit op een map is ingesteld, nemen nieuw aangemaakte bestanden dezelfde groep over als de map, en zullen nieuw aangemaakte submappen ook de setgid-bit van de bovenliggende map overnemen. U zult deze aanpak waarschijnlijk gebruiken wanneer leden van een bepaalde groep toegang nodig hebben tot alle bestanden in een map, ongeacht de primaire groep van de bestandseigenaar.

chmod g+s [filename]

Om de setgid in octale vorm in te stellen, plaatst u het getal 2 vóór de huidige (of gewenste) basisrechten.

chmod 2755 [directory]
De SETGID in een map instellen

Kleverig bit begrijpen

Wanneer de “sticky bit” is ingesteld op bestanden, negeert Linux dit gewoon, terwijl dit voor mappen tot gevolg heeft dat gebruikers ervan worden weerhouden de bestanden die deze bevatten te verwijderen of zelfs te hernoemen, tenzij de gebruiker eigenaar is van de map, de bestand, of is root.

chmod o+t [directory]

Om het sticky bit in octale vorm in te stellen, plaatst u het getal 1 vóór de huidige (of gewenste) basisrechten.

chmod 1755 [directory]

Zonder het plakkerige bit kan iedereen die naar de map kan schrijven bestanden verwijderen of hernoemen. Om die reden wordt het sticky bit vaak aangetroffen in mappen, zoals /tmp, die voor iedereen geschikt zijn.

Speciale Linux-bestandskenmerken

Er zijn andere kenmerken die verdere beperkingen mogelijk maken voor de bewerkingen die op bestanden zijn toegestaan. Voorkom bijvoorbeeld dat het bestand wordt hernoemd, verplaatst, verwijderd of zelfs gewijzigd. Ze worden ingesteld met het chattr-commando en kunnen als volgt worden bekeken met de lsattr-tool.

chattr +i file1
chattr +a file2

Na het uitvoeren van deze twee opdrachten zal bestand1 onveranderlijk zijn (wat betekent dat het niet kan worden verplaatst, hernoemd, gewijzigd of verwijderd), terwijl bestand2 naar de alleen-toevoegen-modus gaat (kan alleen openen in toevoegmodus voor schrijven).

Toegang krijgen tot het root-account en sudo gebruiken

Een van de manieren waarop gebruikers toegang kunnen krijgen tot het root-account is door te typen.

su

en voer vervolgens het wachtwoord van root in.

Als de authenticatie slaagt, wordt u aangemeld als root met de huidige werkmap die dezelfde is als voorheen. Als u in plaats daarvan in de thuismap van root wilt worden geplaatst, voert u dit uit.

su -

en voer vervolgens het wachtwoord van root in.

De bovenstaande procedure vereist dat een normale gebruiker het root-wachtwoord kent, wat een ernstig veiligheidsrisico met zich meebrengt. Om die reden kan de sysadmin de opdracht sudo zo configureren dat een gewone gebruiker opdrachten kan uitvoeren als een andere gebruiker (meestal de superuser) op een zeer gecontroleerde en beperkte manier. Er kunnen dus beperkingen worden ingesteld voor een gebruiker, zodat hij een of meer specifieke bevoorrechte opdrachten kan uitvoeren en geen andere.

Lees ook: verschil tussen su en sudo-gebruiker

Om te authenticeren met sudo gebruikt de gebruiker zijn/haar eigen wachtwoord. Na het invoeren van de opdracht wordt ons om ons wachtwoord gevraagd (niet dat van de superuser) en als de authenticatie slaagt (en als de gebruiker rechten heeft gekregen om de opdracht uit te voeren), wordt de opgegeven opdracht uitgevoerd.

Om toegang tot sudo te verlenen, moet de systeembeheerder het bestand /etc/sudoers bewerken. Het wordt aanbevolen dit bestand te bewerken met de opdracht visudo in plaats van het rechtstreeks met een teksteditor te openen.

visudo

Hierdoor wordt het bestand /etc/sudoers geopend met behulp van vim (u kunt de instructies volgen die worden gegeven in Vim installeren en gebruiken als editor – deel 2 van deze serie om het bestand te bewerken).

Dit zijn de meest relevante regels.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Laten we ze eens nader bekijken.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Met deze regel kunt u de mappen specificeren die gebruikt zullen worden voor sudo, en wordt gebruikt om het gebruik van gebruikersspecifieke mappen te voorkomen, wat schade aan het systeem kan toebrengen.

De volgende regels worden gebruikt om machtigingen op te geven.

root        ALL=(ALL) ALL
  1. Het eerste trefwoord ALL geeft aan dat deze regel op alle hosts van toepassing is.
  2. De tweede ALL geeft aan dat de gebruiker in de eerste kolom opdrachten kan uitvoeren met de rechten van elke gebruiker.
  3. De derde ALL betekent dat elk commando kan worden uitgevoerd.
tecmint     ALL=/bin/yum update

Als er geen gebruiker is opgegeven na het = teken, gaat sudo ervan uit dat de rootgebruiker is. In dit geval kan gebruiker tecmint yum update als root uitvoeren.

gacanepa    ALL=NOPASSWD:/bin/updatedb

Dankzij de NOPASSWD-richtlijn kan gebruiker gacanepa /bin/updatedb uitvoeren zonder dat hij zijn wachtwoord hoeft in te voeren.

%admin      ALL=(ALL) ALL

Het % teken geeft aan dat deze regel van toepassing is op een groep met de naam “admin ”. De betekenis van de rest van de regel is identiek aan die van een gewone gebruiker. Dit betekent dat leden van de groep “admin ” alle opdrachten kunnen uitvoeren als elke gebruiker op alle hosts.

Om te zien welke rechten u door sudo worden verleend, gebruikt u de optie “-l” om ze weer te geven.

PAM (inplugbare authenticatiemodules)

Pluggable Authentication Modules (PAM) bieden de flexibiliteit om met behulp van modules een specifiek authenticatieschema in te stellen per applicatie en/of per service. Deze tool die op alle moderne Linux-distributies aanwezig is, overwon het probleem waarmee ontwikkelaars in de begindagen van Linux vaak te maken kregen, toen elk programma dat authenticatie vereiste speciaal moest worden gecompileerd om te weten hoe de benodigde informatie kon worden verkregen.

Met PAM maakt het bijvoorbeeld niet uit of uw wachtwoord is opgeslagen in /etc/shadow of op een aparte server binnen uw netwerk.

Wanneer het inlogprogramma bijvoorbeeld een gebruiker moet authenticeren, levert PAM op dynamische wijze de bibliotheek die de functies voor het juiste authenticatieschema bevat. Het wijzigen van het authenticatieschema voor de login-applicatie (of elk ander programma dat PAM gebruikt) is dus eenvoudig, omdat het alleen gaat om het bewerken van een configuratiebestand (hoogstwaarschijnlijk een bestand dat naar de applicatie is vernoemd en zich in /etc/pam.d bevindt). , en minder waarschijnlijk in /etc/pam.conf).

Bestanden in /etc/pam.d geven aan welke applicaties PAM native gebruiken. Bovendien kunnen we zien of een bepaalde applicatie PAM gebruikt door te controleren of de PAM-bibliotheek (libpam) eraan is gekoppeld:


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

In de bovenstaande afbeelding kunnen we zien dat de libpam is gekoppeld aan de inlogtoepassing. Dit is logisch omdat deze applicatie betrokken is bij de werking van systeemgebruikersauthenticatie, terwijl top dat niet doet.

Laten we het PAM-configuratiebestand voor passwd bekijken – ja, het bekende hulpprogramma om de wachtwoorden van gebruikers te wijzigen. Het bevindt zich op /etc/pam.d/passwd:


cat /etc/passwd

De eerste kolom geeft het type van de authenticatie aan dat moet worden gebruikt met het modulepad (derde kolom). Wanneer er een koppelteken voor het type verschijnt, zal PAM niet opnemen in het systeemlogboek als de module niet kan worden geladen omdat deze niet in het systeem kan worden gevonden.

De volgende authenticatietypen zijn beschikbaar:

  1. account: dit moduletype controleert of de gebruiker of dienst geldige inloggegevens heeft opgegeven om te authenticeren.
  2. auth: dit moduletype verifieert dat de gebruiker is wie hij/zij beweert te zijn en verleent alle benodigde rechten.
  3. wachtwoord: met dit moduletype kan de gebruiker of dienst zijn wachtwoord bijwerken.
  4. sessie: dit moduletype geeft aan wat er moet gebeuren voordat en/of nadat de authenticatie slaagt.

De tweede kolom (genaamd control) geeft aan wat er moet gebeuren als de authenticatie met deze module mislukt:

  1. requisite: als de authenticatie via deze module mislukt, wordt de algehele authenticatie onmiddellijk geweigerd.
  2. required is vergelijkbaar met requisite, hoewel alle andere vermelde modules voor deze service zullen worden aangeroepen voordat authenticatie wordt geweigerd.
  3. voldoende: als de authenticatie via deze module mislukt, zal PAM nog steeds authenticatie verlenen, zelfs als een eerdere gemarkeerd als vereist is mislukt.
  4. optioneel: als de authenticatie via deze module mislukt of slaagt, gebeurt er niets tenzij dit de enige module van zijn type is die voor deze service is gedefinieerd.
  5. include betekent dat de regels van het opgegeven type uit een ander bestand moeten worden gelezen.
  6. substack is vergelijkbaar met include, maar mislukte of succesvolle authenticatie veroorzaakt niet het afsluiten van de volledige module, maar alleen van de substack.

De vierde kolom, indien aanwezig, toont de argumenten die aan de module moeten worden doorgegeven.

De eerste drie regels in /etc/pam.d/passwd (hierboven weergegeven), laden de module system-auth om te controleren of de gebruiker geldige inloggegevens (account) heeft opgegeven . Als dat zo is, kan hij/zij het authenticatietoken (wachtwoord) wijzigen door toestemming te geven om passwd (auth) te gebruiken.

Als u bijvoorbeeld toevoegt


remember=2

naar de volgende regel


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

in /etc/pam.d/system-auth:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

de laatste twee gehashte wachtwoorden van elke gebruiker worden opgeslagen in /etc/security/opasswd zodat ze niet opnieuw kunnen worden gebruikt:

Samenvatting

Effectieve vaardigheden op het gebied van gebruikers- en bestandsbeheer zijn essentiële hulpmiddelen voor elke systeembeheerder. In dit artikel hebben we de basisbeginselen besproken en we hopen dat u dit als een goed startpunt kunt gebruiken om op voort te bouwen. Laat gerust uw opmerkingen of vragen hieronder achter, wij zullen snel reageren.