freebsd gebruikersgroepen. Een FreeBSD-gebruiker toevoegen. Het Freebsd-gebruikerswachtwoord wijzigen

| |

Zoals in elk ander Unix-achtig systeem besturingssysteem,Op FreeBSD kunnen gebruikersaccounts interactieve toegang bieden tot het ,systeem. Als ze verstandig worden beheerd, voegen gebruikersaccounts een extra laag systeembeveiliging toe door de mogelijkheid te bieden gebruikers te beperken tot alleen de bestanden en mappen die ze nodig hebben om hun werk te doen.

Deze handleiding gaat over het beheren van gebruikers op een FreeBSD-systeem; het behandelt de volgende onderwerpen:

  • Hoe een gebruiker toevoegen;
  • Hoe superuser-rechten over te dragen;
  • Een gebruiker verwijderen;
  • Een account blokkeren en deblokkeren.

Vereisten

Om deze tutorial te voltooien, moet u root-toegang hebben tot de FreeBSD-server of verhoogde sudo-rechten hebben.

Een gebruiker aanmaken

De eenvoudigste manier om een ​​gebruiker aan te maken is door het hulpprogramma adduser te gebruiken, dat is gebaseerd op de opdracht pw. Het adduser-commando voegt een gebruiker toe aan het systeem en doet alles noodzakelijke acties in de passwd-, master.passwd- en groepsbestanden, en maakt een nieuw thuismap. De opdracht kan worden uitgevoerd in de interactieve modus (dat wil zeggen, waarbij om informatie over een nieuwe gebruiker wordt gevraagd) of in de niet-interactieve modus (wat handiger is bij het maken van een gebruikersgroep). IN deze handleiding Er wordt rekening gehouden met het gebruik van de opdracht in de interactieve modus.

Om adduser in de interactieve modus te gebruiken, waarmee u één gebruiker tegelijk kunt aanmaken, voert u eenvoudigweg de opdracht uit zonder argumenten:

Op in dit stadium U moet informatie over de nieuwe gebruiker verstrekken door een reeks vragen te beantwoorden. Deze vragen zien er als volgt uit (voorwaardelijke antwoorden daarop zijn rood gemarkeerd):

Gebruikersnaam: Finn
Volledige naam: Finn Human
Uid (standaard leeg laten):
Inloggen groep:
Logingroep is finn. Finn uitnodigen voor andere groepen? : wiel
Inloggen klasse:
Shell (sh csh tcsh nologin):
Thuismap:
Machtigingen voor de thuismap (standaard leeg laten):
Wachtwoordgebaseerde authenticatie gebruiken? :
Een leeg wachtwoord gebruiken? (ja/nee):
Een willekeurig wachtwoord gebruiken? (ja/nee):
Wachtwoord invoeren: wachtwoord
Voer het wachtwoord opnieuw in: wachtwoord
Het account vergrendelen na het aanmaken? :

Veel velden kunnen leeg worden gelaten, hierdoor worden de standaardwaarden ingesteld (zoals in de bovenstaande code); Er zijn echter een paar belangrijke regels:

  • Gebruikersnaam: Voer de naam van de nieuwe gebruiker in.
  • Inloggroep is . Uitnodiging in andere groepen?: met dit veld kunt u de gebruiker aan andere groepen toevoegen door de groepsnamen op te geven, gescheiden door een spatie. Dit wordt meestal gebruikt om een ​​nieuwe gebruiker sudo-rechten te verlenen door deze aan de wielgroep toe te voegen. Op FreeBSD kunnen gebruikers van de wheel-groep opdrachten uitvoeren met superuser-rechten. Als u de gebruiker zijn standaardrechten wilt laten behouden, laat u dit veld leeg.

Alle andere velden liggen vrij voor de hand; overal, behalve in het wachtwoordveld, kunt u de standaardwaarden behouden. Een meer gedetailleerde beschrijving van alle velden kan worden verkregen met behulp van het commando man adduser.

Na het invullen van de velden verschijnt basisinformatie over de nieuwe gebruiker op het scherm.

Gebruikersnaam: Finn
Wachtwoord: *****
Volledige naam: Finn Human
Uid: 1002
Klas:
Groepen: finn-wiel
Thuis: /home/finn
Thuismodus:
Shell: /bin/sh
Vergrendeld: nee
OK? (ja/nee): ja

Controleer de gebruikersinformatie en antwoord, als alles klopt, in het veld ‘OK?’ met ja, waarna de gebruiker wordt toegevoegd aan het systeem en er een bevestiging op het scherm verschijnt:

adduser: INFO: Succesvol toegevoegd (finn) aan de gebruikersdatabase.

De opdracht vraagt ​​dan of er nog een gebruiker moet worden aangemaakt:

Nog een gebruiker toevoegen? (ja/nee): nee
Tot ziens!

Als u geen gebruikers meer hoeft aan te maken, selecteert u Nee. Voer anders ja in en herhaal het hele bovenstaande proces

Hoe u rechten kunt overdragen naar Sudo

Op FreeBSD kunnen gebruikers met toegang tot het sudo-commando, net als op andere Unix-achtige besturingssystemen, commando's uitvoeren met root-rechten. Dat wil zeggen dat de opdracht sudo de bevoegdheden van een standaardgebruiker uitbreidt naar de bevoegdheden van de rootgebruiker.

Op FreeBSD hebben alle gebruikers in de wielgroep deze rechten; De reden voor dit gedrag is de volgende regel in het sudoers-bestand (/usr/local/etc/sudoers):

%wiel ALL=(ALL) NOPASSWD: ALLEN

Dat wil zeggen dat een gebruiker, om uitgebreide rechten te krijgen, hem aan de wielgroep moet toevoegen; Om dit te doen, gebruik je het pw groupmod commando (vergeet niet je gebruikersnaam op te geven):

sudo pw groupmod wheel -m finn

Met dit commando wordt de opgegeven gebruiker toegevoegd aan de wheel-groep in het bestand /etc/group, waardoor de gebruiker commando's kan uitvoeren als superuser.

Gebruikers verwijderen

Een gebruiker verwijderen uit FreeBSD-systemen Het rmuser-commando wordt gebruikt. U kunt het zonder argumenten uitvoeren, of u kunt onmiddellijk de naam opgeven van de gebruiker die u wilt verwijderen:

Als de naam van de gebruiker die u wilt verwijderen niet als argument is opgegeven, zal de opdracht u vragen een naam op te geven, waarna u bevestigt dat u de opdracht wilt uitvoeren en de thuismap van de gebruiker wilt verwijderen.

Voer een of meer gebruikersnamen in: finn
Overeenkomende wachtwoordinvoer:
finn:*:1002:1002::0:0:Finn Human:/home/finn:/bin/sh
Is dit de vermelding die u wilt verwijderen? j
De thuismap van de gebruiker verwijderen (/home/finn) y
Gebruiker verwijderen (finn): mailspool home passwd.

Gebruikers blokkeren

Om een ​​gebruiker op het systeem uit te schakelen, maar niet te verwijderen rekening en homedirectory, kunt u deze eenvoudigweg blokkeren. Gebruik hiervoor het commando pw lock + gebruikersnaam als argument:

sudo pw lock-gebruikersnaam

Met deze opdracht wordt het voorvoegsel *LOCKED* toegevoegd aan de gebruikersinvoer in het bestand /etc/master.passwd. Dergelijke gebruikers kunnen pas inloggen nadat ze zijn ontgrendeld.

Gebruikers deblokkeren

Om een ​​gebruiker te ontgrendelen, gebruikt u de opdracht pw unlock:

sudo pw unlock gebruikersnaam

Met deze opdracht wordt het voorvoegsel *LOCKED* verwijderd vóór de gebruikersinvoer in het bestand /etc/master.passwd.

Conclusie

Zoals u kunt zien, is het gebruikersbeheer vrij eenvoudig routinematige taak elke FreeBSD-serverbeheerder.

Trefwoorden: ,

Voorbeeld 13-2. Een gebruiker toevoegen in FreeBSD 5.X

# gebruiker toevoegen

Gebruikersnaam: jru

Volledige naam: J. Willekeurige gebruiker

Uid (standaard leeg laten):

Inloggen groep:

Logingroep is jru. jru uitnodigen voor andere groepen? : wiel

Inloggen klasse:

Shell (sh csh tcsh zsh nologin) : zsh

Thuismap:

Wachtwoordgebaseerde authenticatie gebruiken? :

Een leeg wachtwoord gebruiken? (ja/nee):

Een willekeurig wachtwoord gebruiken? (ja/nee):

Voer het wachtwoord opnieuw in:

Het account vergrendelen na het aanmaken? :

Volledige naam: J. Willekeurige gebruiker

Groepen: jru wiel

Shell: /usr/local/bin/zsh

OK? (ja/nee): Ja

adduser: INFO: Succesvol toegevoegd (jru) aan de gebruikersdatabase.

Nog een gebruiker toevoegen? (ja/nee): Nee

13.6.2. rmuser

Om een ​​gebruiker volledig uit het systeem te verwijderen, kunt u rmuser(8) gebruiken. Dit programma doet het volgende:

1. Verwijder de gebruikersinvoer uit crontab(1) (indien aanwezig).

2. Verwijdert taken op(1) die eigendom zijn van de gebruiker.

3. Doodt alle processen die eigendom zijn van de gebruiker.

4. Verwijdert de gebruiker uit het lokale wachtwoordbestand.

5. Verwijdert de homedirectory van de gebruiker (als deze toebehoort aan de gebruiker).

6. Verwijdert inkomende e-mail die eigendom is van de gebruiker uit /var/mail.

7. Verwijdert alle bestanden die eigendom zijn van de gebruiker uit tijdelijke bestandsmappen zoals /tmp.

8. Verwijdert ten slotte de gebruikersnaam uit alle groepen waartoe deze behoort in /etc/group.

Opmerking: Indien na deze verwijdering de groep leeg blijft en de groepsnaam overeenkomt met de gebruikersnaam, wordt deze verwijderd; Dit is nodig om aangepaste unieke groepen te verwijderen die door adduser(8) zijn gemaakt.

rmuser(8) kan niet worden gebruikt om het superuser-account te verwijderen, omdat dit bijna altijd het systeem zal vernietigen.

Standaard wordt de interactieve modus gebruikt, het programma probeert ervoor te zorgen dat u vertrouwen heeft in uw acties.

Voorbeeld 13-3. Interactieve accountverwijdering metrmuser

# rmuser jr

Overeenkomende wachtwoordinvoer:

jru:*:1001:1001::0:0:J. Willekeurige gebruiker:/home/jru:/usr/local/bin/zsh

Is dit de vermelding die u wilt verwijderen? j

De thuismap van de gebruiker verwijderen (/home/jru)? j

Wachtwoordbestand bijwerken, databases bijwerken, klaar.

Groepsbestand bijwerken: vertrouwd (groep jru verwijderen - persoonlijke groep is leeg) klaar.

Het inkomende e-mailbestand /var/mail/jru van de gebruiker verwijderen: klaar.

Bestanden die bij jru horen verwijderen uit /tmp: klaar.

Bestanden die bij jru horen verwijderen uit /var/tmp: klaar.

Bestanden die bij jru horen verwijderen uit /var/tmp/vi.recover: klaar.

13.6.3. chpass

chpass(1) verandert informatie in de gebruikersdatabase: wachtwoorden, shells, persoonlijke informatie.

Alleen systeembeheerders met superuser-rechten kunnen de informatie en wachtwoorden van andere gebruikers wijzigen met behulp van chpass(1).

Wanneer uitgevoerd zonder parameters (anders dan een optionele gebruikersnaam), roept chpass(1) een editor aan die informatie over de gebruiker bevat. Wanneer de gebruiker de editor verlaat, wordt de gebruikersdatabase bijgewerkt met deze informatie.

Opmerking: In FreeBSD 5.X wordt u om een ​​wachtwoord gevraagd nadat u de editor afsluit (tenzij u een superuser bent).

Voorbeeld 13-4. Interactief werken metchpasssupergebruiker

Gid [# of naam]: 1001

Wijziging:

Verlopen:

Thuismap: /home/jru

Shell: /usr/local/bin/zsh

Volledige naam: J. Willekeurige gebruiker

Kantoorlocatie:

Overige informatie:

Vaste gebruikers kunnen alleen veranderen een klein deel deze informatie, en alleen voor uw account.

Voorbeeld 13-5. Interactief werken metchpassregelmatige gebruiker

#Gebruikersdatabase wijzigen informatie voor jru.

Shell: /usr/local/bin/zsh

Volledige naam: J. Willekeurige gebruiker

Kantoorlocatie:

Overige informatie:

Opmerking: chfn(1) en chsh(1) zijn slechts verwijzingen naar chpass(1), net als ypchpass(1), ypchfn(1) en ypchsh(1). NIS wordt automatisch ondersteund, dus het is niet nodig om yp op te geven vóór de opdracht. Als dit niet duidelijk is, hoeft u zich geen zorgen te maken. NIS wordt in hoofdstuk behandeld. 23.

13.6.4. wachtwoord

passwd(1) is een gebruikelijke manier om het wachtwoord van een gebruiker zelf te wijzigen, of dat van een andere gebruiker als superuser.

Opmerking: Om onbedoelde of ongeautoriseerde wijzigingen te voorkomen, moet u het oude wachtwoord invoeren voordat u een nieuw wachtwoord instelt.

Voorbeeld 13-6. Uw wachtwoord wijzigen

% wachtwoord

Typ het nieuwe wachtwoord opnieuw:

Voorbeeld 13-7. Het wachtwoord van een andere gebruiker wijzigen als superuser

# passwd jru

Lokaal wachtwoord wijzigen voor jru.

Typ het nieuwe wachtwoord opnieuw:

passwd: de database bijwerken...

Opmerking: Net als bij chpass(1) is yppasswd(1) slechts een verwijzing naar passwd(1), dus NIS werkt met beide commando's.

13.6.5. pw

pw(8) is een opdrachtregelhulpprogramma voor het aanmaken, verwijderen, wijzigen en weergeven van gebruikers en groepen. Het functioneert als een externe interface voor systeembestanden gebruikers en groepen. pw(8) heeft een zeer krachtige set opdrachtregelopties, waardoor het geschikt is voor gebruik in shellscripts, maar nieuwe gebruikers kunnen het complexer vinden dan andere hier gepresenteerde opdrachten.

13.7. Gebruikersbeperking

Als u gebruikers heeft, kunt u overwegen de belasting van het systeem te beperken. FreeBSD biedt beheerders verschillende manieren om de hoeveelheid systeembronnen die gebruikers kunnen gebruiken te beperken. Er zijn twee soorten beperkingen: schijfquota en andere bronbeperkingen.

Schijfquota beperken de hoeveelheid ruimte die door gebruikers wordt gebruikt, een manier om de hoeveelheid snel te controleren zonder deze elke keer te hoeven berekenen. Quota worden besproken in Sectie. 16.14.

Andere beperkingen van hulpbronnen omvatten manieren om te beperken CPU-gebruik, geheugen en andere bronnen die door de gebruiker kunnen worden verbruikt. Beperkingen worden afgedwongen met behulp van accountklassen en worden in deze sectie besproken.

Accountklassen worden gedefinieerd in /etc/login.conf. De volledige semantiek valt buiten het bestek van het hier besproken materiaal, maar wordt in detail beschreven op de login.conf(5) manpagina. Het volstaat te zeggen dat aan elke gebruiker een klasse wordt toegewezen (standaard) en aan elke klasse een reeks kenmerken wordt toegewezen. Het kenmerk wordt gedefinieerd als een paar Naam=betekenis, Waar Naam dit is een specifieke identificatie, en betekenis dit is een willekeurige reeks die wordt verwerkt afhankelijk van de naam. Het instellen van klassen en kenmerken is vrij eenvoudig en wordt ook beschreven in login.conf(5).

Opmerking: Het systeem leest de instellingen in /etc/login.conf niet rechtstreeks, maar heeft toegang tot het databasebestand /etc/login.conf.db. Om /etc/login.conf.db te maken vanuit /etc/login.conf, voert u de volgende opdracht uit:

# cap_mkdb /etc/login.conf

Resourcelimieten verschillen van gebruikelijke kenmerken: Ten eerste is er voor elke beperking een “zachte” (huidige) en een “harde” beperking. De zachte limiet kan door de gebruiker of applicatie worden geconfigureerd, maar kan de harde limiet niet overschrijden. Dit laatste kan door de gebruiker worden verlaagd, maar nooit worden verhoogd. Ten tweede zijn de meeste resourcelimieten van toepassing op de processen van een specifieke gebruiker, en niet op de gebruiker in het algemeen. Merk op dat deze verschillen worden geïmplementeerd door de specifieke omgang met limieten en niet door de implementatie van de structuur van de rekeningkenmerken (d.w.z. het is niet echt speciaal geval van kenmerken).

Hieronder vindt u een lijst met de meest gebruikte resourcelimieten (de rest, samen met andere kenmerken, kunt u vinden in login.conf(5)).

Een limiet op de grootte van het kernbestand dat door het programma wordt gegenereerd, om voor de hand liggende redenen onderworpen aan andere beperkingen op de gebruikte schijfruimte (bijvoorbeeld bestandsgrootte of schijfquota). Het wordt echter vaak gebruikt als een minder restrictieve methode om de inname te beheersen. schijfruimte: Aangezien de gebruiker de kernbestanden niet zelf maakt en deze vaak niet verwijdert, kan het instellen van deze optie voorkomen dat de schijfquota opraken als groot programma(Bijvoorbeeld, emacs) zal een kernbestand maken.

Dit is de maximale hoeveelheid CPU-tijd die de gebruiker verbruikt. Processen die deze tijd overschrijden, worden door de kernel gedood.

Opmerking: Dit is een limiet voor wat u consumeert. tijd CPU, niet het percentage CPU-gebruik dat in sommige top(1)- en ps(1)-velden verschijnt. Beperkingen daarop zijn op het moment dat dit materiaal wordt geschreven onmogelijk en dergelijke beperkingen zijn praktisch nutteloos: de compiler - een volledig legale toepassing - kan soms gemakkelijk bijna 100% van de CPU gebruiken.

Dit is de maximale bestandsgrootte die door de gebruiker kan worden verwerkt. In tegenstelling tot schijfquota is deze limiet van toepassing op aparte bestanden, en niet op de volledige set bestanden die eigendom zijn van de gebruiker.

Dit is het maximale aantal processen dat door de gebruiker kan worden gestart. Dit aantal omvat zowel console- als achtergrondprocessen. Om voor de hand liggende redenen kunnen ze niet groter zijn dan de systeemlimiet die is opgegeven via de kern.maxproc-variabele sysctl(8). Houd er rekening mee dat het te strak instellen van beperkingen de gebruikerservaring kan verstoren: het is vaak handig om vanaf meerdere consoles in te loggen of kanalen te gebruiken. Sommige taken, zoals het compileren van een groot programma, brengen ook veel processen voort (bijvoorbeeld make(1), cc(1) en andere preprocessors).

Dit is de maximale hoeveelheid geheugen die door een proces kan worden vergrendeld (zie bijvoorbeeld mlock(2)). Sommige systeemkritische programma's, zoals amd(8), vergrendelen het geheugen zodat ze geen extra problemen voor het systeem veroorzaken wanneer ze worden verwijderd.

Dit is de maximale hoeveelheid geheugen die door processen kan worden ingenomen. Het omvat hoofd- en hoofdgeheugen en swapgebruik. Deze beperking lost niet alle problemen met het geheugengebruik op, maar het is een goed beginpunt.

Dit is het maximale aantal bestanden dat processen kunnen openen. Op FreeBSD worden bestanden ook gebruikt om sockets en IPC-kanalen weer te geven; Stel de waarde niet te klein in. De systeembrede limiet voor deze parameter wordt bepaald door de sysctl(8) kern.maxfiles variabele.

Dit is een beperking van de hoeveelheid netwerkgeheugen die door de gebruiker wordt verbruikt, d.w.z. mbufs. Het werd geïntroduceerd als reactie op oudere DoS-aanvallen waarbij meerdere sockets ontstonden, maar kan over het algemeen worden gebruikt om netwerkverbindingen te beperken.

Dit is de maximale grootte die de stapel van een proces kan bereiken. Deze instelling alleen kan de hoeveelheid geheugen die een programma kan gebruiken niet beperken, dus moet deze in combinatie met andere beperkingen worden gebruikt.

Er zijn verschillende andere aspecten waarmee u rekening moet houden bij het instellen van resourcelimieten. Hieronder vindt u enkele algemene tips, adviezen en diverse opmerkingen.

Processen die bij het opstarten van het systeem worden geladen door /etc/rc-scripts krijgen de daemon-klasse toegewezen.

Hoewel /etc/login.conf dat bij het systeem wordt geleverd, dat wel is goede bron juiste waarden voor de meeste beperkingen, alleen u, de beheerder, kan de juiste waarden voor uw systeem kennen. Het stellen van te zwakke limieten kan leiden tot misbruik van het systeem, en het stellen van te sterke limieten kan de prestaties belemmeren.

X Window System (X11)-gebruikers hebben mogelijk meer bronnen nodig dan andere gebruikers. X11 zelf verbruikt veel bronnen en lokt gebruikers ook uit om tegelijkertijd te draaien meer programma's.

Houd er rekening mee dat veel beperkingen van toepassing zijn op individuele processen en niet op de gebruiker in het algemeen. Als u bijvoorbeeld openfiles instelt op 50, betekent dit dat elk proces gestart door gebruiker, kan maximaal 50 bestanden openen. Het totale aantal bestanden dat door de gebruiker kan worden geopend, wordt dus berekend als openfiles maal maxproc. Dit geldt ook voor het geheugengebruik.

Voor meer informatie over resourcelimieten, accountklassen en kenmerken kunt u de betreffende handleidingpagina's raadplegen.

13.8. Personalisatie van gebruikers

Lokalisatie is een omgeving die door een systeembeheerder of gebruiker is geconfigureerd om met verschillende talen, tekensets, datum- en tijdstandaarden, enzovoort te werken. Dit wordt besproken in het lokalisatiehoofdstuk.

13.9. Groepen

Een groep is eenvoudigweg een lijst met gebruikers. Een groep wordt geïdentificeerd aan de hand van de naam en GID (Group ID). Op FreeBSD (en de meeste andere UNIX-achtige systemen) gebruikt de kernel twee factoren om de rechten van een proces te bepalen: het gebruikers-ID en de lijst met groepen waartoe het behoort. Wanneer u iets hoort over de “groeps-ID” van een gebruiker of proces, betekent dit meestal alleen de eerste groep op de lijst.

Groepsnamen worden geassocieerd met groeps-ID's in het bestand /etc/group. Dit tekstbestand met vier door dubbele punten gescheiden velden. Het eerste veld is de groepsnaam, het tweede is het gecodeerde wachtwoord, het derde is de groeps-ID en het vierde is een door komma's gescheiden lijst met groepsleden. Dit bestand kan veilig met de hand worden bewerkt (ervan uitgaande dat u geen syntaxisfouten maakt natuurlijk!). Voor een meer complete beschrijving van de syntaxis, zie de group(5) manpagina.

Als u /etc/group niet handmatig wilt bewerken, gebruik dan het pw(8) commando om groepen toe te voegen en te bewerken. Als u bijvoorbeeld een groep met de naam teamtwee wilt toevoegen en het bestaan ​​ervan wilt controleren, kunt u het volgende gebruiken:

Voorbeeld 13-8. Een groep toevoegen met pw(8)

# pw groepvoeg teamtwee toe

# pw groepsshow teamtwee

Het nummer 1100 is de groeps-ID van teamtwee. Op op dit moment in teamtwee heeft geen leden en is daarom praktisch nutteloos. Laten we deze situatie veranderen door jru toe te voegen aan de teamtweegroep.

Voorbeeld 13-9. Een gebruiker aan een groep toevoegen met pw(8)

# pw groupmod teamtwo -M jru

# pw groepsshow teamtwee

teamtwee:*:1100:jru

Het argument voor de optie -M is een door komma's gescheiden lijst met gebruikers die lid zijn van de groep. Uit eerdere paragrafen weten we dat het wachtwoordbestand ook een groep voor elke gebruiker specificeert. De gebruiker wordt automatisch door het systeem toegevoegd aan de lijst met groepen; de gebruiker zal niet getoond worden als lid van de groep bij gebruik van pw(8) groupshow, maar deze informatie zal wel getoond worden bij gebruik van id(1) of een vergelijkbaar hulpmiddel. Met andere woorden, met deze optie werkt pw(8) alleen met het bestand /etc/group; het zal nooit proberen aanvullende informatie uit het bestand /etc/passwd te verkrijgen.

Voorbeeld 13-10. Gebruik id(1) om het groepslidmaatschap te bepalen

% ID jr

uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwee)

Zoals je ziet is jru lid van de groepen jru en teamtwo.

Voor meer informatie over pw(8), zie de manpagina ervan, en voor meer informatie over het formaat van het bestand /etc/group, zie de manpagina van group(5).

Opmerkingen

1. Natuurlijk zijn veel terminals nog niet gebruikt, maar we laten dit onderwerp over aan Ch. 20.

2. Het is mogelijk om UID/GID tot 4294967295 te gebruiken, maar deze ID’s kunnen ernstige problemen met programma's die gissingen doen over ID-waarden.

3. Met de optie -s zal adduser(8) geen informatie uitvoeren. Later gebruiken we de optie -v om de standaardinstellingen te wijzigen.

Hoofdstuk 14. Beveiliging

Een groot deel van dit hoofdstuk is overgenomen van de security(7) manpagina geschreven door Matthew Dillon. Vertaling in het Russisch: Denis Peplin.

14.1. Korte beschrijving

Dit hoofdstuk biedt een inleiding tot de basisconcepten voor systeembeveiliging, enkele vuistregels, en gaat dieper in op specifieke onderwerpen die verband houden met FreeBSD. De meeste behandelde onderwerpen kunnen worden toegepast op systeembeveiliging en internetbeveiliging in het algemeen. Het internet is niet langer die ‘vriendelijke’ plek waar iedereen je goede buur wil zijn. Systeembeveiliging is essentieel om uw gegevens, intellectuele eigendom, tijd en al het andere te beschermen tegen hackers en dergelijke.

FreeBSD biedt een groot aantal hulpprogramma's en mechanismen om de systeem- en netwerkintegriteit en veiligheid te garanderen.

Na het lezen van dit hoofdstuk leert u:

Basissysteembeveiligingsconcepten, FreeBSD-specificaties.

Over de verschillende encryptiemechanismen in FreeBSD, zoals DES en MD5.

Hoe u authenticatie instelt met eenmalige wachtwoorden.

Hoe in te stellen KerberosIV in FreeBSD releases tot 5.0.

Hoe in te stellen Kerberos5 in FreeBSD-releases na 5.0.

Firewalls maken met IPFW.

Hoe IPsec te configureren en een VPN te creëren tussen computers op FreeBSD/Windows.

Hoe te installeren en te gebruiken OpenSSH, een SSH-implementatie op FreeBSD.

Hoe uitbreidingsmodules voor toegangscontrole te configureren en te laden met behulp van het TrustedBSD MAC-concept.

Wat zijn ACL's en hoe u ze kunt gebruiken.

Hoe te werken met FreeBSD-beveiligingsberichten.

Voordat u dit hoofdstuk leest, heeft u het volgende nodig:

Inzicht in de basisconcepten van FreeBSD en internet.

14.2. Invoering

Beveiliging is de eerste en belangrijkste functie van een systeembeheerder. Hoewel alle BSD UNIX-systemen voor meerdere gebruikers al over enige beveiliging beschikken, is het creëren en onderhouden van aanvullende beveiligingsmechanismen om een ​​veilige gebruikerservaring te garanderen een van de grootste uitdagingen van een systeembeheerder. Computers zijn slechts zo veilig als u ze veilig maakt, en beveiligingsvereisten zijn altijd in strijd met de gebruikerservaring. UNIX-systemen kunnen een groot aantal processen tegelijkertijd uitvoeren, en veel van deze processen zijn serverprocessen, wat betekent dat externe programma's ermee kunnen communiceren. Tegenwoordig hebben desktops minicomputers en mainframes vervangen, en aangezien computers tegenwoordig met internet zijn verbonden, is beveiliging belangrijker dan ooit.

De beste implementatie van een beveiligingssysteem kan worden weergegeven als een “gelaagd” systeem. Over het algemeen hoeft u alleen maar zoveel beveiligingslagen te creëren als nodig is en vervolgens systeeminbraken nauwlettend in de gaten te houden. Ga niet overboord met uw beveiligingsinstellingen, anders wordt inbraakdetectie, een van de belangrijkste aspecten van een beveiligingsmechanisme, onmogelijk. Het heeft bijvoorbeeld weinig zin om de schg-vlag (chflags(1)) in te stellen op elk uitvoerbaar bestand op het systeem, want hoewel dit de uitvoerbare bestanden tijdelijk kan beschermen, zal het detectie voorkomen of het systeem is gecompromitteerd.

Systeembeveiliging verwijst ook naar verschillende vormen van aanvallen die erop gericht zijn het systeem te laten crashen of anderszins ontoegankelijk te maken, maar niet proberen toegang te krijgen tot het root-account (“break root”). Beveiligingsbedreigingen kunnen in verschillende categorieën worden onderverdeeld:

1. Denial-of-service (DoS).

2. Gebruikersaccounts hacken.

3. Het root-account hacken via beschikbare services.

4. Het root-account hacken via gebruikersaccounts.

5. Een achterdeur creëren.

Een Denial of Service-aanval berooft de machine van de noodzakelijke bronnen. Doorgaans gebruiken DoS-aanvallen brute kracht om te proberen een systeem te laten crashen of anderszins onbeschikbaar te maken door de limieten van de services of netwerkstack te overschrijden. Sommige DoS-aanvallen proberen fouten in de netwerkstack te misbruiken om het systeem in één pakket neer te halen. Dit probleem kan alleen worden opgelost door de systeemkernel te repareren. Aanvallen kunnen vaak worden voorkomen correcte installatie parameters die de belasting van het systeem beperken ongunstige omstandigheden. Brute force-aanvallen zijn moeilijk te bestrijden. Een bijna onmogelijk te stoppen aanval met behulp van vervalste pakketten kan uw systeem bijvoorbeeld snel offline halen. Het leidt misschien niet tot een systeemstoring, maar het kan de internetverbinding wel overbelasten.

Het hacken van gebruikersaccounts komt doorgaans vaker voor dan DoS-aanvallen. Veel systeembeheerders gebruiken het nog steeds standaard diensten telnet, Inloggen En ftpd op hun servers. Deze diensten werken standaard niet met gecodeerde verbindingen. Hierdoor kan bij een gemiddeld aantal gebruikers het wachtwoord van één of meerdere gebruikers inloggen op het systeem buitenste verbinding(dit is de gebruikelijke en meest handige manier login) worden onderschept. Een oplettende systeembeheerder moet logboeken voor externe toegang analyseren op verdachte gebruikersadressen, zelfs als het inloggen is gelukt.

Je zou kunnen aannemen dat een aanvaller met toegang tot het gebruikersaccount het root-account zou kunnen hacken. De realiteit is echter dat op een goed beveiligd en onderhouden systeem toegang tot een gebruikersaccount een aanvaller niet noodzakelijkerwijs toegang tot root zal geven. Het verschil tussen toegang tot een normaal account en toegang tot root is belangrijk omdat een aanvaller zonder root-toegang zijn acties meestal niet kan verbergen en in het ergste geval alleen de bestanden van de gebruiker kan beschadigen of het systeem kan laten crashen. Het hacken van gebruikersaccounts komt heel vaak voor, omdat gebruikers net zo bezorgd zijn over de beveiliging als systeembeheerders.

Systeembeheerders moeten zich ervan bewust zijn dat er veel mogelijke manieren zijn om het root-account te hacken. Een aanvaller kan het root-wachtwoord achterhalen, een bug in een geprivilegieerde service vinden en het root-account hacken via een netwerkverbinding met die service, of een bug ontdekken in het suid-root-programma waarmee een aanvaller root kan hacken met behulp van een gecompromitteerd gebruikersaccount . Als een aanvaller een manier heeft gevonden om root te hacken, hoeft hij mogelijk geen achterdeur te installeren. Bij veel van de systeemgaten die tot nu toe zijn ontdekt en gedicht en die root-hacking mogelijk maken, moet de aanvaller veel werk verzetten om hun sporen uit te wissen. Daarom installeren de meeste aanvallers een achterdeur. Backdoor biedt een aanvaller een gemakkelijke manier om toegang te krijgen tot een systeem met rootrechten, maar geeft de systeembeheerder ook een gemakkelijke manier om een ​​inbraak te detecteren. Het verwijderen van de mogelijkheid om een ​​achterdeur te installeren kan de veiligheid van het systeem in gevaar brengen, omdat hierdoor het gat dat toegang tot het systeem mogelijk maakte, niet wordt gedicht.

FreeBSD ProjectDocumentatieFreeBSD Beheer FreeBSDProjectDocumentatieFreeBSD Gepubliceerd februari 1999 Copyright © ... met distributie. Belangrijk: DIT DOCUMENTATIE GELEVERD PROJECTDOCUMENTATIEFREEBSD"ZOALS HET IS" EN ELKE EXPRESS...

  • FreeBSD-portgids

    Beheer

    Dergelijke aantekeningen verschijnen in dit boek, en ProjectFreeBSD bekend over handelsmerk, wordt toegevoegd aan de aanduiding..., meegeleverd met distributie. Belangrijk: DIT DOCUMENTATIE GELEVERD PROJECTDOCUMENTATIEFREEBSD"ZOALS HET IS" EN ELKE EXPLICIE OF...

  • Ontwerpschema voor het verbeteren van de kwalificaties van bewaarders en facisten van het partnerschap bij de afdeling “Center for Postgraduate Education” van “Ukrtelecom” in 2010

    Document

    ... het beheer ervan project▪ Tipi project En volgens plan project in MS Projeсt ... naar de Koristuvach-interface (op de butt FreeBSD dat Linux); administratie... documenten ▪ Moeilijke spelling documentatie ii. Syntactische structuren van zakelijk schrijven. Interpunctie...

  • De permissies en het gebruikersmodel die in het FreeBSD besturingssysteem en de meeste UNIX-systemen worden gebruikt, zijn vrij eenvoudig en bestaan ​​uit één niveau. Niet zoals Windows met zijn geneste groepen :-).

    Er zijn slechts twee soorten gebruikers in FreeBSD: gewone gebruikers en super. root-gebruiker. Nou ja, en dienovereenkomstig een vlakke ruimte van groepen.

    Op het eerste gezicht lijkt het misschien dat dit schema minder praktisch is dan Windows-diagram. Maar toch heeft elk van de regelingen zijn voor- en nadelen. Het complexe hiërarchische systeem van groepen, gebruikers en machtigingen van Windows zorgt voor meer flexibiliteit in het toegangsbeleid, maar vergroot ook de kans dat er iets mis kan gaan. En er is een grote kans op het maken van een fout, waarvan de mate sterk kan variëren. Het zou prima zijn als de baas geen toegang zou krijgen tot zijn map. Wat als iedereen toegang zou krijgen tot gesloten documenten?

    Elk regelmatige gebruiker FreeBSD-systemen hebben beperkte rechten en hebben een aangewezen opslaglocatie voor bestanden (de thuismap). Wanneer we op afstand verbinding maken met een computer, zijn we daar meestal een gewone gebruiker. We worden onmiddellijk naar onze thuismap gebracht, waar we bestanden kunnen wijzigen. En dat is alleen maar omdat wij hun eigenaar zijn.

    Om jezelf als superuser voor te doen, gebruik je de opdracht su. U moet het superuser-wachtwoord invoeren, dit is de “sleutel tot alle deuren” van ons systeem. Zodra we toegang krijgen op superuser-niveau, hebben we de mogelijkheid om bestanden op onze computer te maken of te verwijderen die we op geen enkel Windows-systeem kunnen krijgen.

    Het is belangrijk om te onthouden dat wanneer u als root in het systeem werkt, u aan verhoogde beveiligingsmaatregelen moet voldoen. Het systeem zal niet twijfelen aan de competentie van de root, als hij zegt dat belangrijke mappen moeten worden verwijderd, dan is dit noodzakelijk.

    Om de su-opdracht uit te voeren, moet u lid zijn van een groep genaamd “wheel”. Deze groep omvat de gebruikers die geautoriseerd zijn om superuser te worden.

    “Wie zijn al deze mensen?”

    Er is nog een functie. Naast het registreren van gebruikers (mensen die verbinding maken met het systeem) zijn er ook automatische gebruikers(bin, daemon, niemand, operator, www en anderen). Deze accounts bestaan ​​om er enkele te bezitten systeem processen. Het is belangrijk om hier te begrijpen dat elk proces, net als een bestand, eigendom moet zijn van een bepaalde gebruiker en dat alle processen beperkt zijn door de bevoegdheden van de gebruikers waartoe ze behoren.

    Gebruikers hebben nooit rechtstreeks toegang tot hun bestanden. Alles wat de gebruiker met zijn bestanden doet met behulp van opdrachten, wordt feitelijk namens de gebruiker door een proces uitgevoerd. Processen werken op bestanden of andere processen. Processen van de ivan-gebruiker kunnen alleen werken met bestanden en processen die eigendom zijn van de ivan-gebruiker. De toegang kan worden geweigerd als een van deze processen probeert het bestand of proces van gebruiker Andrey te wijzigen.

    Waar zijn pseudo-gebruikers voor? Laten we ons voorstellen dat de gebruiker Ivan plotseling een superuser werd. Alle processen die namens Ivan worden uitgevoerd, hebben absolute macht over de processen van een andere gebruiker. Wat als een van deze processen een speciaal configuratiebestand leest en systeemparameters wijzigt? Wat als iemand door een bug toegang zou kunnen krijgen tot een configuratiebestand of op een andere manier potentieel onveilige parameters zou kunnen doorgeven aan een programma dat met absolute rechten draait? Het systeem kan vernietigd worden. Geen vragen of onnodige waarschuwingen. Daarom moet elke dienst worden gelanceerd namens een specifieke pseudo-gebruiker en worden “opgesloten” in de ruimte van zijn “bezittingen” om niet per ongeluk de rest van het systeem te beschadigen.

    Waar zijn groepen voor?

    Elke gebruiker behoort tot een specifieke primaire groep, die doorgaans dezelfde naam heeft als de gebruiker. In feite is de gebruiker het enige lid van zijn primaire groep. Maar niets weerhoudt ons ervan een groep aan te maken, bijvoorbeeld ftpusers, en daar gebruikers aan toe te voegen. Overigens kan alleen de root-superuser het gebruikerseigendom beheren.

    Over het algemeen moeten groepen specifieke gebruikers de mogelijkheid bieden om dit te doen samenwerking met sommige bestanden of processen. Het is immers onwenselijk voor verschillende mensenéén account heeft gebruikt om toegang te krijgen tot bestanden, is het onwenselijk dat iemand anders hetzelfde wachtwoord kent. En groepen kunnen bieden verschillende gebruikers gelijke privileges.


    Er zijn verschillende manieren om een ​​gebruiker of groep toe te voegen ( sysinstall, adduser, pw ...). Laten we het meest overwegen populaire programma's voor gebruikersbeheer in freeBSD OS.

    1. Gebruikers toevoegen met gebruiker toevoegen

    En laten we dus eens kijken naar het hierboven genoemde adduser-programma (na de schuine strepen zal er zijn // mijn commentaar):

    #gebruiker toevoegen
    Gebruikersnaam: test // specificeer de naam van de toekomstige gebruiker
    Volledige naam: Testgebruiker // volledige naam
    Uid (standaard leeg laten): // het is raadzaam om de ID-gebruiker (identificatienummer in het systeem) leeg te laten, het systeem wijst deze zelf toe
    Inloggen groep: // voeg de gebruiker toe aan zijn groep. laat het leeg
    Inloggroep is test. Test uitnodigen voor andere groepen? : wiel // indien nodig kunt u een gebruiker aan een andere groep toevoegen
    Inloggen klasse://laat het leeg
    Shell (sh csh tcsh zsh nologin) : tcsh // selecteer de opdrachtregel 'shell', het is beter om tcsh in te voeren, sh is niet handig IMHO
    Thuismap: // de thuismap kan overal worden geplaatst, maar het is beter om deze als standaard te laten staan
    Wachtwoordgebaseerde authenticatie gebruiken? : //laat het leeg
    Een leeg wachtwoord gebruiken? (ja/nee): // gebruiker met leeg wachtwoord is niet veilig, standaardselectie is nee
    Een willekeurig wachtwoord gebruiken? (ja/nee): // het systeem kan genereren willekeurig wachtwoord standaard nr
    Wachtwoord invoeren: // als u de bovenste 2 items heeft afgewezen, wordt u gevraagd het wachtwoord zelf in te voeren
    Voer het wachtwoord opnieuw in: //typ het wachtwoord opnieuw
    Het account vergrendelen na het aanmaken? : // gebruikersaccount vergrendelen na aanmaken
    Gebruikersnaam: test
    Wachtwoord: ****
    Volledige naam: Testgebruiker
    Uid: 1001
    Klas:
    Groepen: testwiel
    Thuis: /home/test
    Shell: /usr/local/bin/tcsh
    Vergrendeld: nee
    OK? (ja/nee): Ja // als het bovenstaande overeenkomt met wat je wilde, voer dan ja in
    adduser: INFO: Succesvol toegevoegd (test) aan de gebruikersdatabase.
    Nog een gebruiker toevoegen? (ja/nee): Nee // bied aan om nog een gebruiker toe te voegen, onverzadigbaar, geef hem gewoon gebruikers
    Tot ziens!// en je wordt niet ziek
    #

    2. Gebruikers verwijderen met rmuser

    En dus toevoegen - toegevoegd. Nu moet je weten hoe je moet verwijderen /> Onthoud: “breken is niet bouwen!” Verwijderen is veel eenvoudiger dan een gebruiker toevoegen en toewijzen vereiste instellingen en rechten.
    Verwijderen volgende programma: rmuser
    Wat dit programma kan doen:

    1. Een gebruikersinvoer verwijderen uit crontab (indien aanwezig).
    2. Verwijdert bij taken die eigendom zijn van de gebruiker.
    3. Doodt alle processen die eigendom zijn van de gebruiker.
    4. Verwijdert een gebruiker uit het lokale wachtwoordbestand.
    5. Verwijdert de homedirectory van de gebruiker (als de gebruiker deze bezit).
    6. Verwijdert inkomende e-mail die eigendom is van de gebruiker uit /var/mail .
    7. Verwijdert alle bestanden die eigendom zijn van de gebruiker uit tijdelijke bestandsmappen zoals /tmp.
    8. Verwijdert ten slotte de gebruikersnaam uit alle groepen waartoe deze behoort in /etc/group.

    # rmuser-test // verwijder gebruikerstest
    Overeenkomende wachtwoordinvoer:
    test:*:1001:1001::0:0:Testgebruiker:/home/test:/usr/local/bin/tcsh
    Is dit de vermelding die u wilt verwijderen? j // herverzekering, of u de juiste gebruiker gaat verwijderen
    De thuismap van de gebruiker verwijderen (/home/test)? j // verwijderen aangepaste map met alle inhoud?
    Wachtwoordbestand bijwerken, databases bijwerken, klaar.
    Groepsbestand bijwerken: vertrouwd (groepstest verwijderen - persoonlijke groep is leeg) klaar.
    Het inkomende e-mailbestand /var/mail/test van de gebruiker verwijderen: klaar.
    Bestanden die bij test horen verwijderen uit /tmp: klaar.
    Bestanden die bij test horen verwijderen uit /var/tmp: klaar.
    Bestanden verwijderen die bij test horen uit /var/tmp/vi.recover: klaar. // Alle! de gebruiker is naar een andere wereld gegaan en alle mappen achter hem zijn gewist.
    #

    Als je wilt dat het programma je niet met al deze vragen belast, gebruik dan de parameter -y (rmuser -y). In feite gaan we akkoord met alle voorwaarden.

    3. Wachtwoorden wijzigen door programma's wachtwoord En chpass

    Hoe verander ik het wachtwoord voor een freeBSD-gebruiker? - vraag je. Elementair! - iedereen die verder leest, zal je antwoorden =).
    Programma's voor het wijzigen van wachtwoorden: passwd en chpass.
    wachtwoord is de gebruikelijke manier waarop een gebruiker zijn eigen wachtwoord of het wachtwoord van een andere gebruiker als superuser kan wijzigen.
    Laten we ons even voorstellen dat u een eenvoudige gebruiker bent met de naam test en uw wachtwoord wilt wijzigen:

    % wachtwoord

    Oud wachtwoord: // voer oud wachtwoord in
    Nieuw wachtwoord: //voer een nieuw wachtwoord in
    Typ het nieuwe wachtwoord opnieuw: // herhaal nieuw wachtwoord
    wachtwoord: het bijwerken van de database…
    wachtwoord: klaar // gedaan wachtwoord gewijzigd

    Laten we ons nu voorstellen dat u een superuser bent en het wachtwoord van een gewone sterfelijke gebruiker wilt wijzigen:

    # passwd-test // zorg ervoor dat u een gebruikersnaam opgeeft, anders wijzigt u uw wachtwoord
    Lokaal wachtwoord wijzigen voor test.
    Nieuw wachtwoord: // nieuw wachtwoord (zoals u kunt zien, hoeft u het oude wachtwoord niet te kennen - superuser-voordelen)
    Typ het nieuwe wachtwoord opnieuw: // herhaal het wachtwoord
    wachtwoord: het bijwerken van de database…
    wachtwoord: klaar // klaar, hehe

    Laten we nu een meer functionele gadget overwegen: chpass.
    chpass- kan niet alleen het wachtwoord van de gebruiker wijzigen, maar ook zijn andere gegevens.
    Alleen systeembeheerders met superuser-rechten kunnen de informatie en wachtwoorden van andere gebruikers wijzigen met behulp van het chpass-programma. Gewone gebruikers kunnen dit programma ook gebruiken, maar slechts een klein deel van deze informatie mag veranderen, en alleen voor hun rekening.
    En dit is hoe het chpass-programma werkt voor een superuser:

    #Gebruikersdatabase-informatie wijzigen voor test.
    Login: test
    Wachtwoord: *
    Uid[#]: 1001
    Gid [# of naam]: 1001
    Wijziging:
    Verlopen:
    Klas:
    Thuismap:/huis/test
    Schelp:/usr/local/bin/tcsh
    Volledige naam: Testgebruiker
    Kantoorlocatie:
    Kantoortelefoon:
    Thuistelefoon:
    Overige informatie:

    4. Gebruikers en groepen beheren met behulp van pw

    Nou ja, het beste deel zit aan het einde. pw is een opdrachtregelhulpprogramma voor het aanmaken, verwijderen, wijzigen en weergeven van gebruikers en groepen. Het functioneert als een externe interface voor gebruikers- en groepssysteembestanden. pw heeft een zeer krachtige set opdrachtregelopties, waardoor het geschikt is voor gebruik in shellscripts, maar nieuwe gebruikers vinden het wellicht complexer dan andere hier gepresenteerde opdrachten.
    Laten we de gebruikerstest toevoegen met behulp van het pw-hulpprogramma:

    # pw useradd-test -s/bin/tcsh -C"Testgebruiker" -m -b/thuis -e 03-07-2011-P 02-07-2011

    Verklaring van de gebruikte toetsen:
    -S– geeft aan welke terminal zal worden gebruikt, shell-veld
    -Met– opmerkingen voor de aangemaakte gebruiker, gecos-veld
    -e– levensduur van account, veld verlopen. Het veldformaat is vergelijkbaar met de optie '-p'
    -P– levensduur van wachtwoord, veld wijzigen. Het formaat voor het opgeven van de datum of tijd is:
    dd-mm-jj, waarbij dd dag is, mm maand en jj jaar. Of het volgende wordt gebruikt
    formaat: +0mhdwoy, waarbij m – minuten, h – uren, d – dagen, w – weken, o – maand, y – jaar
    -M– zorgt ervoor dat de homedirectory van de gebruiker wordt aangemaakt en dat standaardbestanden ernaar worden gekopieerd
    en map /usr/share/skel
    -B– de basismap waarin de thuismap van de gebruiker zich zal bevinden, het veld home_dir
    -L– stelt de klasse voor de gebruiker in vanuit het login.conf-bestand, klasseveld

    Om een ​​groep noname aan te maken en de gebruikerstest ernaar te verplaatsen, gebruikt u de volgende combinatie:

    #pwgroupadd geen naam -M test

    Om de testgebruiker aan een reeds bestaande wielgroep toe te voegen, gebruikt u:

    # pw gebruikersmod test -G wiel

    Het zou lang duren om alle kenmerken van pw te beschrijven. Belangrijkste kansen die voor u liggen.

    5. Lijst met alle bekende programma's en hulpprogramma's voor het beheren van accounts en gebruikersgroepen

    Tot slot zal ik alle mogelijke toepassingen en hulpprogramma's opsommen voor het monitoren/wijzigen/toevoegen van gebruikers en groepen:

    pw(8) – aanmaken, verwijderen, wijzigen, weergeven van gebruikers en groepen;
    adduser(8) – interactief een nieuwe gebruiker toevoegen;

    De autoriteit van gebruikers en de bestanden waarvan zij eigenaar zijn, vormen het concept van het UNIX-besturingssysteem. Omdat FreeBSD een besturingssysteem voor meerdere gebruikers is en tot de besturingssysteemfamilie behoort onder de algemene naam UNIX, zal de mogelijkheid om gebruikers op de juiste manier te beheren verschillende problemen voorkomen.

    Gebruikers- en groepsaccounts worden in twee bestanden opgeslagen:

  • /etc/master.passwd- dit bestand slaat gebruikersgegevens en hun wachtwoorden in gecodeerde vorm op.
  • /etc/groep- dossierverantwoordelijke voor groepen

    FreeBSD maakt gebruik van schaduwwachtwoordtechnologie - dit is wanneer gebruikerssysteemgegevens in twee bestanden worden verdeeld:

    1.bestand /etc/master.passwd die gecodeerde wachtwoorden bevat, heeft alleen lees- en schrijfrechten voor de rootgebruiker

    2.bestand /etc/passwd, gemaakt met behulp van de opdracht pwd_mkdb(8) (genereren van een database met wachtwoorden) vanuit een bestand /etc/master.passwd, het heeft leesrechten voor de groep en andere gebruikers, en wachtwoorden worden vervangen door *. Gebruik ook de opdracht pwd_mkdb(8) uit het bestand /etc/master.passwd er worden twee bestanden gemaakt - /etc/pwd.db En /etc/spwd.db(geïndexeerde databases), ze zijn ontworpen om zoekopdrachten te versnellen, in het geval dat grote hoeveelheid systeem gebruikers. Bestand /etc/spwd.db is geheim, net als het bestand /etc/master.passwd en heeft dezelfde toegangsrechten en eigenaar.

    Denk aan de syntaxis van het bestand /etc/master.passwd:

    root:$1 $SJSDMXQE $LRpetLGNt5xO8k980r2om .: 0 :0 ::0 :0 0 :0 ::0 :0 1 :1 ::0 :0 2 :5 ::0 :0 3 :7 ::0 :0 4 :65533 ::0 :0 5 :65533 ::0 :0 7 :13 ::0 :0

    Elke nieuwe regel in het bestand beschrijft de gebruiker en bevat kolommen gescheiden door (:).

    Kolommen op volgorde:

    1.naam- gebruikersaanmelding die wordt gebruikt bij het inloggen
    2.wachtwoord- gecodeerd wachtwoord in het bestand /etc/master.passwd en * in /etc/passwd
    3.vloeistof- unieke gebruikersidentificatie.
    4.zucht- unieke groepsidentificatie.
    5.klas- een klasse instellingen en instellingen, die afkomstig is uit het bestand /etc/login.conf
    6.wijziging- levensduur van het wachtwoord, d.w.z. de periode waarna u het wachtwoord moet wijzigen. Het aantal seconden sinds 1 januari 1970. U kunt controleren naar welke datum de seconden in het veld verwijzen met behulp van het commando: date -r seconden , waarbij seconden de veldwaarde is.
    7.verlopen- de levensduur van het account, nadat deze periode is verstreken wordt het geblokkeerd, 1 januari 1970. U kunt controleren op welke datum de seconden in het veld aangeven tot welke datum u het commando kunt gebruiken: date -r seconden , waar seconden is de veldwaarde.
    8.geco's- algemene informatie over de gebruiker
    9.thuis richt- de thuismap van de gebruiker
    10.schelp- de shell die de gebruiker gaat gebruiken

    Bij het maken van een bestand /etc/passwd uit bestand /etc/master.passwd velden klasse, wijzigen, verlopen worden verwijderd en het wachtwoord wordt vervangen door *.
    Het inlogveld (naam) mag niet beginnen met het symbool (-) en wordt ook niet aanbevolen om te gebruiken hoofdletters in de gebruikersnaam en scheid de login met een symbool (.), wat problemen kan veroorzaken bij het werken met e-mail. In bestand /etc/master.passwd veld wachtwoord gecodeerd, als het veld ontbreekt, d.w.z. in plaats van het wachtwoord staat er een *-symbool, dan krijgt u geen toegang tot de machine. Voor snel bewerken bestand /etc/master.passwd en zonder daaropvolgend gebruik van het pwd_mkdb(8) commando wordt het vipw(8) commando gebruikt, dit is dezelfde vi(1) editor, dus lees voordat je het vipw(8) commando gebruikt man-pagina's ze heeft vi(1) .

    Voorbeeld:

    # vipw root:$1 $SJSDMXQE $LRpetLGNt5xO8k980r2om .: 0 :0 ::0 :0 :Charlie &:/root:/bin/csh toor:*: 0 :0 ::0 :0 :Bourne-opnieuw Superuser:/root: daemon:*: 1 :1 ::0 :0 :Eigenaar van veel systeemprocessen:/root:/usr/sbin/nologin operator:*: 2 :5 ::0 :0 :Systeem &:/:/usr/sbin/nologin bin:*: 3 :7 ::0 :0 :Binaire opdrachten en bron:/:/usr/sbin/nologin tty:*: 4 :65533 ::0 :0 :Tty Sandbox://:/usr/sbin/nologin kmem:*: 5 :65533 ::0 :0 :KMem Sandbox://:/usr/sbin/nologin-spellen:*: 7 :13 ::0 :0 :Games pseudo-gebruiker:/usr/games:/usr/sbin/nologin

    Bij gebruik van (*) in /etc/master.passwd in plaats van een veld wachtwoord Autorisatie in het systeem is verboden omdat het symbool (*) geen gecodeerd wachtwoord kan zijn. Als u bijvoorbeeld een gebruiker tijdelijk wilt blokkeren, kunt u in plaats van het veld gebruiken wachtwoord in het bestand /etc/master.passwd een dergelijke combinatie *LOCKED* of voeg een dergelijke combinatie toe aan het begin van het wachtwoord, als deze bestaat, en verwijder deze eenvoudigweg bij het ontgrendelen, hiervoor heeft u het vipw(8) commando nodig. Om te zien hoe u een account kunt blokkeren via de opdrachtregel, leest u de manpagina voor het pw(8)-commando.
    Veld geco's met algemene informatie over gebruikers, bevat de volgende velden, gescheiden door komma's:

  • naam- volledige gebruikersnaam
  • kantoor- kantoornummer
  • wtelefoon- werktelefoon
  • htelefoon- huistelefoon

    Veld thuis_dir, definieert het pad naar de homedirectory van de gebruiker, waarvan hij de eigenaar zal zijn.
    Veld schelp, definieert de shell van de gebruiker; de lijst met beschikbare shells voor de gebruiker is te vinden in het bestand /etc/shells. Het wordt niet aanbevolen voor de rootgebruiker om de huidige shell te wijzigen, vanwege een ongeluk bestandssysteem
    /usr wordt mogelijk niet aangekoppeld, waardoor de rootgebruiker geen toegang heeft tot het systeem. Als u een gebruiker de toegang tot het systeem wilt ontzeggen, vervangt u zijn shell door. /sbin/nologin Dit programma

    zal een inlogpoging van een gebruiker correcter verwerken dan andere (bijvoorbeeld: /dev/null). /etc/passwd En Wanneer u een nieuwe gebruiker toevoegt, moet u een unieke inlognaam selecteren die niet in het bestand verschijnt/etc/mail/aliassen . ontvangt een unieke id - UID en wordt lid van een groep waarvan de naam overeenkomt met de gebruikersnaam, waarin hij alleen zal zijn. Deze strategie voor groepsnaamgeving verbetert de beveiliging en flexibiliteit bij toegangscontrole. De UID en de loginnaam zijn uniek in het systeem en worden gebruikt om de toegang tot het bestandssysteem te controleren. Nadat een gebruiker aan het systeem is toegevoegd, worden de bestanden naar zijn thuismap gekopieerd .profiel(uitgevoerd wanneer de gebruiker inlogt), of de shell /bin/sh of .cshrc is (wanneer de shell start) en .login(wanneer de gebruiker inlogt) als er een shell wordt gebruikt /bin/csh. Al deze bestanden worden uit de map gekopieerd /usr/share/skel.

    In bestand /etc/groep alle lokale groepen van het systeem zijn gelokaliseerd. Dit bestand kan door iedereen worden bewerkt teksteditor naar eigen goeddunken, d.w.z. om een ​​groep toe te voegen, bewerkt u gewoon het bovenstaande bestand.
    Het bestand bestaat uit afzonderlijke regels, waarvan de kolommen worden gescheiden door speciaal karakter(:). Een rij bestaat uit de volgende kolommen of velden:

  • groep- naam of groepsnaam
  • wachtwoord- gecodeerd wachtwoord voor de groep
  • zucht- uniek groepsnummer
  • lid- leden van deze groep

    In dit bestand is elke regel die begint met een (#)-symbool een commentaar.
    Veld groep is de naam van een groep die bepaalt of gebruikers die lid zijn van deze groep toegang hebben tot bestanden. Met veld groep geassocieerd met het gid-veld, dat de unieke identificatie van de groep definieert. Deze twee velden zijn onlosmakelijk met elkaar verbonden, net als de gebruikersnaam en zijn UID. Veld wachtwoord is optioneel, wordt zelden gebruikt en daarom is het teken (*) geen betere keuze dan een gecodeerd wachtwoord. Veld lid bevat groepsleden, in de vorm van gebruikersnamen, van elkaar gescheiden door het symbool (,) - komma. Een groep kan niet meer dan 200 gebruikers hebben. Maximale regellengte in een bestand /etc/groep 1024 tekens.

    Beheer en beperkingen van gebruikersbronnen.

    Gebruikersbronnen worden beheerd met behulp van klassen die in een speciaal bestand zijn gedefinieerd /etc/login.conf, en worden ook aan de gebruiker gegeven wanneer hij hem toevoegt. Als er geen klasse is gedefinieerd voor de gebruiker, krijgt deze de klasse - standaard toegewezen. Elke klasse heeft een reeks kenmerken in de vorm naam=waarde. Om de gegevenstoegang te versnellen, leest het systeem het bestand niet rechtstreeks /etc/login.conf, maar leest in plaats daarvan het bestand /etc/login.conf.db, die wordt aangemaakt speciaal elftal cap_mkdb(1)

    cam_mkdb /etc/login.conf

    Daarom na elke bestandswijziging /etc/login.conf vergeet niet cap_mkdb(1) uit te voeren
    U kunt een klasse voor een gebruiker in het bestand wijzigen of instellen /etc/master.passwd, die hiervoor een speciaal veld heeft klas. /etc/login.conf Dit werd hierboven besproken. Een gebruiker met UID = 0, d.w.z. de systeembeheerder (root) heeft geen geldige klasse, de root-invoer in
    of de standaardklasse als er geen root-invoer is. De gebruiker kan een individueel bestand maken met broninstellingen in de zogenaamde homedirectory~/login.conf /etc/login.conf, gebruikt dit bestand dezelfde syntaxis als het bestand
    , maar het bevat alleen een ID-invoer met een naam. In dit bestand kan de gebruiker alleen de hem ter beschikking gestelde bronnen verminderen, maar op geen enkele manier vergroten. /etc/login.conf Als veldscheidingsteken in een bestand

    Het symbool (:) wordt gebruikt. Het eerste veld in het bestand betekent de naam van de klasse die vervolgens op een bepaalde gebruiker wordt toegepast. /etc/login.conf Elk veld in het bestand

  • kan de volgende waarden aannemen: bool - als de parameter Booleaans is, kan deze de volgende waarden aannemen: waar of onwaar; /etc/login.conf Schrijf de optie gewoon in een bestand
  • zonder een expliciete waarde op te geven, betekent waar. Als u false wilt definiëren, moet u dit expliciet opgeven. bestand
  • - de optie neemt de waarde als pad naar het bestand; programma
  • - de optie neemt de waarde als pad naar het uitvoerbare bestand of programma; lijst
  • - de optie accepteert waarden als een lijst gescheiden door komma of spatie; pad
  • - optie accepteert padwaarden gescheiden door komma of spatie. Tilde (~) breidt uit naar de thuismap van de gebruiker; nummer
  • - numerieke waarde, in decimale, hexadecimale of octale vorm. snaar
  • - als string; maat
    - maat. De standaardwaarde is in bytes. Mag de volgende achtervoegsels accepteren om maateenheden aan te duiden:
    b - bytes
    k - kilobytes
    m - megabytes
    g - gigabytes
    t - terabytes
  • Het is mogelijk om waarden te combineren door de bijbehorende achtervoegsels aan te geven: 1m30k tijd
    - tijdsperiode, standaard uitgedrukt in seconden. Als achtervoegsel worden de volgende aanduidingen gebruikt:
    y - jaar
    w - week
    d - dag
    u - uur
    m- minuten
    s - seconden
  • Het is mogelijk om waarden te combineren door de overeenkomstige achtervoegsels aan te geven: 2u30m onbeperkt

    - geen beperkingen

    Resourcelimiet: Naam van optie Waardetype
    Beschrijving kerndumpgrootte maat
    Beperkt de grootte van het coredump-bestand CPU-tijd tijd
    Beperkt de CPU-gebruikstijd kerndumpgrootte gegevensgrootte Maximale grootte
    gegevens kerndumpgrootte bestandsgrootte
    Maximale bestandsgrootte. Voorkomt het maken van bestanden die groter zijn dan de opgegeven grootte maxproc nummer Maximaal aantal
    processen die een gebruiker kan maken kerndumpgrootte De maximale grootte in het kerngeheugen die een proces kan blokkeren
    geheugengebruik kerndumpgrootte De maximale hoeveelheid geheugen die een proces kan gebruiken
    open bestanden maxproc Maximaal aantal bestanden dat elk proces kan openen
    sbgrootte kerndumpgrootte Maximaal toegestane socketbuffergrootte
    vgeheugengebruik kerndumpgrootte Maximaal toegestane maat virtueel geheugen voor elk proces
    stapelgrootte kerndumpgrootte Maximale stapelgrootte


    Hulpbronnen kunnen worden beperkt door zowel zachte als harde limieten. Het verschil daartussen is dat de gebruiker de harde limieten niet kan verhogen, maar de gebruiker kan de zachte limieten wel verhogen, maar niet meer dan de harde waarde. Er worden speciale achtervoegsels gebruikt om zachte en harde beperkingen aan te duiden -max En -cur. Bijvoorbeeld: bestandsgrootte-max

    Gebruikersomgeving:

    Resourcelimiet: Naam van optie Standaard Waardetype
    tekenset snaar Stelt de waarde in van de omgevingsvariabele $MM_CHARSET. Bijv.: KOI8-R
    hushlogin bool vals Staat toe (false) om het bestand /etc/motd te tonen bij het opstarten of schakelt uit (true). Hetzelfde als de aanwezigheid van het bestand ~/.hushlogin in de thuismap.
    ftp-chroot bool vals Chroot(2) de gebruiker in zijn homedirectory wanneer hij inlogt via FTP. Geldt alleen voor de standaard ftpd(8)-daemon.
    negeerlogin bool vals Inloggen wordt niet geblokkeerd.
    label snaar Het MAC-beleid (maclabel(7)) is van toepassing op de gebruiker.
    lang snaar Stelt de waarde in van de omgevingsvariabele $LANG. Bijvoorbeeld: ru_RU.KOI8-R
    manpad pad Definieert zoekpaden voor manpagina's
    geencheckmail bool vals Toon de mailboxstatus wanneer de gebruiker inlogt op het systeem.
    niet inloggen bestand Als dit bestand bestaat, de inhoud ervan wordt weergegeven wanneer u zich aanmeldt en de sessie wordt gesloten. Je kunt deze optie specificeren in een klasse voor een gebruiker en het inloggen voor hem blokkeren, zelfs als hij een shell heeft geïnstalleerd in het bestand /etc/master.passwd.
    pad pad Definieert zoekpaden voor uitvoerbare bestanden of programma's.
    prioriteit maxproc Specificeert de initiële prioriteit van de gebruiker (nice(1)).
    vereisthuis bool vals Of de gebruiker een werkende thuismap nodig heeft. Als deze er niet is, kan de gebruiker niet inloggen.
    setenv lijst Stelt omgevingsvariabelen in als variabele=waarde, gescheiden door een komma
    schelp prog Gebruikersshell. Heeft voorrang op de shell die is opgegeven in het bestand /etc/master.passwd.
    termijn snaar Definieert het terminaltype.
    tijdzone snaar Stelt de waarde in van de omgevingsvariabele $TZ. Zones bevinden zich op /usr/share/zoneinfo.
    masker maxproc 022 Definieert de rechten op gemaakte bestanden. Machtigingen worden berekend door het masker af te trekken van 666 en de map van 777.
    welkom bestand ./etc/motd Een welkomstbestand dat wordt getoond wanneer de gebruiker inlogt op het systeem.
    Resourcelimiet: Naam van optie Standaard Waardetype
    copyright bestand Extra bestand met informatie over coöperaties
    host.allow lijst Lijst externe gastheren van welke gebruikers van deze klasse kan de auto in.
    host.weigeren lijst Een lijst met externe hosts van waaruit gebruikers van deze klasse geen toegang hebben tot de machine.
    login_prompt snaar Regeluitvoer bij het aanvragen van inloggen login(1)
    login-backoff maxproc Definieert de hoeveelheid vertraging vermenigvuldigd met 5 seconden tussen onjuiste aanmeldingen nadat de aanmeldingspogingen zijn uitgeput (parameter hieronder). Van toepassing op niet-remote terminal.
    login-pogingen maxproc 10 Het aantal onjuiste inlogpogingen dat is toegestaan ​​voordat de login als mislukt wordt beschouwd.
    passwd_format snaar Het formaat waarin het nieuwe wachtwoord wordt gecodeerd. De waarden die gebruikt kunnen worden zijn "md5" "blf" "des". Ik raad u aan om het standaard coderingsformaat "blf" te gebruiken, aangezien dit het veiligste algoritme is.
    passwd_prompt snaar Groet voor wachtwoord.
    keer.toestaan lijst Lijst met perioden waarin u kunt inloggen
    tijden.ontkennen lijst Lijst met perioden waarin inloggen niet is toegestaan
    ttys.allow lijst Een lijst met terminals of groepen terminals die een gebruiker met deze klasse kan gebruiken. Terminalgroepen worden gespecificeerd in /etc/ttys(5)
    ttys.deny lijst Een lijst met terminals of groepen terminals die een gebruiker met deze klasse niet mag gebruiken. Terminalgroepen worden gespecificeerd in /etc/ttys(5)
    waarschuwingverlopen CPU-tijd De periode waarin het nodig is om de gebruiker te waarschuwen voor het verlopen van het account.
    waarschuwingswachtwoord CPU-tijd De periode waarin de gebruiker moet worden gewaarschuwd over het verlopen van het wachtwoord.


    Bij opties host.allow En host.weigeren Het hostscheidingsteken is een komma.

    Bij opties keer.toestaan En tijden.ontkennen vermeldingen worden gescheiden door komma's. Tijdsperiodewaarden worden geschreven in 24-uursnotatie, gescheiden door een koppelteken.
    Bijvoorbeeld: MoThSa0200-1300 Deze vermelding wordt als volgt ontcijferd: gebruikerstoegang is toegestaan ​​op maandag, donderdag en zaterdag van 02.00 uur tot 13.00 uur. Als beide opties ontbreken in de gebruikersklasse, is toegang op elk moment toegestaan. Als de tijdsperiode is toegestaan ​​in de optie keer.toestaan verboden door de tijdsperiode in het bestand tijden.ontkennen, dan heeft de optie prioriteit tijden.ontkennen.

    Bij opties ttys.allow En ttys.deny bevat door komma's gescheiden tty-apparaatgegevens (zonder het voorvoegsel /dev/) en een lijst met ttygroups (zie getttyent(3) en ttys(5) ) waartoe een gebruiker van een bepaalde klasse wel of geen toegang heeft. Als er geen vermeldingen in de optie zijn, heeft de gebruiker onbeperkte toegang.

    Wachtwoordparameters zoals minimale lengte (minpasswordlen) en een parameter die verantwoordelijk is voor waarschuwing als de gebruiker het wachtwoord alleen invoert kleine letters(minpasswordcase) worden niet ondersteund, voor deze beperkingen wordt de pam-module pam_passwdqc(8) gebruikt.

    Het instellen van klassen voor systeemgebruikers is erg lastig goed middel individuele gebruikersbeperkingen, maar gebruik dit product bewust en met voorzichtigheid.

    De volgende opdrachten zijn handig voor het beheren van gebruikers en groepen: