käyttäjän lisääminen on yksi perustavanlaatuisimmista harjoituksista missä tahansa tietokonejärjestelmässä; tässä artikkelissa keskitytään siihen, miten se tehdään Linux-järjestelmässä.
ennen aloittamista haluan mainita kolme perusasiaa, jotka on pidettävä mielessä. Ensinnäkin, kuten useimmissa käyttöjärjestelmissä, Linux-käyttäjät tarvitsevat tilin voidakseen kirjautua sisään. Tämä artikkeli koskee erityisesti paikallisia tilejä, ei LDAP: n kaltaisia verkkotilejä. Toiseksi tileillä on sekä nimi (kutsutaan käyttäjätunnukseksi) että numero (kutsutaan käyttäjätunnukseksi). Kolmanneksi käyttäjät sijoitetaan tyypillisesti ryhmään. Ryhmillä on myös nimi ja ryhmätunnus.
kuten arvata saattaa, Linux sisältää komentorivityökalun käyttäjien lisäämiseen; sen nimi on useradd. Saatat myös löytää komentolisäkkeen. Monet jakelut ovat lisänneet tämän symbolisen linkin useradd-komentoon mukavuussyistä.
$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd
Katsotaanpa useradd.
Huom: tässä artikkelissa kuvatut oletusarvot vastaavat Red Hat Enterprise Linux 8.0: n oletusarvoja. Saatat löytää hienoisia eroja näissä tiedostoissa ja tiettyjä oletusarvoja muissa Linux-jakeluissa tai muissa Unix-käyttöjärjestelmissä, kuten FreeBSD: ssä tai Solariksessa.
oletuskäyttäytyminen
useraddin peruskäyttö on melko yksinkertaista: käyttäjä voidaan lisätä vain antamalla käyttäjätunnuksensa.
$ sudo useradd sonny
tässä esimerkissä useradd-komento luo tilin nimeltä sonny. Samalla luodaan samanniminen ryhmä, johon sonny sijoitetaan ensisijaiseksi ryhmäksi. On muitakin parametreja, kuten kieli ja komentotulkki, joita käytetään asetustiedostoissa /etc/default/useradd ja /etc/login asetettujen oletusten ja arvojen mukaisesti.defs. Tämä riittää yleensä yksittäiseen, henkilökohtaiseen järjestelmään tai pieneen, yhden palvelimen liiketoimintaympäristöön.
vaikka yllä olevat kaksi tiedostoa ohjaavat useraddin käyttäytymistä, käyttäjän tiedot tallennetaan muihin / etc-hakemistosta löytyviin tiedostoihin, joihin viittaan koko tässä artikkelissa.
File | Fields (bold—set by useradd) | |
---|---|---|
passwd | Stores user account details | username:unused:uid:gid:comment:homedir:Shell |
Shadow | Stores user account security details | username:password:lastchange:minimum:maximum:warn:inaktiivic:expire:unused |
ryhmä | tallentaa ryhmän tiedot | ryhmänimi:käyttämätön:gid:jäsenet |
muokattavissa oleva käyttäytyminen
komentorivi mahdollistaa räätälöinnin aikoja varten, jolloin ylläpitäjä tarvitsee hienompaa ohjausta, kuten käyttäjän tunnusnumeron määrittämistä.
käyttäjä-ja ryhmätunnukset
oletuksena useradd yrittää käyttää samaa numeroa Käyttäjätunnukselle (UID) ja ensisijaiselle ryhmätunnukselle (gid), mutta takeita ei ole. Vaikka UID: n ja GID: n ei tarvitse täsmätä, ylläpitäjien on helpompi hallita niitä, kun ne vastaavat.
minulla on juuri se skenaario selitettävänä. Entä jos lisään toisen tilin, tällä kertaa Timmylle. Kahden käyttäjän, Sonnyn ja Timmyn, vertailu osoittaa, että sekä käyttäjät että heidän ensisijaiset ryhmänsä luotiin käyttämällä getent-komentoa.
$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash
$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:
valitettavasti käyttäjien UID tai ensisijainen GID eivät täsmää. Tämä johtuu siitä, että oletuskäyttäytyminen on antaa seuraava käytettävissä oleva UID käyttäjälle ja yrittää sitten antaa sama numero ensisijaiselle ryhmälle. Jos kyseinen numero on kuitenkin jo käytössä, ryhmälle annetaan seuraava käytettävissä oleva GID. Selittääkseni, mitä tapahtui, oletan, että ryhmä gid 1001 on jo olemassa ja anna komento vahvistaa.
$ getent group 1001
book:x:1001:alan
RYHMÄKIRJA, jossa on tunnus 1001, on aiheuttanut sen, että Gid: t ovat yhden pois päältä. Tämä on esimerkki, jossa järjestelmän ylläpitäjän olisi otettava enemmän kontrollia käyttäjien luomisprosessista. Tämän ongelman ratkaisemiseksi minun on ensin määritettävä seuraava käytettävissä oleva käyttäjä – ja ryhmätunnus, jotka vastaavat toisiaan. Komennot getent group ja getent passwd auttavat seuraavan käytettävissä olevan numeron määrittämisessä. Tämä luku voidaan ohittaa-u-argumentilla.
$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:
toinen hyvä syy ID: n määrittämiseen on käyttäjille, jotka käyttävät tiedostoja verkon tiedostojärjestelmää (Network File System, NFS) käyttävässä etäjärjestelmässä. NFS on helpompi hallita, kun kaikille asiakas-ja palvelinjärjestelmille on määritetty sama tunnus tietylle käyttäjälle. Käsittelen tätä hieman yksityiskohtaisemmin artikkelissani autofs: n käyttämisestä NFS-osakkeiden liittämiseen.
enemmän räätälöintiä
hyvin usein käyttäjälle on kuitenkin määriteltävä muita tiliparametreja. Tässä on lyhyitä esimerkkejä yleisimmistä mukautuksista, joita saatat joutua käyttämään.
kommentti
kommentointivalinta on selkotekstikenttä, jolla voidaan antaa lyhyt kuvaus tai muita tietoja-C-argumentin avulla.
$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash
ryhmät
käyttäjälle voidaan antaa yksi ensisijainen ryhmä ja useita toissijaisia ryhmiä. Argumentti-g määrittää ensisijaisen ryhmän nimen tai GID: n. Jos sitä ei ole määritetty, useradd luo ensisijaisen ryhmän, jolla on käyttäjän sama nimi (kuten yllä on esitetty). Argumenttia-g (isoilla kirjaimilla) käytetään antamaan pilkulla erotettu luettelo ryhmistä, joihin käyttäjä sijoitetaan; näitä kutsutaan toissijaisiksi ryhmiksi.
$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)
kotihakemisto
useraddin oletuskäyttäytyminen on luoda käyttäjän kotihakemisto / home. Kotihakemiston eri osa-alueet voidaan kuitenkin ohittaa seuraavilla argumenteilla. -B asettaa toisen hakemiston, johon käyttäjäkodit voidaan sijoittaa. Esimerkiksi /home2 oletusarvon / home sijaan.
$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash
– d: n avulla voit määrittää kotihakemiston, jolla on eri nimi kuin käyttäjällä.
$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash
luurankohakemisto
– k ohjeistaa, että Uuden käyttäjän uudessa kotihakemistossa on kaikki/etc / skel-hakemistossa olevat tiedostot. Nämä ovat yleensä komentotulkin asetustiedostoja, mutta ne voivat olla mitä tahansa, jonka järjestelmänvalvoja haluaisi asettaa kaikkien uusien käyttäjien saataville.
Shell
– s-argumenttia voidaan käyttää komentotulkin määrittelyyn. Oletusarvo käytetään, jos mitään muuta ei ole määritetty. Esimerkiksi seuraavassa shell bash on määritelty oletusasetustiedostossa, mutta Wally on pyytänyt zsh: ta.
$ grep SHELL /etc/default/useradd
SHELL=/bin/bash
$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh
turvallisuus
turvallisuus on olennainen osa käyttäjien hallintaa, joten useradd-komennolla on useita vaihtoehtoja. Käyttäjätilille voidaan antaa viimeinen käyttöpäivä muodossa VVVV-KK-PP käyttäen-E-argumenttia.
$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:
tili voidaan myös poistaa käytöstä automaattisesti, jos salasana vanhenee. – F-argumentti määrittää, kuinka monta päivää salasanan vanhentumisesta on kulunut ennen kuin tili poistetaan käytöstä. Nolla on välitön.
$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::
reaalimaailman esimerkki
käytännössä useita näistä argumenteista voidaan käyttää uutta käyttäjätiliä luotaessa. Jos minun on esimerkiksi luotava Perrylle tili, saatan käyttää seuraavaa komentoa:
$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry
Katso yllä olevat kohdat ymmärtääkseni jokaisen vaihtoehdon. Tarkista tulokset:
$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)
joitakin lopullisia neuvoja
useradd-komento on ”must-know” mille tahansa Unix – (ei vain Linux) ylläpitäjälle. On tärkeää ymmärtää kaikki sen vaihtoehdot, koska käyttäjien luominen on jotain, että haluat saada oikein ensimmäisellä kerralla. Tämä tarkoittaa, että sinulla on hyvin harkittu nimeämiskäytäntö, joka sisältää Oman uid/GID-alueen, joka on varattu käyttäjillesi koko yrityksessäsi, ei vain yhdessä järjestelmässä-erityisesti, kun työskentelet kasvavassa organisaatiossa.