Erinevus lehekülje "Kasutajakeskkond Debianis" redaktsioonide vahel
(→Sissejuhatus) |
(→ulimit - ressursipiirangute kehtestamine) |
||
(ei näidata sama kasutaja 15 vahepealset redaktsiooni) | |||
69. rida: | 69. rida: | ||
===Kasutajakeskkond=== | ===Kasutajakeskkond=== | ||
− | Arvuti konsoolilt või pseudo-terminalilt (nt ssh programmi abil) kasutaja süsteemi sisse logimisel | + | Arvuti konsoolilt või pseudo-terminalilt (nt ssh programmi abil) bash shelli kasutava kasutaja süsteemi sisse logimisel |
* rakendatakse vastavalt PAM mooduli login seadistusfailist /etc/pam.d/login või mooduli ssh seadistusfailist /etc/pam.d/ssh tulenevad seadistused ja piirangud (reeglina /etc/security/limits.conf) | * rakendatakse vastavalt PAM mooduli login seadistusfailist /etc/pam.d/login või mooduli ssh seadistusfailist /etc/pam.d/ssh tulenevad seadistused ja piirangud (reeglina /etc/security/limits.conf) | ||
76. rida: | 76. rida: | ||
* väljalogimisel täidetakse failis ~/.bash_logout kirjas olevad tegevused | * väljalogimisel täidetakse failis ~/.bash_logout kirjas olevad tegevused | ||
− | Peale süsteemi sisselogimist on kasutajal shell nö ees ja ta saab arvutit kasutama hakata, nt kävitada protsesse. | + | Peale süsteemi sisselogimist on kasutajal shell nö ees ja ta saab arvutit kasutama hakata, nt kävitada protsesse. |
+ | |||
+ | ====Tuuma parameetrid==== | ||
+ | |||
+ | Süsteemi tööd kontrollib kõige globaalsemal tasemel ca 700 nn tuuma ehk sysctl parameetrit, süsteem arvutab neile sobivad väärtused alglaadimise ajal, osa sõltub kasutatava füüsilise ressursi olemasolust. Osa parameetreid saab ainult lugeda, aga mitmeid neist saab juurkasutaja muuta vastuvalt vajadusele, nt määratleda, kas arvuti töötab ruuterina või mitte. Süsteemi alglaadimisel loetakse /etc/sysctl.conf faili sisu muudatuste kehtestamiseks. Parasjagu kehtestatud piiranguid saab küsida sysctl utiliidi abil | ||
+ | |||
+ | $ /sbin/sysctl fs.file-max | ||
+ | fs.file-max = 198467 | ||
+ | |||
+ | Parameetrite väärtusi saab muuta juurkasutaja öeldes nt | ||
+ | |||
+ | # sysctl -w net.ipv4.ip_forward=0 | ||
====Tekstikonsoolilt sisseloginud kasutaja keskkond==== | ====Tekstikonsoolilt sisseloginud kasutaja keskkond==== | ||
243. rida: | 254. rida: | ||
===set, env, export ja source kasutamine=== | ===set, env, export ja source kasutamine=== | ||
− | + | Teatud mööndustega võib üldiselt öelda, et bash shelli kasutava kasutaja keskkonnas on kahesuguseid keskkonnamuutujaid | |
− | * | + | * lokaalsed - nende abil saab nt lugeda käesoleva shelli omadusi |
− | |||
− | + | $ echo $BASH_VERSION | |
+ | 3.2.39(1)-release | ||
− | + | või lihtsalt kasutada neid muutujatena shellis käske andes, nt arhiveerida kataloogid nimedega 1 2 3 4 | |
− | $ | + | $ for i in 1 2 3 4; do tar zcf $i.tgz $i; done |
− | + | Oluliseks lokaalse muutuja tunnuseks on, et nende väärtusi ei anta edasi keskkonnas käivitatud shellile. | |
− | + | * eksporditavad - need on muude omaduste poolest samasugused keskkonnamuutujad nagu lokaalsedki, aga nende väärtused antakse edasi keskkonnas käivitatud shellile | |
− | $ | + | $ echo $LANG |
+ | C | ||
+ | $ bash | ||
+ | $ echo $LANG | ||
+ | $ C | ||
− | ==== | + | ====env==== |
− | + | env programmi abil saab anda argumendiks oleva programmile külge keskkonna, nt | |
− | $ | + | $ env GCC=/usr/bin/gcc-4.1 ./programminimi |
+ | |||
+ | kusjuures põhiliselt kasutatakse bash shellist käsku env ilma argumentideta eksporditud keskkonnamuutujate ja vastavate väärtuste nimekirja esitamiseks. | ||
====set==== | ====set==== | ||
− | set käsu abil saab seada muutuja väärtust käesoleva shelli eksemplari jaoks, kusjuures seda ei anta edasi alamshellile | + | set käsu abil saab seada lokaalsete muutuja väärtust käesoleva shelli eksemplari jaoks, kusjuures seda ei anta edasi alamshellile |
$ set MUUTUJA_LOKAALNE=muutujavaartus_lokaalne | $ set MUUTUJA_LOKAALNE=muutujavaartus_lokaalne | ||
281. rida: | 298. rida: | ||
$ unset MUUTUJA_LOKAALNE | $ unset MUUTUJA_LOKAALNE | ||
+ | |||
+ | Üheks praktiliseks juhtumiks on nt kompileerimisel kompilaatori versiooni valimine | ||
+ | |||
+ | $ GCC=/usr/bin/gcc-4.1 make | ||
+ | |||
+ | ====export==== | ||
+ | |||
+ | export käsu abil saab seada muutuja väärtust käesoleva shelli eksemplari jaoks, kusjuures see antakse edasi alamshellile. Sellise omadusega muutujat saab moodustada kahe sammuna | ||
+ | |||
+ | $ set MUUTUJA_EDASIANTAV=muutujavaartus_edasiantav | ||
+ | $ export MUUTUJA_EDASIANTAV | ||
+ | |||
+ | või ühe sammuna | ||
+ | |||
+ | $ export MUUTUJA_EDASIANTAV=muutujavaartus_edasiantav | ||
+ | |||
+ | Kuna tegu on küll eksporditava keskkonnamuutujaga, aga siiski keskkonnamuutujaga, saab teda mälust kustutada öeles | ||
+ | |||
+ | $ unset MUUTUJA_EDASIANTAV | ||
====source==== | ====source==== | ||
− | source käsu abil saab täita tekstifailis sisalduvad käsud käesolevas shellis, tavaliselt kasutatakse seda muutujate väärtuste ja funktsioonide kirjelduste shelli sisselugemiseks | + | source käsu abil saab täita tekstifailis sisalduvad käsud käesolevas shellis, tavaliselt kasutatakse seda muutujate väärtuste ja funktsioonide kirjelduste käesolevasse shelli sisselugemiseks |
$ source failinimi.src | $ source failinimi.src | ||
328. rida: | 364. rida: | ||
* http://www.debian-administration.org/articles/31 | * http://www.debian-administration.org/articles/31 | ||
− | === | + | ===ulimit - ressursipiirangute kehtestamine=== |
Kasutaja ressursipiirangud on määratud /etc/security/limits.conf faili sisuga, kasutaja jaoks nt sellised ühes süsteemis vaikimisi juhtumil | Kasutaja ressursipiirangud on määratud /etc/security/limits.conf faili sisuga, kasutaja jaoks nt sellised ühes süsteemis vaikimisi juhtumil | ||
349. rida: | 385. rida: | ||
virtual memory (kbytes, -v) unlimited | virtual memory (kbytes, -v) unlimited | ||
file locks (-x) unlimited | file locks (-x) unlimited | ||
+ | |||
+ | kus | ||
+ | |||
+ | * core file size 0 - core faile ei salvestata | ||
+ | * open files 1024 - ühe protsessi poolt samaaegselt avada lubatud failide arv | ||
+ | * max user processes - operatsioonisüsteemis kasutajale lubatud samaaegselt töötavate protsesside arv | ||
Nt konkreetse kasutaja jaoks saab süsteemselt piirangu seada kasutades limits.conf failis ridu | Nt konkreetse kasutaja jaoks saab süsteemselt piirangu seada kasutades limits.conf failis ridu | ||
354. rida: | 396. rida: | ||
priit hard nproc 20 | priit hard nproc 20 | ||
priit hard nofile 100 | priit hard nofile 100 | ||
+ | |||
+ | Töötava protsessi ulimit väärtusi saab küsida /proc protsessi kataloogist, nt | ||
+ | |||
+ | # cat /proc/9387/limits | ||
+ | Limit Soft Limit Hard Limit Units | ||
+ | Max cpu time unlimited unlimited ms | ||
+ | Max file size unlimited unlimited bytes | ||
+ | Max data size unlimited unlimited bytes | ||
+ | ... | ||
+ | |||
+ | Selleks, et ühe või teise programmi jaoks limits.conf kehtestuks, peab olema ta vastavas PAM moodulis kasutusel, nt su puhul peab /etc/pam.d/su sisaldama muu hulgas rida | ||
+ | |||
+ | session required pam_limits.so | ||
===Bash shell kasutamine=== | ===Bash shell kasutamine=== | ||
396. rida: | 451. rida: | ||
. ~/.bash_aliases | . ~/.bash_aliases | ||
fi | fi | ||
+ | |||
+ | ===Programmide käivitamine=== | ||
+ | |||
+ | Kui programmi iseloom on selline, et ta jääb nö niisama terminalil käima, siis sobib teda käivitada start-stop-daemon abil, nii | ||
+ | |||
+ | # start-stop-daemon -v -m -b --start --pidfile /tmp/tcpdump.pid \ | ||
+ | --startas /usr/sbin/tcpdump -- -w /tmp/log.log host 1.1.1.1 | ||
+ | |||
+ | ja seisata nii | ||
+ | |||
+ | # start-stop-daemon -v --stop --pidfile /tmp/tcpdump.pid | ||
===Süsteemsed kasutajad=== | ===Süsteemsed kasutajad=== |
Viimane redaktsioon: 24. jaanuar 2013, kell 21:24
Sisukord
- 1 Sissejuhatus
- 2 Süsteemi kasutajate andmebaas
- 3 Kasutajakeskkond
- 3.1 Tuuma parameetrid
- 3.2 Tekstikonsoolilt sisseloginud kasutaja keskkond
- 3.3 SSH abil pseudo-terminalilt sisseloginud kasutaja keskkond
- 3.4 Mitte-login shelli kasutamine
- 3.5 su ja sux programmide kasutamine
- 3.6 sudo programmi kasutamine
- 3.7 Graafiliselt konsoolilt sisseloginud kasutaja keskkond
- 3.8 Süsteemi alglaadimise käigus käivitatud protsessi kasutajakeskkond
- 4 set, env, export ja source kasutamine
- 5 umask
- 6 Bash completion
- 7 ulimit - ressursipiirangute kehtestamine
- 8 Bash shell kasutamine
- 9 Programmide käivitamine
- 10 Süsteemsed kasutajad
- 11 Kasulikud lisamaterjalid
Sissejuhatus
Kasutajakeskkonna (ingl. k. user environment) moodustavad need tingimused ja piirangud, mis võimaldavad kasutajal operatsioonisüsteemi kasutada ning rakenduvad kasutaja protsessidele. Kasutajakeskkonna määratlevad
- süsteemsed ressursipiirangud (ingl. k. resource limits) - määravad kui palju süsteemi ressurssi on kasutajal võimalik kasutada, nt kui palju protsesse saab kasutaja samaaegselt käivitada või kui palju on kasutajal kasutada kettaruumi
- keskkonnamuutujad - keskkonnamuutujate abil saab kasutaja poolt käivitatavaid programme sh shelli protsessi ennast juhtida, nt määrata lokaadi omadusi või bash history suuruse
Üldiselt iga arvutis töötav protsess töötab omas keskkonnas, kus tema tööd mõjutavad süsteemsed ressursipiirangud ja keskkonnamuutujad, kusjuures vaikimisi pärib protsessi poolt käivitatud protsess oma eelkäija keskkonna, st talle rakendatakse samu piiranguid ja keskkonnamuutujatel on samasugused väärtused.
Süsteemis tootavad protsessid võib jagada kaheks selle alusel, kas nad on seotud nö tty terminaliga või mitte
tty terminaliga mitte seotud protsessid
- need käivitatakse tavaliselt süsteemi alglaadimisel
- ps aux väljundis on TTY tulbas väärtus '?'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2884 0.0 0.0 48864 1184 ? Ss May24 0:00 /usr/sbin/ssh
tty terminaliga seotud protsessid
- need on käivitanud süsteemi terminalilt (nt arvuti füüsiline või serial konsool või ssh'ga seotud pseudo-terminal) sisse loginud kasutaja
- protsessi 0, 1 ja 2 file descriptor'id on seotud terminaliga, st programm ootab vaikimisi sisendit terminalilt ja kirjutab väljundi ja veaväljundi terminalile
- protsessi saab klaviatuurilt Ctrl-C abil lõpetada (mis on samaväärne INT signaali saatmisega)
- TTY tulbas on esitatud nn controlling terminali nimi
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND mart 16002 0.0 0.1 42528 2624 pts/5 Ss+ May29 0:00 ssh mart@10.0.5.8
Käesolevas tekstis püütakse selgelt väljendada kumma juhtumiga on tegemist, aga valdavalt käsitletekse ühel või teisel moel terminaliga seotud protsesse.
Üldiselt on osa kasutajakeskkonna omadustest kasutajale ette antud ning osalt saab kasutaja keskkonna omadusi muuta, nt
- tavaliselt kasutaja ei saa muuta oma kasutajanime ja UID väärtust
- kasutaja ei suurendada arvu, mis määrab kui palju tema käivitatud protsess saab samaaegselt faile avada, aga ta saab seda arvu vähendada
- kasutaja saab muuta oma lokaadi määranguid
Süsteemi kasutajate andmebaas
Vaikimisi on andmed süsteemi kasutajate kohta kirjas failides, kusjuures NSS (Name Service Switch) toetab ka muid andmebaase, nt LDAP kataloog)
- /etc/passwd - kasutajate andmed
- /etc/group - gruppide kirjeldused
- /etc/shadow - paroolide krüptogrammid
Kasutaja moodustamiseks võib redigeerida tavalise tekstieditoriga faile /etc/passwd, /etc/group ja /etc/shadow aga sobivam on kasutada programme groupadd ja useradd, nt nii
# groupadd mart # useradd -g mart -m -d /home/mart -s /bin/bash mart
Ning omistada kasutajale parool
# passwd mart
Tulemusena lisatakse kasutaja andme mainitud kolme faili
# grep mart /etc/passwd /etc/group /etc/shadow /etc/passwd:mart:x:1000:1000::/home/mart:/bin/bash /etc/group:mart:x:1000: /etc/shadow:mart:$1$PvykLyXa$AxhjUndHit.WIcheFQoEI.:14114:0:99999:7:::
ja moodustatakse kasuta kasutaja kodukataloog /home/mart kuhu kopeeritakse failid kataloogis /etc/skel, vaikimisi
# find /etc/skel -type f /etc/skel/.bash_logout /etc/skel/.profile /etc/skel/.bashrc
Kasutajakeskkond
Arvuti konsoolilt või pseudo-terminalilt (nt ssh programmi abil) bash shelli kasutava kasutaja süsteemi sisse logimisel
- rakendatakse vastavalt PAM mooduli login seadistusfailist /etc/pam.d/login või mooduli ssh seadistusfailist /etc/pam.d/ssh tulenevad seadistused ja piirangud (reeglina /etc/security/limits.conf)
- käivitatakse sellele kasutajale failis /etc/passwd seadistatud shell'i protsess login shellina kõnealuse kasutaja õigustes
- algväärtustatakse kasutajakeskkond süsteemse profiili /etc/profile ja nn punktifailide, vaikimisi ainult .profile abil, kusjuures ~/.bash_profile ja ~/.bash_login faile Debianis vaikimisi ei kasutata
- väljalogimisel täidetakse failis ~/.bash_logout kirjas olevad tegevused
Peale süsteemi sisselogimist on kasutajal shell nö ees ja ta saab arvutit kasutama hakata, nt kävitada protsesse.
Tuuma parameetrid
Süsteemi tööd kontrollib kõige globaalsemal tasemel ca 700 nn tuuma ehk sysctl parameetrit, süsteem arvutab neile sobivad väärtused alglaadimise ajal, osa sõltub kasutatava füüsilise ressursi olemasolust. Osa parameetreid saab ainult lugeda, aga mitmeid neist saab juurkasutaja muuta vastuvalt vajadusele, nt määratleda, kas arvuti töötab ruuterina või mitte. Süsteemi alglaadimisel loetakse /etc/sysctl.conf faili sisu muudatuste kehtestamiseks. Parasjagu kehtestatud piiranguid saab küsida sysctl utiliidi abil
$ /sbin/sysctl fs.file-max fs.file-max = 198467
Parameetrite väärtusi saab muuta juurkasutaja öeldes nt
# sysctl -w net.ipv4.ip_forward=0
Tekstikonsoolilt sisseloginud kasutaja keskkond
Arvuti tekstikonsoolilt sh serial konsoolilt sisse logides esmalt täidetakse PAM login mooduli seadistusfailis /etc/pam.d/login kirjeldatud tegevused, vaikimisi
- /etc/security/limits.conf - seadistatakse globaalsed ressursipiirangud
ja seejärel bash shelli käivitamisel kasutatakse selliseid seadistusfaile
- /etc/profile - globaalne profiilifail, mis määrab PATH ja PS1 väärtused erinevalt tava-ja juurkasutajale
- kasutaja shelli punktifailid - kolmest kasutatakse ainult esimese, mis leidub, faile vaadatakse läbi sellises järjekorras ~/.bash_profile, ~/.bash_login, ~/.profile
Vaikimisi on kasutaja jaoks kirjeldatud sellised keskkonnamuutujad
$ env SHELL=/bin/bash TERM=vt100 HUSHLOGIN=FALSE USER=priit LS_COLORS=no=00:fi=00:di=01;... MAIL=/var/mail/priit PATH=/usr/local/bin:/usr/bin:/bin:/usr/games PWD=/home/priit HISTCONTROL=ignoreboth SHLVL=1 HOME=/home/priit LOGNAME=priit _=/usr/bin/env
Punktifailid on tavalised tekstifailid, ei alga '#!/bin/bash' järgnevusega ja ei ole iseenesest käivitatavad, tavaliselt on nad ainult kasutajale loetavad ja kirjutatavad, kuid süsteem loeb nende sisu ja käivitab seal esitatud käsud.
Failide läbivaatamise ja kehtestamise osas on hea veenduda tekitades kõik failid alustuseks ning kirjutades neile sisse
$ cat .bash_profile PUNKT_BASH_PROFILE_ON_OLEMAS=punkt_bash_profile_on_olemas $ cat .bash_login PUNKT_BASH_LOGIN_ON_OLEMAS=punkt_bash_login_on_olemas $ cat .profile PUNKT_PROFILE_ON_OLEMAS=punkt_profile_on_olemas
Ning seejärel sisse logides on käsuga env näha, millised punktifaile on süsteem tegelikult kasutanud. Sarnaselt saab stat programmiga kaudselt kontrollida, milliseid faile on kasutatud.
Kui kasutaja soovib ise ulimit väärtusi muuta, siis seda sobib teha .bashrc failist lisades nt faili lõppu read
ulimit -n 80
Näiteks küsides arvutilt kasutaja login shelli protsessile 17731 vastavaid andmed, sh keskkonnamuutujaid öeldakse (miinus märk bash ees tähistab ajalooliselt asjalolu, et tegu on login shelliga)
$ ps e -p 17731 PID TTY STAT TIME COMMAND 17731 ttyS1 S+ 0:00 -bash TERM=vt100 HOME=/home/priit SHELL=/bin/bash USER=priit\ LOGNAME=priit PATH=/usr/local/bin:/usr/bin:/bin:/usr/games MAIL=/var/mail/priit HUSHLOGIN=FALSE
Sama protsess paistab w käsu väljundis selliselt
# w 16:40:39 up 7 days, 1:35, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT priit ttyS1 - 12:48 2:11m 0.28s 0.28s -bash ...
Kuna tegu on login shelli kasutusjuhuga, siis väljalogimisel täidetakse failis ~/.bash_logout kirjas olevad tegevused.
SSH abil pseudo-terminalilt sisseloginud kasutaja keskkond
Arvutisse pseudo-terminalilt sisse logides, nt ssh kliendiga, esmalt täidetakse PAM ssh mooduli seadistusfailis /etc/pam.d/ssh kirjeldatud tegevused, vaikimisi
- /etc/environment - vaikimisi ei ole kasutuses, fail on tühi
- /etc/security/pam_env.conf - vaikimisi ei ole kasutuses, fail on tühi
- /etc/default/locale - 'dpkg-reconfigure locale' seadistab failile sisu, nt rea 'LANG=et_EE.UTF-8'
- /etc/security/limits.conf - seadistatakse globaalsed ressursipiirangud
ja seejärel bash shelli käivitamisel kasutatakse selliseid seadistusfaile
- /etc/profile - globaalne profiilifail, mis määrab PATH ja PS1 väärtused erinevalt tava ja juurkasutajale
- kasutaja shelli punktifailid - kolmest kasutatakse ainult esimese, mis leidub, faile vaadatakse läbi sellises järjekorras ~/.bash_profile, ~/.bash_login, ~/.profile
Vaikimisi on ssh puhul oluline tähele panna, et tuuakse kaasa LANG muutuja ning moodustatakse veel mõned iseloomulikud muutujad
$ env TERM=xterm SHELL=/bin/bash SSH_CLIENT=192.168.10.10 50602 22 SSH_TTY=/dev/pts/1 USER=priit LS_COLORS=no=00:fi=00:... MAIL=/var/mail/priit PATH=/usr/local/bin:/usr/bin:/bin:/usr/games PWD=/home/priit LANG=hiinakeel HISTCONTROL=ignoreboth SHLVL=1 HOME=/home/priit LOGNAME=priit SSH_CONNECTION=192.168.10.10 50602 192.168.10.250 22 DISPLAY=localhost:11.0 _=/usr/bin/env
Kuna tegu on login shelli kasutusjuhuga, siis väljalogimisel täidetakse failis ~/.bash_logout kirjas olevad tegevused.
Mitte-login shelli kasutamine
Mitte-login shelli kasutamine tähendab, et bash käivitatakse, aga see ei toimu seoses süsteemi sisselogimisega, sellisel juhul on kaks võimalust
- mitte-login shelli kasutamine interaktiivses režiimis - nt kasutaja käivitab shellis olles uuesti shelli, st öeldes
$ echo $SHLVL 1 $ bash $ echo $SHLVL 2
Kasutaja nn mitte-login shelli (ingl. k. non-login shell) puhul päritakse töötavalt shellilt enamus kasutajakeskkonna omadusi ning kasutatakse /etc/bash.bashrc ja .bashrc uue shelli väärtustamiseks. Ei kasutata PAM moodulite seadistusi ega /etc/profile ega ~/.profile faile.
Selleks, et login ja mitte-login shelli keskkond oleks sarnane loetakse ~/.profile faili lõpus sisse ~/.bashrc sisu.
- mitte-login shelli kasutamine mitte-interaktiivses režiimis - nt kasutaja käivitab shell skripti moodustades faili sisuga
$ cat skript.sh !#/bin/bash echo olen skript $ chmod 0755 skript.sh $ ./shript.sh olen skript
Mitte-login shelli kasutamisel mitte-interaktiivselt puhul päritakse töötavalt shellilt enamus kasutajakeskkonna omadusi, kuid ei kasutata /etc/bash.bashrc ega ~/.bashrc faile. Keskkonnamuutuja BASH_ENV abil saab viidata failile, mis nö source'itakse
$ cat bash_env.src echo olen BASH_ENV muutuja poolt viidatud faili sisu $ export BASH_ENV=/home/mart/bash_env.src $ ./skript.sh olen BASH_ENV muutuja poolt viidatud faili sisu olen skript
Asjakohane autentne info on bash manuaalis (man bash) sektsioonis INVOCATION.
su ja sux programmide kasutamine
su programmi (switch user) kasutab tavaliselt juurkasutaja selleks, et sooritada tegevusi mõne muu kasutajana. Kui kasutada võtit '-l' või '-', siis asendatakse juurkasutaja shell su programmi argumendina näitadatud kasutaja login shelliga (algväärtustatakse keskkonnamuutujad, asendatakse töökataloog)
# pwd /root # su - mart $ pwd /home/mart
sux on su programmi wrapper, mis võimaldab edastada X credentials'isid ja tulemusena saab avanenud shellist kasutada ka X serverit, st avada kasutajana graafilise kasutajaliidesega programme, tarkvara paigaldamised tuleb öelda
# apt-get install sux
sudo programmi kasutamine
TODO
Graafiliselt konsoolilt sisseloginud kasutaja keskkond
Arvuti graafiliselt konsoolilt sisse logides kasutatakse selliseid seadistusfaile
- TODO
Süsteemi alglaadimise käigus käivitatud protsessi kasutajakeskkond
TODO
set, env, export ja source kasutamine
Teatud mööndustega võib üldiselt öelda, et bash shelli kasutava kasutaja keskkonnas on kahesuguseid keskkonnamuutujaid
- lokaalsed - nende abil saab nt lugeda käesoleva shelli omadusi
$ echo $BASH_VERSION 3.2.39(1)-release
või lihtsalt kasutada neid muutujatena shellis käske andes, nt arhiveerida kataloogid nimedega 1 2 3 4
$ for i in 1 2 3 4; do tar zcf $i.tgz $i; done
Oluliseks lokaalse muutuja tunnuseks on, et nende väärtusi ei anta edasi keskkonnas käivitatud shellile.
- eksporditavad - need on muude omaduste poolest samasugused keskkonnamuutujad nagu lokaalsedki, aga nende väärtused antakse edasi keskkonnas käivitatud shellile
$ echo $LANG C $ bash $ echo $LANG $ C
env
env programmi abil saab anda argumendiks oleva programmile külge keskkonna, nt
$ env GCC=/usr/bin/gcc-4.1 ./programminimi
kusjuures põhiliselt kasutatakse bash shellist käsku env ilma argumentideta eksporditud keskkonnamuutujate ja vastavate väärtuste nimekirja esitamiseks.
set
set käsu abil saab seada lokaalsete muutuja väärtust käesoleva shelli eksemplari jaoks, kusjuures seda ei anta edasi alamshellile
$ set MUUTUJA_LOKAALNE=muutujavaartus_lokaalne
kujuures ilma argumentidega set käsk esitab kõik käesolevas shellis kirjeldatud muutujad.
Samaväärne on öelda
$ MUUTUJA_LOKAALNE=muutujavaartus_lokaalne
unset abil saab eemaldada set või export abil seadistatud muutujate väärtusi
$ unset MUUTUJA_LOKAALNE
Üheks praktiliseks juhtumiks on nt kompileerimisel kompilaatori versiooni valimine
$ GCC=/usr/bin/gcc-4.1 make
export
export käsu abil saab seada muutuja väärtust käesoleva shelli eksemplari jaoks, kusjuures see antakse edasi alamshellile. Sellise omadusega muutujat saab moodustada kahe sammuna
$ set MUUTUJA_EDASIANTAV=muutujavaartus_edasiantav $ export MUUTUJA_EDASIANTAV
või ühe sammuna
$ export MUUTUJA_EDASIANTAV=muutujavaartus_edasiantav
Kuna tegu on küll eksporditava keskkonnamuutujaga, aga siiski keskkonnamuutujaga, saab teda mälust kustutada öeles
$ unset MUUTUJA_EDASIANTAV
source
source käsu abil saab täita tekstifailis sisalduvad käsud käesolevas shellis, tavaliselt kasutatakse seda muutujate väärtuste ja funktsioonide kirjelduste käesolevasse shelli sisselugemiseks
$ source failinimi.src
Samaväärne on öelda
$ . ./failinimi.src
umask
umask määrab, millised loabitid on vaikimisi moodustataval failil. Vaikimisi on moodustatav fail loabittidega 0644 ja parasjagu kehtivat umask väärtust saab küsida öeldes
$ umask 0022 $ umask -S u=rwx,g=rx,o=rx
Globaalne umask seadistatakse failis /etc/profile.
Bash completion
Keerukama bash completioni kasutamiseks kui niisama käsu lõpunikirjutamine peab süsteemis olema pakett bash-completion, kusjuures vaikimisi on see paigaldatud. Nt võimaldab bash-completion tarkvara lõpetada käsu argumente
- sisestades 'cd tühik-tab' esitatakse nimekirja käesolevas kataloogis olevatest alamkataloogidest
- sisestades 'rpm2cpio-tühik-tab' esitatakse nimekirja .rpm failidest
- sisestades 'gunzip-tühik-tab' esitatakse nimekiri .gz failidest
Completion on laiendatav, tavaliselt paketid lisavad laiendusi kataloogi /etc/bash_completion.d, nt Subversion
# dpkg -S /etc/bash_completion.d/subversion subversion: /etc/bash_completion.d/subversion
Subversioni puhul esitatakse tulemusena 'svn-tühik' sisestamisel nimekiri võimalikest nö esimestest svn argumentidest.
Probleemid
Kui Lenny puhul lisada kasutaja ilma shelli näitamata, siis määratakse kasutaja shelliks /bin/sh. Bash completioni iseärasuste tõttu saab /bin/sh kasutav kasutaja valides nt 'cd-tühik' sellise veateate, ' ' vahel tegelikult tühikut pole
$ cd -sh: <( compgen -d -- ' ' ): No such file or directory
Probleemi lahendab kasutaja shellina /bin/bash kasutamine. Kusjuures juurkasutaja shell on vaikimisi /bin/bash.
ulimit - ressursipiirangute kehtestamine
Kasutaja ressursipiirangud on määratud /etc/security/limits.conf faili sisuga, kasutaja jaoks nt sellised ühes süsteemis vaikimisi juhtumil
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 4095 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 4095 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
kus
- core file size 0 - core faile ei salvestata
- open files 1024 - ühe protsessi poolt samaaegselt avada lubatud failide arv
- max user processes - operatsioonisüsteemis kasutajale lubatud samaaegselt töötavate protsesside arv
Nt konkreetse kasutaja jaoks saab süsteemselt piirangu seada kasutades limits.conf failis ridu
priit hard nproc 20 priit hard nofile 100
Töötava protsessi ulimit väärtusi saab küsida /proc protsessi kataloogist, nt
# cat /proc/9387/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited ms Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes ...
Selleks, et ühe või teise programmi jaoks limits.conf kehtestuks, peab olema ta vastavas PAM moodulis kasutusel, nt su puhul peab /etc/pam.d/su sisaldama muu hulgas rida
session required pam_limits.so
Bash shell kasutamine
Tõenäolselt enamasti leiab bash shelli kasutamine aset Xterm programmi aknas. Lisaks ilmsele on abiks shortcut kombinatsioonide kasutamine
- Ctrl-D - ütleb exit, st logib välja kui tegu on nn login-shelliga
- Ctrl-A - viib kursori rea algusse
- Ctrl-E - viib kursori rea lõppu
Prompt
Prompti ehk kasutaja käsurea alguses oleva teksti määrab keskkonnamuutuja PS1 väärtus, vaikimisi on see kirjeldatud failis ~/.bashrc sektsioonis
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi
Aliases
Alias'teks nimetatakse kasutaja enda poolt kirjeldatud järgnevusi, nt kirjeldame ll täitma käsku 'ls -l'
$ alias ll='ls -l'
Öeldes seejärel ll täidetakse tegelikult käsk 'ls -l'.
Aliase kirjeldus saab eemaldada öeldes
$ unalias ll
Aliasel on kõrgem prioriteet kui failisüsteemist käivitatud programminimedel, st kui nimed langevad kokku, täidetakse aliasele vastav käsk.
Tavaliselt kirjeldatakse aliased failis ~/.bash_aliases, näitele vastaval juhul peaks seal sisalduma rida
alias ll='ls -l'
~/.bash_aliases faili kasutamiseks tuleb failis ~/.bashrc eemaldada kommentaarid sektsiooni eest
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Programmide käivitamine
Kui programmi iseloom on selline, et ta jääb nö niisama terminalil käima, siis sobib teda käivitada start-stop-daemon abil, nii
# start-stop-daemon -v -m -b --start --pidfile /tmp/tcpdump.pid \ --startas /usr/sbin/tcpdump -- -w /tmp/log.log host 1.1.1.1
ja seisata nii
# start-stop-daemon -v --stop --pidfile /tmp/tcpdump.pid
Süsteemsed kasutajad
TODO