Käyttäjien ja ryhmien hallinta, tiedostojen käyttöoikeudet ja attribuutit sekä sudo-käytön salliminen tileillä - Osa 8


Viime elokuussa Linux-säätiö aloitti LFCS-sertifioinnin (Linux Foundation Certified Sysadmin), aivan uuden ohjelman, jonka tarkoituksena on antaa yksilöille mahdollisuus suorittaa koe kaikkialla ja missä tahansa. hanki Linux-järjestelmien perus- ja keskitason operatiivisen tuen sertifiointi, joka sisältää käynnissä olevien järjestelmien ja palveluiden tukemisen sekä yleisen seurannan ja analyysin sekä älykkään päätöksenteon, jotta voit päättää, milloin on tarpeen viedä asioita korkeamman tason tukiryhmille.

Katso nopeasti seuraava video, joka kuvaa Linux Foundationin sertifiointiohjelman johdannon.

Tämä artikkeli on osa 8 10 opetusohjelman pitkästä sarjasta. Tässä osiossa opastamme sinua hallitsemaan käyttäjien ja ryhmien käyttöoikeuksia Linux-järjestelmässä, joita tarvitaan LFCS-sertifiointikokeeseen.

Koska Linux on monen käyttäjän käyttöjärjestelmä (sikäli, että useat käyttäjät eri tietokoneissa tai päätteissä voivat käyttää samaa järjestelmää), sinun on tiedettävä, kuinka tehokasta käyttäjien hallintaa: kuinka lisätä, muokata, keskeyttää tai poistaa käyttäjätilit ja myöntää heille tarvittavat oikeudet suorittaa heille osoitetut tehtävät.

Käyttäjätilien lisääminen

Voit lisätä uuden käyttäjätilin suorittamalla jommankumman seuraavista kahdesta komennosta pääkäyttäjänä.

adduser [new_account]
useradd [new_account]

Kun järjestelmään lisätään uusi käyttäjätili, suoritetaan seuraavat toiminnot.

1. Hänen kotihakemistonsa luodaan (oletuksena /home/username).

2. Seuraavat piilotetut tiedostot kopioidaan käyttäjän kotihakemistoon, ja niitä käytetään antamaan ympäristömuuttujat hänen käyttäjäistuntoonsa.

.bash_logout
.bash_profile
.bashrc

3. Käyttäjälle luodaan sähköpostitulostus osoitteeseen /var/spool/mail/käyttäjänimi.

4. Ryhmä luodaan ja sille annetaan sama nimi kuin uudelle käyttäjätilille.

Ymmärtää /etc/passwd

Täydelliset tilitiedot on tallennettu /etc/passwd-tiedostoon. Tämä tiedosto sisältää tietueen järjestelmän käyttäjätiliä kohti ja sen muoto on seuraava (kentät on erotettu kaksoispisteellä).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. Kentät [username] ja [Comment] ovat itsestään selviä.
  2. Toisessa kentässä oleva x osoittaa, että tili on suojattu varjosalasanalla (hakemistossa /etc/shadow), jota tarvitaan kirjautumiseen käyttäjänä [käyttäjänimi] .
  3. Kentät [UID] ja [GID] ovat kokonaislukuja, jotka edustavat käyttäjätunnusta ja ensisijaista ryhmätunnusta, joihin [käyttäjänimi] kuuluu. .
  4. [Kotihakemisto] osoittaa absoluuttisen polun käyttäjän [käyttäjänimi] kotihakemistoon ja
  5. [Oletuskuori] on komentotulkki, joka on tämän käyttäjän käytettävissä, kun hän kirjautuu järjestelmään.
Ymmärtää /etc/group

Ryhmätiedot on tallennettu /etc/group-tiedostoon. Jokaisella tietueella on seuraava muoto.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Ryhmän nimi] on ryhmän nimi.
  2. x kohdassa [Ryhmän salasana] osoittaa, että ryhmän salasanoja ei käytetä.
  3. [GID]: sama kuin /etc/passwd.
  4. [Ryhmän jäsenet]: pilkuilla eroteltu luettelo käyttäjistä, jotka ovat [Ryhmän nimi] jäseniä.

Kun olet lisännyt tilin, voit muokata seuraavia tietoja (muutamia kenttiä mainitaksesi) usermod-komennolla, jonka usermodin perussyntaksi on seuraava.

usermod [options] [username]
Tilin vanhenemispäivän asettaminen

Käytä –expiredate-merkkiä ja päivämäärää muodossa VVVV-KK-PP.

usermod --expiredate 2014-10-30 tecmint
Käyttäjän lisääminen lisäryhmiin

Käytä yhdistettyjä -aG- tai –append –groups -vaihtoehtoja, joita seuraa pilkuilla eroteltu ryhmien luettelo.

usermod --append --groups root,users tecmint
Käyttäjän kotihakemiston oletussijainnin muuttaminen

Käytä -d- tai -home-vaihtoehtoa ja sen jälkeen absoluuttista polkua uuteen kotihakemistoon.

usermod --home /tmp tecmint
Käyttäjän oletuksena käyttämän kuoren vaihtaminen

Käytä –shell ja sen jälkeen polku uuteen kuoreen.

usermod --shell /bin/sh tecmint
Näytä ryhmät, joiden jäsen käyttäjä on
groups tecmint
id tecmint

Suoritetaan nyt kaikki yllä olevat komennot yhdellä kertaa.

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

Yllä olevassa esimerkissä asetamme tecmint-käyttäjätilin viimeiseksi voimassaolopäiväksi 30. lokakuuta 2014. Lisäämme tilin myös juuriryhmään ja käyttäjäryhmään. Lopuksi asetamme sh sen oletuskuoreen ja muutamme kotihakemiston sijainniksi /tmp:

Lue myös:

  1. 15 useradd-komentoesimerkkejä Linuxissa
  2. 15 usermod komentoesimerkkiä Linuxissa

Olemassa oleville tileille voimme myös tehdä seuraavat toimet.

Tilin poistaminen käytöstä lukitsemalla salasana

Käytä -L (isot L) tai –lock-vaihtoehtoa lukitaksesi käyttäjän salasanan.

usermod --lock tecmint
Käyttäjän salasanan avaaminen

Käytä –u- tai –unlock-vaihtoehtoa avataksesi käyttäjän salasanan, joka oli aiemmin estetty.

usermod --unlock tecmint

Luodaan uusi ryhmä luku- ja kirjoitusoikeuksia varten tiedostoille, joita useiden käyttäjien on käytettävä

Suorita seuraavat komentosarjat saavuttaaksesi tavoitteen.

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
Ryhmän poistaminen

Voit poistaa ryhmän seuraavalla komennolla.

groupdel [group_name]

Jos ryhmän_nimi omistaa tiedostoja, niitä ei poisteta, mutta ryhmän omistajaksi määritetään poistetun ryhmän GID.

Linux-tiedostojen käyttöoikeudet

Perusluku-, kirjoitus- ja suorituslupien lisäksi, joista keskustelimme artikkelissa Arkistointityökalut ja tiedostomääritteiden asettaminen – tämän sarjan osa 3, on muitakin vähemmän käytettyjä (mutta ei vähemmän tärkeitä) käyttöoikeusasetuksia, joita joskus kutsutaan "erikoisiksi". käyttöoikeudet ”.

Kuten aiemmin käsitellyt perusoikeudet, ne asetetaan käyttämällä oktaalitiedostoa tai kirjaimella (symbolinen merkintä), joka ilmaisee luvan tyypin.

Käyttäjätilien poistaminen

Voit poistaa tilin (sekä sen kotihakemiston, jos se on käyttäjän omistuksessa, ja kaikki siinä olevat tiedostot sekä sähköpostin kelan) käyttämällä userdel-komentoa –remove-komennolla. vaihtoehto.

userdel --remove [username]

Ryhmän hallinta

Joka kerta kun järjestelmään lisätään uusi käyttäjätili, luodaan samanniminen ryhmä, jonka ainoa jäsen on käyttäjätunnus. Muita käyttäjiä voidaan lisätä ryhmään myöhemmin. Yksi ryhmien tarkoitus on toteuttaa yksinkertainen pääsynhallinta tiedostoihin ja muihin järjestelmäresursseihin asettamalla oikeat käyttöoikeudet näille resursseille.

Oletetaan esimerkiksi, että sinulla on seuraavat käyttäjät.

  1. käyttäjä1 (ensisijainen ryhmä: käyttäjä1)
  2. käyttäjä2 (ensisijainen ryhmä: käyttäjä2)
  3. käyttäjä3 (ensisijainen ryhmä: käyttäjä3)

Kaikki he tarvitsevat luku- ja kirjoitusoikeudet tiedostoon nimeltä common.txt, joka sijaitsee jossain paikallisessa järjestelmässäsi tai ehkä verkkojaossa, joka käyttäjä1 on luonut. Saatat tuntea houkutusta tehdä jotain, kuten

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]

Tämä antaa kuitenkin vain luku- ja kirjoitusoikeudet tiedoston omistajalle ja käyttäjille, jotka ovat tiedoston ryhmän omistajan jäseniä (käyttäjä1<). tässä tapauksessa). Jälleen saatat joutua houkuttelemaan lisäämään user2 ja user3 ryhmään user1, mutta se antaa heille myös pääsyn muihin omistamiinsa tiedostoihin. käyttäjän käyttäjä1 ja ryhmän käyttäjä1 mukaan.

Tässä ryhmät ovat hyödyllisiä, ja tässä on mitä sinun tulee tehdä tällaisessa tapauksessa.

Setuidin ymmärtäminen

Kun setuid-lupaa käytetään suoritettavassa tiedostossa, ohjelmaa suorittava käyttäjä perii ohjelman omistajan voimassa olevat oikeudet. Koska tämä lähestymistapa voi kohtuudella aiheuttaa turvallisuusongelmia, tiedostojen määrä, joilla on asetukset, on pidettävä mahdollisimman pienenä. Löydät todennäköisesti ohjelmia, joilla on tämä käyttöoikeus, kun järjestelmän käyttäjä tarvitsee pääsyn pääkäyttäjän omistamaan tiedostoon.

Yhteenvetona, kyse ei ole vain siitä, että käyttäjä voi suorittaa binääritiedoston, vaan myös siitä, että hän voi tehdä sen rootin oikeuksilla. Tarkistetaan esimerkiksi tiedoston /bin/passwd käyttöoikeudet. Tätä binaaria käytetään tilin salasanan vaihtamiseen ja se muokkaa /etc/shadow-tiedostoa. Pääkäyttäjä voi vaihtaa kenen tahansa salasanan, mutta kaikkien muiden käyttäjien tulisi voida vaihtaa vain omansa.

Näin ollen kaikilla käyttäjillä tulee olla lupa suorittaa /bin/passwd, mutta vain pääkäyttäjä voi määrittää tilin. Muut käyttäjät voivat vaihtaa vain omia salasanojaan.

Ymmärtää Setgid

Kun setgid-bitti on asetettu, todellisen käyttäjän GID muuttuu ryhmän omistajan oikeaksi. Siten kuka tahansa käyttäjä voi käyttää tiedostoa kyseisen tiedoston ryhmäomistajalle myönnetyillä oikeuksilla. Lisäksi, kun setgid-bitti on asetettu hakemistoon, äskettäin luodut tiedostot perivät saman ryhmän kuin hakemisto, ja äskettäin luodut alihakemistot perivät myös päähakemiston setgid-bitin. Käytät todennäköisesti tätä lähestymistapaa aina, kun tietyn ryhmän jäsenet tarvitsevat pääsyn kaikkiin hakemiston tiedostoihin riippumatta tiedoston omistajan ensisijaisesta ryhmästä.

chmod g+s [filename]

Aseta setgid oktaalimuotoon lisäämällä numero 2 nykyisten (tai haluttujen) perusoikeuksien eteen.

chmod 2755 [directory]
SETGID:n asettaminen hakemistoon

Sticky Bitin ymmärtäminen

Kun tiedostoille on asetettu "sticky bit", Linux vain jättää sen huomioimatta, kun taas hakemistojen kohdalla se estää käyttäjiä poistamasta tai jopa nimeämästä uudelleen sen sisältämiä tiedostoja, ellei käyttäjä omista hakemistoa, tiedosto tai on root.

chmod o+t [directory]

Jos haluat asettaa kiinnibitin oktaalimuotoon, lisää numero 1 nykyisten (tai haluttujen) perusoikeuksien eteen.

chmod 1755 [directory]

Ilman tarrabittiä kuka tahansa, joka pystyy kirjoittamaan hakemistoon, voi poistaa tai nimetä tiedostoja uudelleen. Tästä syystä tahmea bitti löytyy yleisesti hakemistoista, kuten /tmp, jotka ovat maailmanlaajuisesti kirjoitettavissa.

Erityiset Linux-tiedostomääritteet

On myös muita määritteitä, jotka mahdollistavat lisärajoituksia tiedostoille sallituille toiminnoille. Estä esimerkiksi tiedoston uudelleennimeäminen, siirtäminen, poistaminen tai jopa muokkaaminen. Ne asetetaan chattr-komennolla, ja niitä voi tarkastella lsattr-työkalulla seuraavasti.

chattr +i file1
chattr +a file2

Kun nämä kaksi komentoa on suoritettu, tiedosto1 on muuttumaton (eli sitä ei voi siirtää, nimetä uudelleen, muokata tai poistaa), kun taas tiedosto2 siirtyy vain liittämistilaan (voi olla vain Avaa liitetilassa kirjoittamista varten).

Pääsy juuritiliin ja sudon käyttö

Yksi tavoista, joilla käyttäjät voivat päästä päätiliin, on kirjoittaa.

su

ja syötä sitten rootin salasana.

Jos todennus onnistuu, kirjaudut sisään juurikäyttäjänä nykyiseen työhakemistoon samalla tavalla kuin aiemmin. Jos haluat sen sijaan sijoitetun pääkäyttäjän kotihakemistoon, suorita.

su -

ja anna sitten rootin salasana.

Yllä oleva menettely edellyttää, että normaali käyttäjä tietää rootin salasanan, mikä aiheuttaa vakavan turvallisuusriskin. Tästä syystä järjestelmänvalvoja voi määrittää sudo-komennon sallimaan tavallisen käyttäjän suorittaa komentoja eri käyttäjänä (yleensä pääkäyttäjänä) hyvin kontrolloidulla ja rajoitetulla tavalla. Siten käyttäjälle voidaan asettaa rajoituksia, jotta hän voi suorittaa yhden tai useamman tietyn etuoikeutetun komennon eikä muita.

Lue myös: ero su- ja sudo-käyttäjän välillä

Todentaakseen sudon avulla käyttäjä käyttää omaa salasanaansa. Komennon antamisen jälkeen meiltä kysytään salasanaamme (ei pääkäyttäjän) ja jos todennus onnistuu (ja jos käyttäjälle on myönnetty oikeudet suorittaa komento), määritetty komento suoritetaan.

Järjestelmänvalvojan on muokattava /etc/sudoers-tiedostoa, jotta hän voi myöntää käyttöoikeuden sudolle. On suositeltavaa, että tätä tiedostoa muokataan visudo-komennolla sen sijaan, että se avattaisiin suoraan tekstieditorilla.

visudo

Tämä avaa tiedoston /etc/sudoers komennolla vim (voit muokata tiedostoa noudattamalla ohjeita, jotka on annettu kohdassa Asenna ja käytä vim editorina – tämän sarjan osa 2).

Nämä ovat tärkeimmät rivit.

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

Katsotaanpa niitä tarkemmin.

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

Tällä rivillä voit määrittää hakemistot, joita käytetään sudossa, ja sitä käytetään estämään käyttäjäkohtaisten hakemistojen käyttö, mikä voi vahingoittaa järjestelmää.

Seuraavilla riveillä määritetään käyttöoikeudet.

root        ALL=(ALL) ALL
  1. Ensimmäinen KAIKKI avainsana osoittaa, että tämä sääntö koskee kaikkia isäntiä.
  2. Toinen KAIKKI osoittaa, että ensimmäisen sarakkeen käyttäjä voi suorittaa komentoja minkä tahansa käyttäjän oikeuksin.
  3. Kolmas KAIKKI tarkoittaa, että mikä tahansa komento voidaan suorittaa.
tecmint     ALL=/bin/yum update

Jos käyttäjää ei ole määritetty =-merkin jälkeen, sudo olettaa pääkäyttäjän. Tässä tapauksessa käyttäjä tecmint voi suorittaa yum-päivityksen pääkäyttäjänä.

gacanepa    ALL=NOPASSWD:/bin/updatedb

NOPASSWD-direktiivi sallii käyttäjän gacanepan suorittaa /bin/updatedb ilman salasanaa.

%admin      ALL=(ALL) ALL

Merkki % osoittaa, että tämä rivi koskee ryhmää nimeltä admin . Rivin loppuosan merkitys on sama kuin tavallisella käyttäjällä. Tämä tarkoittaa, että ryhmän "admin" jäsenet voivat suorittaa kaikki komennot kuin kuka tahansa käyttäjä kaikilla isännillä.

Jos haluat nähdä, mitä oikeuksia sudo sinulle myöntää, käytä "-l" -vaihtoehtoa niiden luetteloimiseksi.

PAM (Pluggable Authentication Modules)

Pluggable Authentication Modules (PAM) -moduulit tarjoavat joustavuutta tietyn todennusjärjestelmän asettamiseen sovellus- ja/tai palvelukohtaisesti moduulien avulla. Tämä työkalu, joka on läsnä kaikissa nykyaikaisissa Linux-jakeluissa, voitti kehittäjien usein kohtaaman ongelman Linuxin alkuaikoina, jolloin jokainen todennusta vaativa ohjelma oli käännettävä erityisesti, jotta tarvittava tieto saatiin selville.

Esimerkiksi PAM:n kanssa ei ole väliä, onko salasanasi tallennettu kansioon /etc/shadow vai erilliselle palvelimelle verkon sisällä.

Esimerkiksi kun kirjautumisohjelman täytyy todentaa käyttäjä, PAM tarjoaa dynaamisesti kirjaston, joka sisältää oikean todennusmallin toiminnot. Siten kirjautumissovelluksen (tai minkä tahansa muun PAM:a käyttävän ohjelman) todennusmallin muuttaminen on helppoa, koska se edellyttää vain asetustiedoston muokkaamista (todennäköisimmin sovelluksen mukaan nimetty tiedosto, joka sijaitsee kohdassa /etc/pam.d ja vähemmän todennäköisesti tiedostossa /etc/pam.conf).

Sisältö /etc/pam.d osoittavat, mitkä sovellukset käyttävät PAM:ia natiivisti. Lisäksi voimme selvittää, käyttääkö tietty sovellus PAM:ia tarkistamalla, onko siihen linkitetty PAM-kirjasto (libpam):


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

Yllä olevasta kuvasta näemme, että libpam on linkitetty kirjautumissovellukseen. Tämä on järkevää, koska tämä sovellus osallistuu järjestelmän käyttäjän todentamiseen, kun taas top ei.

Tarkastellaanpa PAM-määritystiedostoa passwdille – kyllä, hyvin tunnettu apuohjelma käyttäjien salasanojen vaihtamiseen. Se sijaitsee osoitteessa /etc/pam.d/passwd:


cat /etc/passwd

Ensimmäinen sarake ilmaisee todennuksen tyypin, jota käytetään moduulipolun kanssa (kolmas sarake). Kun yhdysviiva ilmestyy ennen tyyppiä, PAM ei tallenna järjestelmälokiin, jos moduulia ei voida ladata, koska sitä ei löydy järjestelmästä.

Seuraavat todennustyypit ovat saatavilla:

  1. tili: tämä moduulityyppi tarkistaa, onko käyttäjä tai palvelu toimittanut kelvolliset tunnistetiedot todennusta varten.
  2. auth: tämä moduulityyppi varmistaa, että käyttäjä on se, joka hän väittää olevansa, ja myöntää tarvittavat oikeudet.
  3. salasana: tämän moduulityypin avulla käyttäjä tai palvelu voi päivittää salasanansa.
  4. istunto: tämä moduulityyppi ilmaisee, mitä tulee tehdä ennen ja/tai sen jälkeen, kun todennus onnistuu.

Toinen sarake (nimeltään control) osoittaa, mitä pitäisi tapahtua, jos todennus tällä moduulilla epäonnistuu:

  1. tarvike: jos todennus tämän moduulin kautta epäonnistuu, yleinen todennus evätään välittömästi.
  2. pakollinen on samanlainen kuin requisite, vaikka kaikki muut tämän palvelun luetellut moduulit kutsutaan ennen todennuksen kieltämistä.
  3. riittävä: jos todennus tämän moduulin kautta epäonnistuu, PAM myöntää edelleen todennuksen, vaikka edellinen vaadituksi merkitty epäonnistuisi.
  4. valinnainen: jos todennus tämän moduulin kautta epäonnistuu tai onnistuu, mitään ei tapahdu, ellei tämä ole ainoa tälle palvelulle määritetty tyyppinsä moduuli.
  5. include tarkoittaa, että tietyn tyyppiset rivit tulee lukea toisesta tiedostosta.
  6. alipino on samanlainen kuin sisällyttäminen, mutta todennusvirheet tai onnistumiset eivät aiheuta koko moduulin poistumista, vaan ainoastaan alipinon.

Neljäs sarake, jos sellainen on, näyttää moduulille välitettävät argumentit.

Tiedoston /etc/pam.d/passwd (näkyy yllä) kolme ensimmäistä riviä lataa system-auth-moduuli tarkistaaksesi, että käyttäjä on toimittanut kelvolliset kirjautumistiedot (tili). . Jos näin on, hän voi muuttaa todennustunnusta (salasanaa) antamalla luvan käyttää passwd:tä (auth).

Esimerkiksi jos liität


remember=2

seuraavalle riville


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

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


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

kunkin käyttäjän kaksi viimeistä tiivistettyä salasanaa tallennetaan kansioon /etc/security/opasswd, jotta niitä ei voi käyttää uudelleen:

Yhteenveto

Tehokkaat käyttäjien ja tiedostojen hallintataidot ovat välttämättömiä työkaluja kaikille järjestelmänvalvojille. Tässä artikkelissa olemme käsitelleet perusasiat ja toivomme, että voit käyttää sitä hyvänä lähtökohtana rakentaa. Voit vapaasti jättää kommenttisi tai kysymyksesi alle, niin vastaamme nopeasti.