Domů » 2014 » Leden

Archiv pro Leden, 2014

Administrace uživatelů ve FreeBSD a Solarisu

Posted 24.1.2014 By Řezáč Petr

Administrace uživatelů ve FreeBSD

Kde je to uloženo

FreeBsd ukládá uživatelské a skupinové účty do těchto souborů:

  • /etc/passwd – zde jsou uloženy informace o uživatelích
  • /etc/master.passwd – stejný jako passwd plus obsahuje zašifrovaná hesla
  • /etc/pwd.db – databázová verze souboru passwd (Berkeley DB Hash file)
  • /etc/spwd.db – databázová verze souboru master.passwd (Berkeley DB Hash file)
  • /etc/group – definuje skupiny

/etc/master.passwd

Uživatelský účet je uložen ve tvaru:

uziv_jmeno:password:uid:gid:trida:platnost_hesla:
platnost_uctu:full_name:domov_adresar:shell

uziv_jmeno – max. počet znaků uživatelského jména je ve FreeBSD omezen na 16 znaků a nesmí začínat „-“ (spojovníkem). Rovněž některé protokoly limitují počet znaků na 8, např. NIS.

password – v /etc/passwd prázdné, v /etc/master.passwd hash hesla
UID – unikátní číslo, které má user pod systémem. Pro uživatele rozsah od 0 to 65535. 0 až 99 jsou rezervované pro systémové účty.
GID – číslo, které identifikuje skupinu do které user patří. Rozsah 0 to 65535. 0 až 99 jsou rezervované pro systémové účty.
trida – rozšíření mechanismu skupin, který poskytuje další flexibilitu při přizpůsobení systému pro různé uživatele.
platnost_hesla – ve výchozím nastavení FreeBSD nenutí uživatele měnit svá hesla pravidelně, lze nastavit.
platnost_uctu – ve výchozím nastavení FreeBSD nevyprší účty, lze nastavit kdy účet vyprší.
full_name – Skutečné plné jméno uživatele
domov_adresar – Domácí adresář do kterého je uživatel přepnut po zalogování. V tomto adresáři má povolen zápis.
shell – shell který je mu spuštěn po zalogování – je na výběr z Bourne shell, Korn shell, C shell, Z shell, BASH shell a TC shell.
V případě že editujete master.passwd ručně (není doporučeno) je potřeba pro přenesení změn do passwd provést
pwd_mkdb -p /etc/master.passwd /etc/group

Každý uživatel náleží do skupiny dle záznamu v /etc/master.passwd. Této skupině se říká primární. Členství uživatele v dalších skupinách je
dáno přiřazením v souboru /etc/group

Struktura /etc/group:
groupname:group-password:GID:username-listgroupname
groupname – jméno skupiny – max 8 znaků
passwd  –  hash encrypted password. Je většinou prázdné.
GID – ID skupiny, čísla 0 až 99, 60001, 60002 a 65534 jsou rezervována pro systém. Využitelné 100 až 60000.
username-listgroupname – Seznam uživatelů, které do dané skupiny náleží. Max počet uživatelů v grupě je 200. Příkaz passwd nezmění heslo pro grupu.
Administrace uživatelů – programy pro práci


Základní příkazy
adduser – přidává uživatele
rmuser  – maže uživatele
chpass – flexibilní nástroj pro změnu databáze uživatelů.
passwd – jednoduchý nástroj pro změnu uživatelských hesel.
pw – výkonný a flexibilní nástroj pro úpravu všech vlastností uživatelských účtů.

Použití adduser – příklad
# adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : jru
Password   : ****
Full Name  : J. Random User
Uid        : 1001
Class      :
Groups     : jru wheel
Home       : /home/jru
Shell      : /usr/local/bin/zsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
#
Do domovského adresáře pro nového uživatele, zkopíruje soubory ve výchozí konfiguraci („dotfiles“) z /usr/share/skel
Použití rmuser – příklad
# rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user’s home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru — personal group is empty) done.
Removing user’s incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#
Odstraní crontaby uživatele (pokud existují), všechny joby a provede kill procesů ve vlastnictví uživatele, odstraní domovský adresář
uživatele (pokud je ve vlastnictví uživatele), příchozí poštu soubory patřící k uživateli z /var/mail, odstraní všechny soubory
vlastněné uživatelem z dočasného oblasti ukládání souborů, jako je /tmp a odstraňuje uživatelské jméno ze všech skupin, do které
patří v /etc/group. Poznámka: Je-li skupina prázdná a název skupiny je stejný jako uživatelské jméno, je odstraněna skupina, vytvořená adduser. Rmuser nelze použít k odstranění superuser účtu.
Použití chpass – příklad
Změna uživatelských databasových informací pro superuživatele
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
Normální uživatel může pro sebe měnit menší část informací
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
Použití passwd – změna hesla uživatele jru příklad
# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database…
passwd: done
Sám uživatel si mění heslo stejně bez jména uživatele v příkazu passwd

 

Použití pw – příklady
Seznam přepínačů příkazu pw
# man pw
pw [user|group|lock|unlock] [add|del|mod|show|next] [help|switches/values]

Přidat uživatele
# pw useradd -n tom -s /bin/csh -m
# passwd tom
-n : username
-s : shell
-m : vytvoření home directory

Smazat uživatele
# pw userdel -n tom -r
-r smaže home directory včetně jeho obsahu

Přidat skupinu
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:

Smazat skupinu
# pw group del mygroup

Přidat uživatele do skupiny
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru
-M nastavit členy skupiny
-m přidat člena skupiny

Přidat uživatele do existujících skupin
# pw usermod tom -G ftpusers,wwwusers

Přidat nového uživatele do skupiny
# pw useradd jerry -G sales

Zamknutí a odemknutí uživatelského účtu
# pw lock jerry
# pw unlock jerry

Administrace uživatelů v Solarisu

Kde je to uloženo

Solaris ukládá uživatelské a skupinové účty do těchto souborů:

  • /etc/passwd – je soubor kde jsou uložené uživatelské účty
  • /etc/shadow – zde jsou uložená hesla v šifrované podobě/etc/group – definuje skupiny

/etc/passwd

Uživatelský účet je uložen ve tvaru:

uziv_jmeno:x:UID:GID:comment:
home_directory:login_shell

uziv_jmeno – unikátní, přes něj se přihlašuje do systému. 8 znaků. a-Z,0-9. První musí být písmeno a jeden znak musí být malé písmeno. Znaky ‚-‚, ‚_‘, ‚.‘ jsou povoleny, ale nejsou doporučeny.

x – zástupný znak za heslo – to je uložené v /etc/shadow – max 256 znaků, čísel nebo speciálních znaků.

UID – unikátní číslo, které má user pod systémem. Pro uživatele rozsah od 100 to 60000. 0 až 99 jsou rezervované pro systémové účty. 60001 je pro účet nobody, 60002 je pro účet noaccess.

GID – číslo, které identifikuje skupinu do které user patří. Rozsah 100 to 60000.Comment – komentář
Home directory – Domácí adresář do kterého je uživatel přepnut po zalogování. V tomto adresáři má povolen zápis.
Login shell – shell který je mu spuštěn po zalogování – je na výběr z Bourne shell, Korn shell, C shell, Z shell, BASH shell a TC shell.

/etc/shadow
Má nastavená práva čtení jen pro roota.

root:VsHfC3JCCdgth:6445::::::

daemon:NP:6445::::::
Struktura má následující pořadí:

loginID:password:lastchg:min:max:warn:inactive:expire:

loginID – shodné s údajem v /etc/passwd
password – Zašifrované 13-ti znakové slovo. Pokud je zde “ *LK* „, tak to znamená že účet je zablokovaný. NP znamená že není heslo. Heslo musí být minimálně 6 znaků, minimálně dvě písmenka a jedno číslo nebo speciální znak. Nesmí být stejné jako login a nesmí být ani opačný jako login
lastchg – Změna hesla proběhla před počtem dní v poli lastchg od 1.1.1970.
min – počet dní po který nemůže být heslo změněno
max – maximální stáří hesla – dní
warn – Uživatel dostane varování warn dní před vypršením
inactive – po pomto počtu dní kdy se uživatel nepřihlásí je účet zablokován
expire – počet dní od 1.1.1970, pak účet vyexpiruje
/etc/group

Každý uživatel náleží do skupiny dle záznamu v /etc/passwd. Této skupině se říká primární. Uživatel může mít až 15 dalších skupin a to v souboru /etc/group

Struktura /etc/group:
groupname:group-password:GID:username-listgroupname

groupname – jméno skupiny – max 8 znaků
group-password – Je většinou prázdné.
GID – ID skupiny, čísla 0 až 99, 60001, 60002 a 65534 jsou rezervována pro systém. Využitelné 100 až 60000.
username-list – Seznam uživatelů, které do dané skupiny náleží.
Administrace uživatelů – programy pro práci
Základní příkazy
useradd – přidává uživatele
userdel – maže uživatele
usermod – změna uživatele
groupadd – přidává skupinu
groupdel – maže skupinu
groupmod – změna skupiny
Mimo těchto příkazů má Solaris 9 a 10 nový příkaz smuser a smgroup
Příkaz smuser má následující parametry:
add – pro přidání uživatele
modify – pro změnu uživatele
delete – smazání uživatele
list – výpis uživatele
Oproti klasickým přikazům jako useradd umí smuser a smgroup mimo lokálních účtů spravovat i vzdálené. Hodí se ke scriptové administraci a příkazy by měly umět zacházet se scripty od Solaris Management Console.

Použití useradd – příklad
# useradd -u 105 -g other -d /export/home/newuser1 -m -s /bin/ksh -c „Regular User Account“ novyuser1
64 blocks
vysvětlení:
u = UID, tedy 105
g = skupina, tedy other
d = domácí adresář
m = vytvoř domácí adresář
s = shell
c = komentář
novyuser1 = jméno uživatele
Pokud něco nezadáte, tak se doplní z defaultu. Default je uložen v /usr/sadm/defadduser. Pokud tam není, tak ho pomocí příkazu useradd -D vytvoříme a pak můžeme editovat.
Po založení je účet bez hesla a zablokován. Jakmile mu pomocí příkazu passwd novyuser1 nastavíte heslo, bude funkční.
Použití userdel – příklad
userdel username
Pokud chcete smazat i domácí adresář a data v něm
userdel -r user

 

Použití usermod – příklad
usermod -m -d /export/home/usera -l usera novyuser1
Takže příkaz udělá změnu z loginu usera na novyuser1 a zároveň změní domovský adresář a vytvoří ho.
Pro představu ta samá změna ale při použití příkazu smuser
/usr/sadm/bin/smuser modify — -n novyuser1 -N usera -d /export/home/usera
Authenticating as user: root
Type /? for help, pressing  accepts the default denoted by [ ]
Please enter a string value for: password :: ********
Loading Tool: com.sun.admin.usermgr.cli.user.UserMgrCli from testik.web.cz
Login to testik.web.cz as user root was successful.
Download of com.sun.admin.usermgr.cli.user.UserMgrCli from testik.web.cz was successful.
Použití groupadd, groupmod, groupdel – příklad
Vytvoříme skupinu id 101 se jménem skupinaucetnich
groupadd -g 101 skupinaucetnich
Změníme název skupiny s id 101 na skupinasefu
groupmod -g 101 skupinasefu
Smažeme skupinu
groupdel skupinasefu

Soubory ovlivňující proces přihlášení
Přihlášení ovlivňují následující soubory:
Pro shelly Bourne, Korn, a BASH je zde soubor /etc/profile, který se spouští při loginu
Pro C shell se spouští /etc/.login.
Každý uživatel může mít ještě vlastní a to:
Bourne shell: $HOME/.profile
Korn shell: $HOME/.profile a $HOME/.kshrc
C shell: $HOME/.cshrc a $HOME/.login
Bash: $HOME/.bash_profile, $HOME/.bash_login, nebo $HOME/.profile.
Vzory konfiguračních souborů jsou v /etc/skel/.
Příkaz useradd nakopíruje soubory z /etc/skel do domácího adresáře.

Proměnné prostředí:
Vypíšete je příkazem env
MANPATH=:/usr/man:/usr/share/man:/opt/SUNWvts/man:/opt/SUNWexplo/man:/opt/CTEact/man
TERM=dtterm
SHELL=/usr/bin/bash
USER=root
jsou zde důležitá nastavení, která ovlivnují chování vašeho shellu, ale i programů, které pod ním spustíte.
Nastavení proměnných prostředí:
Nastavení terminálu pro Bash, Bourne a Korn
TERM=dtterm; export TERMPro C shell
setenv TERM dtterm
Zamknutí a odemknutí uživatelského účtu
# passwd -l jerry
# passwd -u jerry