Materiały archiwalne –nieco przestarzałe
Postawy administracji systemu Linux
W ostatnich latach coraz częściej się zdarza, że użytkownik zwykłego komputera staje się
jego administratorem, oczywiście mówię o użytkowniku Linuksa. Prawdopodobnie sami
zainstalowaliśmy system i sami musimy go skonfigurować itd. Co prawda niniejszy
artykuł nie omawia samej konfiguracji systemu (instalacja sterowników itp.) ale ma
uzmysłowić przed jakim zadaniem stoi mniej więcej administrator - w naszym przypadku
to właśnie my nim jesteśmy.
Omawiane zagadnienia
I Konta użytkowników;
- tworzenie kont,
- usuwanie kont,
- hasła.
II Grupy;
- tworzenie grup,
- usuwanie grup,
- zmiana aktualnej grupy,
- przypisanie/usunięcie użytkownika z danej grupy.
III Prawa dostępu;
- polecenie chown,
- polecenie chgrp,
- polecenie chmod.
IV Polecenie su.
V Pakiet sudo.
VI Podsumowanie.
I Konta użytkowników.
Zaraz po instalacji systemu powinniśmy utworzyć swoje własne (zwykłe) konto.
Oczywiście wtedy, gdy nie zrobiliśmy tego podczas instalacji. Nie zaleca się używać konta
root do codziennej pracy. Wynika to z faktu, że konto root ma za dużą władzę, np. nie
potrzebujemy konta root do oglądania filmów, słuchania muzyki itd. Konto root służy do
zadań administracyjnych, a nie do zabawy. Jeżeli nie znasz dobrze Linuksa to może Cię
zdarzyć, że niechcący coś zepsujesz i może się to skończyć ponowną instalacją systemu.
Wróćmy jednak do tworzenia kont. Konto można utworzyć na kilka sposobów. Jednym z
nich jest wydanie w wierszu poleceń komendy useradd. Przykładowo:
# useradd wiedzmin
Teraz w systemie mamy nowego użytkownika. Innym sposobem jest edycja pliku
/etc/passwd. Jednak nie polecam tego sposobu początkującym użytkownikom. Plik
/etc/passwd składa się z 7 pól oddzielonych od siebie znakami ":". Pierwsze pole oznacza
nazwę użytkownika, drugie - miejsce na hasło, trzecie - identyfikator, czwarte - grupa do
jakiej jest user przypisany, piąte - imię i nazwisko usera, szóste - katalog domowy i
siódme - powłoka. A teraz zobaczmy jak to wygląda w praktyce:
wiedzmin:x:100:100:Debian Fanatic User:/home/wiedzmin:/bin/bash
Konto jest już gotowe. Następnym krokiem będzie skopiowanie zawartości katalogu
/etc/skel do katalogu domowego użytkownika. Na koniec definiujemy hasło za pomocą
polecenia passwd, np.:
# passwd wiedzmin
Polecenie passwd może wydać także zwykły user, ale będzie mógł on zmienić hasło tylko
swojego konta. Konto jest już teraz w pełni gotowe do pracy. Wystarczy się zalogować.
Utworzyliśmy konto, jednak po jakimś czasie staje się ono niepotrzebne. Np.
utworzyliśmy konto siostrze i po jakimś czasie stwierdziliśmy, że ona wcale go nie używa.
Konto usuwamy w następujący sposób:
# userdel nazwa_konta
Teraz musimy skasować katalog domowy danego konta i to wszystko. Możemy też usunąć
wpis w pliku /etc/passwd, ale userdel spełnia zadanie bardzo dobrze.
II Grupy.
Każdy plik/katalog w systemie ma określonego właściciela i grupę. Można to bardzo łatwo
sprawdzić wydając polecenie ls -l, np.:
# ls -l /home
drwxrwsr-x 2 root users 1024 gru 17 19:40 home
Jak widać właścicielem katalogu /home jest root, natomiast katalog /home należy do
grupy users. Grupy tworzymy za pomocą polecenia groupadd, np.:
# groupadd nazwa_grupy
Ewentualnie możemy zrobić to edytując plik /etc/group. W pliku tym informacje o
grupach umieszczone są w następujący sposób: nazwa grupy:hasło:numer
identyfikacyjny grupy:użytkownik przypisany do grupy. Przykładowo:
wiedzmin:x:100
Aby usunąć daną grupę należy posłużyć się poleceniem groupdel:
# groupdel nazwa_grupy
Można też usunąć wpis w pliku /etc/group. Przy usuwaniu powinniśmy uważać czy nie
usuniemy grupy, do której jest przypisany jakiś użytkownik. Jeżeli dany użytkownik
należy do kilku grup zawsze może zmienić aktualną grupę na tą, której aktualnie
potrzebuje. Żeby sprawdzić do jakich grup należy użytkownik wydajemy polecenie
groups. Aby zmienić aktualną grupę na inną wydajemy polecenie newgrp.
Wiemy już nie co o grupach, ale co zrobić aby dodać użytkownika do danej grupy? Np. u
mnie nie mogłem zwykłym użytkownikiem słuchać muzyki, uruchomić X-Chata. Musiałem
użytkownika wiedzmin przypisać do dodatkowych grup. Aby dodać użytkownika do danej
grupy musimy wyedytować plik /etc/group. Następnie dopisujemy użytkownika do danej
grupy w następujący sposób. Po znaku dwukropka dopisujemy nazwę użytkownika. Jeżeli
chcemy do jednej grupy dopisać więcej niż jednego usera musimy postawić przecinki, ale
po znaku przecinka nie można zrobić odstępu. Np.
audio:x:105:wiedzmin,geralt,ktos_tam_jeszcze
Natomiast jeżeli chcemy kogoś usunąć z danej grupy wystarczy, że usuniemy odpowiedni
wpis w pliku /etc/group.
III Prawa dostępu.
Polecenie chown - służy ono do nadawania właściciela pliku/katalogu. Można również
nadać grupę. Np:
# chown właściciel nazwa_pliku
Jeżeli chcemy nadać również grupę:
# chown właściciel.grupa nazwa_pliku
Polecenie chgrp - służy do nadawania grupy pliku/katalogu. Jednak raczej rzadko używa
się tego polecenia, ponieważ można przypisać plikowi grupę za pomocą polecenia chown.
# chgrp grupa nazwa_pliku
Polecenie chmod - służy do nadawania praw dostępu do pliku/katalogu. Każdy
plik/katalog jest podzielony na 3 części (jeżeli chodzi o prawa dostępu). Żeby to
sprawdzić wpiszmy w wierszu poleceń komendę ls -l. Oto przykładowy wynik jego
działania:
drwxr-xr-x 2 wiedzmin wiedzmin 1024 gru 28 13:33 texty
W tym przypadku skupmy się na drwxr-xr-x. Z tego komunikatu dowiadujemy się, że
texty jest katalogiem - d, właściciel ma prawo do odczytu - r, zapisu - w i wykonywania -
x. Grupa i pozostali użytkownicy mają prawo do odczytu i wykonywania. Przejdźmy teraz
do bardziej szczegółowego omówienia tego tematu.
-rwxrwxrwx
| \ | / \ | / \ | /
0 1 2 3
0 - ta informacja mówi nam czy mamy do czynienia z plikiem czy z katalogiem,
1 - prawa dostępu dla właściciela,
2 - prawa dostępu dla grupy,
3 - prawa dostępu dla pozostałych użytkowników.
Teraz wyjaśnię co oznaczają poszczególne litery:
r - prawo do czytania,
w - prawo do zapisu,
x - prawo do wykonywania.
Ustawić prawa można na dwa sposoby. Pierwszym z nich jest:
# chmod +r plik
Nadaliśmy plikowi - plik prawo do odczytu. Jeżeli te prawo chcemy usunąć to wystarczy,
że zamiast plusa wstawimy znak "-".
Nadawanie praw dostępu za pomocą liczb ósemkowych.
0 - brak jakichkolwiek uprawnień,
1 - --x,
2 - -w-,
3 - -wx,
4 - r--,
5 - r-x,
6 - rw-,
7 - rwx.
Jeżeli chcemy teraz nadać prawa dostępu do jakiegoś pliku wystarczy, że użyjemy
polecenia chmod, np.:
# chmod 700 plik
Teraz plik otrzymał następujące prawa dostępu: rwx------. Oznacza to, że nikt po za
właścicielem nie będzie mógł go wykonać, czytać czy modyfikować go.
IV Polecenie su.
Może się zdarzyć, że podczas codziennej pracy nagle będziemy potrzebowali władzy jaką
dysponuje konto root. W tym celu nie musimy na nowo logować się jako
superużytkownik. Wystarczy w wierszu poleceń wpisać su root. Następnie będziemy
proszeni o podanie hasła dla wyżej wymienionego konta. Np.:
$ su root
Jeżeli chcemy wywołać użytkownika root z jego ustawieniami powłoki:
$ su - root
V Pakiet sudo.
Jeżeli jesteśmy administratorem jakiejś sieci i chcemy aby część obowiązków przejmą za
nas ktoś inny to z pomocą przyjdzie nam pakiet sudo. Jeżeli nie ma w naszym systemie
tego pakietu powinniśmy go zainstalować. Jednak gdy nie mamy sieci bez pakietu sudo
można się spokojnie obejść.
Pakiet sudo umożliwia administratorowi precyzyjne określenie listy użytkowników i
poleceń, które mogą być wykorzystywane przez administratora. To bardzo upraszcza nam
życie, zwłaszcza gdy tamy tych obowiązków za dużo. Informacje te umieszczone są z
pliku /etc/sudores.
Plik /etc/sudores podzielony jest na kilka części: * komendy, które mogą uruchamiać
użytkownicy pakietu sudo, * nazwy umowne (aliasy) komputerów, grupy sieciowe,
adresy IP i sieci, * pseudonimy (aliasy) użytkowników, * dane dotyczące użytkowników,
w tym rodzaje używanych przez nich komputerów, numery IP, lista autoryzowanych
użytkowników, informacja o tym, pod którego użytkownika "podszyje się" użytkownik
pakietu sudo (zazwyczaj jest to root).
VI Podsumowanie.
Informacje zawarte w niniejszym artykule to tylko podstawy jakie powinien znać każdy
początkujący administrator! Znajomość tworzenia kont, grup itd. to dopiero początek, z
biegiem czasu będziesz stawał na coraz to innych zadaniach. Chyba, że Linuksa
traktujesz jako zwykłą stację roboczą, w takim wypadku informacje tu zawarte są chyba
wystarczające.
Sudo
Jeżeli jesteśmy administratorem jakiejś sieci i chcemy aby część obowiązków przejął za
nas ktoś inny to z pomocą przyjdzie nam pakiet sudo. Program ten umożliwia nam
bardzo wygodną manipulację z przydzielaniu różnych uprawnień dla użytkowników.
Przejdźmy zatem do jego instalacji:
# apt-get install sudo
Pakiet mamy już zainstalowany. Teraz musimy dodać użytkowników do grupy sudo.
Oczywiście dodajemy tych użytkowników, których chcemy dodać:
# adduser <nazwa_uzytkownika> sudo
Jeżeli nie dodamy użytkownika do grupy to dany użytkownik nie będzie mógł z programu
korzystać. Sudo będzie mu kazało podać hasło, jednak gdy dany użytkownik jest dodany
problemu tego już nie będzie :^).
Pakiet Sudo ma ze sobą odpowiedni edytor, który służy do edytowania i modyfikowania
pliku /etc/sodores. Przejdźmy zatem do konfigurowania programu:
# visudo
Polecenie to uniemożliwa nieuprawnionym użytkownikom dostępu do pliku /etc/sudores.
Konfiguracja pliku /etc/sudores powinna wyglądać następująco:
user host = (UID) polecenie
Gdzie:
user - nazwa użytkownika
host - nazwa hosta
(UID) - jako kto będziemy wykonywali polecenie (często jest to root)
polecenie - polecenie
Jeżeli chcemy, żeby użytkownik wiedzmin mógł użytkować fsck.ext3 to konfiguracja
będzie wyglądała tak:
wiedzmin ALL = (ALL) /sbin/fsck.ext3
Ta konfiguracja jest bardzo ogólnikowa, można ją dokładniej zdefiniować:
wiedzmin yennefer = (root) /sbin/fsck.ext3
Możemy również przypisywać aliasy użytkownikom, poleceniom itp., np:
Cmnd_Alias FSCK=/sbin/fsck.ext3
Po konfiguracji zapisujemy zmiany i możemy sprawdzić czy wszystko działa jak należy.
Logujemy się jako zwykły użytkownik i w wierszu poleceń wpisujemy:
$ sudo fsck.ext3
Midnight Commander
Midnight Commander jest bardzo dobrym menedżerem plików. Jest on wizualną powłoką
zatem operacje można wykonać bez żmudnego wpisywania poleceń, używając
graficznego interfejsu. Pozwala to na znaczne skrócenie czasu, gdy na przykład
operujemy plikami, kopiujemy, kasujemy itd. MC ma duże możliwości, potrafi na przykład
odzyskać skasowane pliki (tylko ext2fs), przeglądać m.in. pakiety DEB, łączyć się z
zasobami ftp czy też przeglądać archiwa np. tar.
MC ma bardzo wygodny plik konfiguracyjny: /etc/mc/mc.etx. Możemy w nim
pomanipulować konfiguracją menedżera. Przydaje się to, gdy np. chcemy dodać nowe
rozszerzenie, które nie były wcześniej rozpoznawane.
Jeżeli chcemy aby pliki mp3 były uruchamiane przez mp3blaster-a to nie ma z tym
żadnych problemów. Jedynie musimy zmienić odpowiednią linię w pliku /etc/mc/mc.etx:
regex/\.(mp3|MP3|Mp3)$
Open=mp3blaster %f
Z dodaniem osobnego rozszerzenia też nie ma żadnych problemów. Np. playlista
programu mp3blaster na rozszerzenie lst. Żeby je dodać wystarczy, że zrobimy coś
takiego:
regex/\.(lst)$
Open=mp3blaster -l %f
Dodawanie nowych rozszerzeń jest bardzo wygodną rzeczą. Przypuśćmy, że dostaliśmy
nowe skóry dla xmms-a. Niby wszystko jest normalnie, ale skóry mają rozszerzenie wsz -
czyli skóry, które były robione z myślą o winamp-ie pod system windows. Na całe
szczęście wsz to nic innego jak popularne zip-y. Teraz szukamy w pliku informacji o zip-
ach i dodajemy wsz i gotowe.
Co mamy do skonfigurowania ?
Zanim weźmiemy się za naszą ciężką pracę musimy zastanowić się co na początek
skonfigurować, by można było jako tako pracować. Być zbyt długo nie myślał, to Ci
powiem. Musimy mieć ustawioną nazwę hosta i ogólnie sieć, polską klawiaturę i literki na
ekranie, musimy dodać jakiegos użytkownika, na którego koncie będziemy pracować i
słuchac mp-trójek, przydałby się też dostęp do internetu. Jako nowy użytkownik linuksa,
być nie był zbyt przerażony, chciałbyś poużywać myszki w jakimś środowisku graficznym
- to też załatwimy.
Należy Ci się, szanowny czytelniku, małe wyjaśnienie. Opis ten nie będzie dotyczył
żadnych konkretnych dystrybucji, ale ze względu na to, że sam używam Slackware, na
pewno będzie 'obciążony dziedzicznie' pewnymi naleciałościami. Postaram się by było ich
jak najmniej.
Klawiszologia
Przyda Ci się na pewno parę informacji na temat klawiszologi w linuksie. Więc szybko i
bez zbędnych dodatków - PgUp i PgDown przewijają konsolę w górę i w dół, strzałki w
górę i w dół to poprzednie i następne polecenie (wcześniej wydane), Alt-Fx to konsola nr
x (zazwyczaj od 1 do 6, na następnej pojawią się X-y, gdy je uruchomisz), Tab gdy
zaczniesz pisać polecenie uzupełni Ci resztę (np. katalog), ScrollLock zatrzyma
przewijanie się konsoli, cd ~ przejdzie do Twojego katalogu a cd ~user/ przejdzie do
takalogu użytkownika user. Ponadto daj polecenie 'mc' - uruchomi Ci się nakładka
podobna do Norton Commander. To tyle.
Modułowy system
Po zainstalowaniu systemu, podczas jego pierwszego ładowania możesz zobaczyć
mnóstwo jakichś dziwnych komunikatów. Ale nie nadążasz ich oglądać - co zrobić? Po
załadowaniu systemu i zalogowaniu się jako root możesz wydać polecenie dmesg, które
pokaże Ci je wszystkie jeszcze raz. Jeżeli ich ilość jest zbyt duża i znowu nie zdążyłeś (:P)
to możesz użyć polecenia less odbierającego z wyjścia dmesg poprzez potok dane do
wyświetlenia. Poważnie to zabrzmiało, ale jak to zapisać? Po prostu dmesg |less i już. W
ten sposób możeszy wyświetlić wszystko (prawie) co nie mieści Ci się na ekranie. Do
przewijania ekranu służą strałki kursora, a żeby wyjść naciśnij 'q'.
Te dziwne komunikaty mówią, które sterowniki są ładowane i uruchamiane. Dotyczy to
także niektórych usług (np. poczta - sendmail czy www - httpd). O tym w innym
rozdziale. Tutaj skupmy się na tym, jaki masz sprzęt, bo od tego zalezy, które moduły
załadować. Moduły obsługujące sprzęt w komputerze znajdują się w katalogu
/lib/modules/numer_jądra (zazwyczaj). Jeżeli wyświetlisz zawartość tego katalogu i
podkatalogów ujrzysz dużą liczbę plików z rozszerzeniem .o (np. ee100.o). To właśnie są
te osławione moduły. Moduły ładujesz do systemu poleceniem modprobe
nazwa_modułu, bez rozszerzenia nazwy modułu i bez podawania pełnej ścieżki
(powinna być podana w PATH). Jeżeli nie działa Ci coś z Twojego sprzętu, to pewnie nie
ma tego w jądrze i nie załadowany jest moduł obsługi tego urządzenia. Zakładamy, że
masz kartę muzyczną Sound Blaster 128 PCI, kartę sieciową zgodną z NE 2000 na PCI i
to w zasadzie wszystko. Modułów do karty grafiki nie ma (powiedzmy), a wszystkie inne
(od portów szeregowych czy drukarki) powinny być załadowane. Więc wedle tego, co
wcześniej mówiliśmy, ładujemy nasze moduły: modprobe ne2k-pci i jest załadowana
karta sieciowa oraz modprobe es1371 i jest też muzyka. Do ładowania modułów służy
także polecenie insmod, ale modprobe jest wygodniejsze. Do zobaczenia, jakie moduły
masz załadowane, służy polecenie lsmod. Jeżeli chcesz moduł usunąć uzyj rmmod
nazwa_modułu. Wszystkie te polecenia musisz wydawać z konta roota. Po szczegóły
(który moduł do jakiej karty) odsyłam Cię do dokumentacji. Jeżeli masz już załadowane
moduły do obsługi karty sieciowej możesz przejść do konfiguracji sieci
Polecenie mogące się przydać
Tutaj zaraz wymienię na szybciutko pare informacji na temat poleceń w linuksie.
Zaczynamy. export ZMIENNA=wartosc zapisze do zmiennej wartość, którą podasz (np.
export VISUAL=mcedit), set wyświetli wartości wszystkich zmiennych, cd
/jakis/katalog przechodzisz do /jakies/katalog, cd .. przechodzisz o jeden katalog w
górę, mc uruchamia Midnight Commander (podobny do Norton Commander), reboot
spowoduje restart systemu, ls wyświetla zawartość katalogu, pwd pokaże bieżący
katalog, passwd pozwoli zmienić hasło, ps ax pokaże aktualnie uruchomione procesy
(programy), ping adres.ip.lub.nazwa_komputera sprawdzi połączenie sieciowe
(spróbuj ping localhost), chmod XYZ nazwa_pliku zmieni prawa do pliku na XYZ,
chown wlasciciel.grupa nazwa_pliku zmieni nazwę właściciela i grupę na podane,
which nazwa_pliku pokaże w jakim katalogu jest plik o nazwie nazwa_pliku, free
pokaże ile wolnego miejsca pozostało w pamięci, df ile miejsca jest na dysku, rm plik
skasuje plik. No i najważniejsz polecenie w linuksie man wyświetlające informacje na
temat polecenia. Na początek wpisz man man
Słowo o prawach do pliku i katalogu. Jeżeli wydasz polecenie ls -al zobaczysz listę plików
z czymś takim na początku: -rwxr-x--- a potem podanego użytkownika i grupę (np. juzec
users). Jest to określenie praw do pliku lub katalogu. Co oznacza? Jeżeli pierwszym
znakiem jest 'd' to jest to katalog, jesli nie to plik (nie do końca dotyczy katalogu /dev/ -
informacja dla czepialskich :P). Następne trzy literki (lub minusy i literki) oznaczają
kolejno czytanie(Read), zapis(Write) i wykonanie(eXecute) lub możliwość wejścia do
katalogu - dla właściciela pliku (juzec). Drugie trzy znaczki oznaczają to samo, tyle że dla
grupy (wszyscy którzy należą do users). Trzecie trzy (jak to fajnie brzmi) znaczki też
oznaczają to samo, tylko dla tych, co nie należą do grupy users i nie są użytkownikiem o
nazwie juzec. Prawa możesz zmienić poleceniem chmod. Właściciela i grupę poleceniem
chown. Zapamiętaj to - jest to jedna z najważniejszych rzeczy w linuksie i podstawa do
dalszych działań.
Konfigurujemy sieć
W różnych dytrybucjach sa różne narzędzia ułatwiające konfigurację sieci. W Suse jest
YasT, w RedHat jest linuxconf, w Slackware znajdziesz netconfig. Idea jest wszędzie taka
sama. Przy konfiguracji sieci musisz podać nazwę swojego komputera, domenę w której
jest (zazwyczaj bez wiodącej kropki), adres ip komputera, adres ip bramki i nazwy
serwerów nazw (nameserver). Ja w domku mam np. tak - komputer nazywa się c300,
domena dom (czyli całość to c300.dom), adres komputera to 192.168.1.2, adres bramki
to 192.168.1.1, nameserver to 194.204.159.1. Do czego to wszystko służy? Jeżeli nie
ustawisz tych parametrów to Twój komputer nazywa się localhost ma adres 127.0.0.1.
Nie ma ustawionych innych parametrów. Nazwa komputera służy do tego, byś mógł
odwoływać się do swojego komputera jednoznacznie. Wynika z tego, że jeżeli bez
ustawiania nazwy komputera nazywa się on localhost, to każdy 'nowy' komputer nazywa
się localhost. W takiej sytuacji nie będziesz mógł odwołać się do innego komputera, bo on
też nazywał się będzie localhost. Dlatego podajesz mu swoją nazwę. Dokładnie tak samo
jest z adresem ip. Każdy localhost ma adres 127.0.0.1. Oczywiście możesz w pełni z tego
korzystać i polecenia typu ping localhost będa spokojnie działały.
Adres bramki jest też ważnym adresem. Jest to adres ip komputera, przez który będziesz
miał wyjście na świat, czyli do internetu. Jeżeli masz tylko jeden komputer, to pole to
(czy wpis w /etc/rc.d/) zostaw puste. Jeżeli któryś komputer będzie Twoim
gateway'em(gejtłejem, czyli bramką) to ustaw jego adres. W zależności od tego, czy
będziesz używał internetu czy też nie zależy konfiguracja tzw. nameserverów, czyli
serwerów nazw (DNS). Serwer nazw to taki komputer, który po przesłaniu do niego
informacji o adresie typu www.onet.pl odda nam jego adres ip. Jest jescze tzw. RevDNS -
komputer, który robi dokładnie odwrotne rzeczy, ale on nas nie interesuje. Adresy
serwerów nazw znajdziesz np. na stronie TPSA. Dla przykładu dam Ci jeden -
194.204.159.1.
Jeżeli poustawiałeś już to wszystko, to pozostało Ci jeszcze zajrzenie do /etc/hosts - tam
masz wpisane komputery wraz z ich adresami ip (ze swojej sieci). W pliku /etc/host.conf
powinieneś mieć linię 'order hosts, bind'. Określa ona sposób wyszukiwania komputerów
w sieci. Wpisy te powodują, że jeżeli napiszesz np. 'ping komputerek', to komputer zajrzy
najpierw do pliku /etc/host.conf, tam dowie się, że najpierw ma sprawdzić czy
'komputerek' i jego adres jest w /etc/hosts, a dopiero później ma zapytać o 'komputerek'
serwer nazw wpisany do /etc/resolv.conf. Tu jeszcze jedna uwaga - w /etc/resolv.conf
możesz mieć jako pierwszą linię coś w stylu 'search moja.domena.pl' - powoduje to, że
zanim komputer odpyta dns o adres 'komputerka', to poszuka go wśród komputerów w
domenie 'moja.domena.pl'. Ten wpis często jest przyczyną niby powolnego logowania do
komputerów (jak również przyczyną może być brak wpisów w /etc/hosts).
Teraz masz w zasadzie skonfigurowaną sieć i możesz łączyć się z innymi komputerami w
Twojej sieci lub z internetem.
Polska na konsoli
Logując się na konsoli pewnie zauwazyłeś, że nie masz polskich literek. Do poprawnego
spolonizowania linuksa potrzebujesz wiedzieć, gdzie to wszystko się ustawia i w jaki
sposób. Na początek zajrzyjmy do pliku /etc/profile. Znajdź tam linię wyglądającą tak
'export LC_ALL=POSIX' lub podobnie. To właśnie zmienna środowiskowa LC_ALL
(ustawiająca inne zmienne LC_*) odpowiedzialna jest za to, jak system rozpozna Twój
kraj. Ustaw tę zmienną na 'export LC_ALL=pl_PL' i dopisz następną w nastepnej linii
'export LANG=pl_PL'. Możesz jeszcze ustawić zmienną LINGUAS, ale nie pamiętam do
czego ona była potrzebna - jakis program bez niej nie chciał poprawnie rozpoznać
polskiego komputera ;-). Gdy już to zrobisz, zapisz plik, wyloguj się i zaloguj ponownie.
Wydaj polecenie 'locale'. Zobaczysz na ekranie wszystkie zmienne LC ustawione na pl_PL.
To dobrze. Spróbuj wpisać np. 'du --help'. Powinieneś zobaczyć polski opis programu.
Teraz użytkownicy
Pewnie pamiętasz, że poprzednio mówiliśmy o tym, byś nie pracował na koncie roota,
tylko na swoim, użytkownika. W ten sposób unikniesz niektórych zdarzeń (np.
przypadkowego wykasowania jakiegoś ważnego programu). Ale jak tego użytkownika
zrobić? Ano w róznych dystrybucjach różnie, ale generalnie do operacji na użytkownikach
służą skalpel, tfu, useradd, userdel i usermod. W RedHat możesz użytkowników dodać
linuxconf, w Slackware adduser. Ogólnie jednak 'useradd nazwa' i masz już użytkownika.
Potem 'passwd user' i zmieniasz hasło dla usera. Możesz też zmieniać parametry takie jak
grupa, dodatkowa grupa czy hasło od razu z linii poleceń. Usunąć użytkownika możesz
używając 'userdel user', a zmodyfikować poleceniem 'usermod'. Każde z tych poleceń
podane z parametrem --help (np. usermod --help) podpowie Ci, co możesz nim wykonać.
A jeśli masz ustawione lokale (LC_ALL=pl_PL) to podpowie Ci po polsku!
Linux
DOS
Opis
ls
dir
Listowanie zawartości katalogów
rm
del
Kasowanie plików
mkdir
mkdir
Tworzenie katalogów
rmdir
rmdir
Kasowanie --||--
mv
move
Zmiana nazwy lub przenoszenie pliku
cp
copy
Kopiowanie plików
ln
X
Tworzenie dowiązań
chmod
attrib
Zmiana atrybutów pliku
cfdisk
fdisk
Partycjonowanie
mkfs
format Tworzenie systemu plików
defrag
defrag Defragmentator
fsck
scandis
k
Testowanie systemu plików
fdformat
X
Niskopoziomowyformat dyskietki
mknod
X
Tworzenie specjalnego inode'a (pliku-urządzenialub kolejki fifo)
ln
X
Tworzenie powiązań (wskazań na plik)
cat
type
Wyświelanie zawartości pliku
grep
X
Wyszukiwanie ciągów znaków
less
X
Pager - podglądarka plików tekstowych
mount
X
Montowanie systemu plików
umount
X
Odmontowanie systemu plików
chown
X
Zmiana właściciela pliku
df
X
Wolne miejsce na dysku
find
X
Szukanie plików
whereis
X
Szukanie programów
Polecenia systemowe
Linux
DOS
Opis
bash
comma
nd
Interpreter poleceń
date
date
Zmiana daty
dpkg
X
Zarządzanie pakietami w systemie Debian
rpm
X
Zarządzanie pakietami w systemie Red Hat
su
X
Chwilowa zmiana usera
logout
X
Wylogowanie
insmod
X
Instalowanie modułu jądra
rmmod
X
Usuwanie modułu
lsmod
X
Listowanie aktywnych modułów
depmod
X
Obsługuje zależności modułów
modinfo
X
Informacje o modułach
modprobe
X
Instalowanie modułu z potrzebnymi opcjami imodułami
shutdown
X
Zamknięcie systemu / reboot
lilo
fdisk
-mbr
Instalacja bootloadera
swapon/swa
poff
X
Sterowanie partycjami wymiany
useradd
X
Dodawanie użytkowników
groupadd
X
Dodawanie grup
userdel
X
Usuwanie użytkowników
groupdel
X
Usuwanie grup
usermod
X
Modyfikowanie danych użytkowników
groupmod
X
Modyfikowanie danych grup
passwd
X
Zmiana hasła
Sterowanie siecią
Linux
DOS
Opis
ifconfig
X
Konfigurowanie połączenia sieciowego
ifup
X
Uruchamianie interfejsu sieciowego
ifdown
X
Zatrzymywanie interfejsu sieciowego
netstat
X
Statystyki połączenia
ipchains
X
Przekazywanie pakietów / firewall
route
X
Kontrola trasowania
Zarządzanie procesami
Linux
DOS
Opis
top
X
Listuje procesy o największym obciążeniu procesora i wyświetla ich
statystyki w czasie rzeczywistym. Pozwala na monitorowanie
określonych procesów.
ps
X
Listuje aktywne procesy
fg
X
Ustawienie procesu na front
bg
X
Przeniesienie procesu w tło
pidof
X
Wyświetlenie numeru wybranego procesu
jobs
X
Listuje aktywne programy
kill
X
Wysyła sygnał do procesu
Pomoc
Linux
DOS
Opis
man
X
Manual systemowy
info
X
Podręcznik GNU
apropos
X
Szukanie polecenia o określonym zastosowaniu
Resztę potrzebnych informacji można znaleźć w MANie (man polecenie). Oprócz tego
istnieje ciekawa książka w ofercie E-Link, opisująca dokładnie polecenia Linuxa.
Aby wyświetlić listę wszystkich użytkowników wydaj polecenie:
more /etc/passwd
do przeglądania listy wykorzystaj klawisze omówione przy komendzie man
kolejne wiersze to rekordy zawierające dane użytkowników, oddzielone dwukropkiem pola
oznaczają:
•
nazwa użytkownika
•
zakodowane hasło
•
identyfikator użytkownika (uid)
•
identyfikator grupy (gid)
•
komentarz, dowolna informacja o użytkowniku np. pełne imię i nazwisko
•
nazwa katalogu domowego
•
nazwa shella instalowanego podczas logowania się użytkownika
Aby wyświetlić listę wszystkich grup zdefiniowanych w systemie wydaj polecenie:
more /etc/group
kolejne wiersze to rekordy zawierające dane grup, oddzielone dwukropkiem pola
oznaczają:
•
nazwa grupy
•
hasło grupy (niewykorzystywane)
•
identyfikator grupy (gid)
•
lista użytkowników należących do tej grupy
Środowisko użytkownika i shella tworzą pliki, które są przetwarzane podczas otwierania i
zamykania sesji Unixa. Kolejność wczytywania plików konfiguracyjnych w poszczególnych
shellach przedstawia poniższa tabelka:
Lp
Bourn
Korn
Bash
C
1
/etc/profile
/etc/profile
/etc/profile
/etc/csh.login
2
$HOME/.profile
$HOME/.profile
$HOME/.bash_profile lub
$HOME/.bach_login lub
$HOME/.profile
$HOME/.cshrc
3
$HOME/.kshrc
$HOME/.login
W shellu Korna najpierw wykonywane są polecenia z pliku /etc/profile. Definiowany jest
przez administratora systemu i jego zadaniem jest ustanowienie ogólnego środowiska dla
wszystkich użytkowników. Te domyślne ustawienia można zmienić lub rozszerzyć za
pomocą poleceń umieszczonych w pliku .profile, który znajduje się w katalogu domowym
każdego użytkownika. Plik ten jest doskonałym miejscem do umieszczania zmiennych
globalnych, własnych aliasów lub skryptów startowych. Jego przeznaczeniem jest
ustalenie indywidualnego środowiska pracy dla każdego użytkownika. Najczęściej
użytkownik określa w nim swoją ścieżkę dostępu do plików wykonawczych (PATH), ustala
maskę praw dostępu (umask), wygląd znaku zgłoszenia shella (PS1), edytor linii komend
(EDITOR).
W zmiennej ENV można zdefiniować nazwę dodatkowego pliku, który jest wykonywany
zarówno podczas otwierania sesji, jak i podczas uruchamiania nowego shella poleceniem
ksh. Powszechnie używana nazwa tego pliku to .kshrc.
cat - łączenie i wyświetlanie zawartości plików
cat plik(i) -wyświetla zawartość wybranego pliku
cat plik(i)>plik_nowy - łączy zawartość wybranych plików w nowy_plik
wybrane opcje:
-n - numerowanie wszystkich wyświetlanych wierszy
-nb - numerowanie wyłącznie niepustych wierszy
-v wyświetlanie znaków kontrolnych jako znaków drukowanych
cd - zmiana bieżącego katalogu
cd katalog - przejście do wyszczególnionego katalogu
cd / - przejście do katalogu głównego
cd .. - przejście do katalogu nadrzędnego (wyjście z katalogu)
cd - przejście do katalogu domowego
chmod - zmiana prawa dostępu do plików i katalogów
chmod prawa plik(i) lub katalog(i) - ustala nowe prawa dostępu do wybranego pliku
lub katalogu
prawa dostępu określa się numerycznie:
odczyt (read) =4 + zapis (write) =2 + wykonanie (execute) =1
mnożąc dla poszczególnych użytkowników:
właściciel (owner) *100 + grupa właściciela (group) *10 + pozostali * 1
np. prawa wszystkie dla właściciela, odczyt i wykonanie dla grupy, nic dla pozostałych =>
100 * (4+2+1) + 10 * (4+1) + 1* (0) = 750
chmod komu jakie prawa plik lub katalog
prawa dostępu określa się symbolicznie:
komu:
u -właściciel (user), g -grupa (group), o -pozostali (other) , a -wszyscy (all)
operacja:
+ dodanie, - zabranie, = ustalenie
prawa:
r -odczyt (read), w -zapis (write), x -wykonanie (execute)
chown - zmiana właściciela pliku
chown nowy_właściciel plik(i) lub katalog(i) - ustalenie nowego właściciela dla
wybranych plików lub katalogów
find - poszukiwanie plików według zadanych kryteriów
find katalog kryteria akcja - wyszukuje z podanego katalogu pliki odpowiadające
podanym kryteriom i wykonuje na nich określoną akcję (komendę)
wybrane kryteria:
-name -wyszukuje pliki o podanej nazwie,
-perm -wyszukuje pliki o podanych prawach dostępu,
-type - wyszukuje danych określonego typu: f - plik; d - katalog; l - link,
-links - wyszukuje pliki o podanej liczbie linków,
-size - wyszukuje pliki o podanej wielkości będącej wielokrotnością bloku 512 bajtowego
lub określonej ilością znaków (parametr c),
-user - wyszukuje pliki, których właścicielem jest podany użytkownik,
-group - wyszukuje pliki użytkowników należących do podanej grupy,
-atime - wyszukuje pliki, dla których czas dostępu jest późniejszy niż podany,
-mtime - wyszukuje pliki, dla których czas modyfikacji jest późniejszy niż podany,
kryteria mogą być łączone przy pomocy następujących znaków:
spacja - koniunkcja (i)
-o - alternatywa (lub)
! - negacja (nie)
wybrane akcje:
-print - wydruk wyszukanych plików na ekranie, powinna występować jako ostatnia,
można opuścić gdyż jest przyjmowana jako standardowa
-exec polecenie {} \; - wykonanie podanego polecenia shella dla każdego
wyszukanego pliku; polecenie musi być zakończone znakami nawiasów sześciennych,
pomiędzy które wstawiane są znalezione obiekty oraz cytowanym znakiem średnika
(spacja\;)
-ok polecenie {} \; - podobnie jak -exec, ale wykonanie polecenia jest poprzedzone
pytaniem o potwierdzenie jego realizacji, końcówka jak przy exec.
export - udostępnienie zmiennej we wszystkich procesach powoływanych przez
użytkownika
export - wyświetlenie wszystkich zmiennych globalnych
export zmienna - przesłanie wyszczególnionej zmiennej do procesów podrzędnych czyli
zadeklarowanie jej jako zmienna globalna widoczna w otoczeniu
jobs - wyświetla listę zadań pracujących w tle
komenda jobs wyświetla następujące informacje:
•
[numer procesu pracującego w tle] - kolejne liczby począwszy od 1;
•
stan procesu: Running (praca), Stopped (wstrzymane Ctrl+Z), Done (proces
zakończony)
•
wykonywane w tle polecenie
kill - zakończenie wykonania procesu
kill PID - kończy proces o podanym identyfikatorze
kill -9 PID - bezwarunkowo przerywa proces o podanym identyfikatorze
komenda stosowana do przerywania procesów drugoplanowych, rezydentnych
(demonów), procesów uruchomionych z innego terminala. Identyfikator procesu należy
odczytać komendą ps
let - wykonanie obliczenia arytmetycznego
let wyrażenie_arytmetyczne - wyliczenie wartości wyrażenia arytmetycznego
w skryptach komendę let zastępuje się podwójnymi nawiasami
(( wyrażenie ))
ln - dowiązanie nowej nazwy do istniejącego pliku
ln plik nowa_nazwa - przypisuje nową_nazwę do już istniejącego pliku (dowiązanie
sztywne)
wybrane opcje:
-s - tworzy dowiązanie symboliczne
lp - wydruk plików na drukarce
lp -opcje plik(i) - drukuje wyszczególnione pliki na drukarce domyślnej
wybrane opcje:
-d nazwa_drukarki - wydruk na określonej drukarce
-m - powiadomienie użytkownika o zakończeniu wydruku poprzez pocztę systemową
(mailx)
-w - wyświetlenie informacji o zakończeniu procesu wydruku
-n liczba - określenie liczby kopii
lpstat- wyświetlenie informacji o stanie drukarek podłączonych do systemu
lpstat - wyświetla kolejkę zadań do wydrukowania
wybrane opcje:
-p - wyświetla dostępne drukarki i ich opisy
ls - wyświetla zawartość katalogu
ls katalog -wyświetla zawartość wybranego katalogu
ls plik(i) - wyświetla wybrany plik(i)
wybrane opcje:
-a - wyświetla wszystkie pliki, łącznie z ukrytymi,
-d - wyświetla nazwy katalogów a nie ich zawartość,
-F - wyświetla specjalne oznaczenie za nazwą pliku wykonawczego (*), linku (@) oraz
katalogu (/),
-i - wyświetla numer i-węzła,
-l - wyświetla informacje w formie długiej, obejmującej prawa dostępu, właściciela,
grupę, wielkość pliku, datę i czas ostatniej modyfikacji,
-R - wyświetla również zawartość podkatalogów
mailx - odbieranie, redagowanie i wysyłanie listów elektronicznych
mailx - przeglądanie zawartości skrzynki pocztowej
mailx użytkownik - wysłanie listu do wybranego użytkownika
wybrane opcje:
-s - umożliwia zdefiniowanie tematu wiadomości (subject),
-c użytkownik - wysyła kopie wiadomości do wybranego użytkownika (do wiadomości),
-d użytkownik - wysyła kopie wiadomości do wybranego użytkownika, ale nie
powiadamia o tym podstawowego adresata (tzw. ukryte do wiadomości).
Po uruchomieniu programu pocztowego mailx wyświetlane są informacje o otrzymanych
listach. Kolejne kolumny oznaczają:
•
znak > oznacza aktywną (bieżącą) wiadomość;
•
status listu:
N -nowa wiadomość,
U - nieprzeczytana wiadomość,
R - wiadomość nowa, ale już w tej sesji przeczytana,
O - wiadomość przeczytana wcześniej i zapisana do skrzynki mbox;
•
numer wiadomości;
•
nadawca wiadomości;
•
data otrzymania wiadomości;
•
ilość linii/liter w wiadomości;
•
temat listu;
Pod listą wiadomości widoczny jest znak zachęty ( ? ) umożliwiający wprowadzenie
następujących poleceń:
nr - wyświetla wiadomość o podanym numerze,
h - wyświetla ponownie listę wszystkich wiadomości,
d - kasuje bieżącą wiadomość,
d nr - kasuje wiadomość o numerze nr,
u - cofa kasowanie,
r - umożliwia zredagowanie odpowiedzi na bieżącą wiadomość,
| nr lp - wydruk wiadomości o numerze nr,
q - zapisuje wiadomości i wychodzi z programu pocztowego,
x - wychodzi z programu bez zapisu zmian i bez zamiany statusu N na O,
Aby wysłać list innemu użytkownikowi wprowadzamy nazwę programu, nazwę
użytkownika (np. mailx robert) i zatwierdzamy Enter. Pojawia się napis Subject:
umożliwiający wpisanie tematu wiadomości. Wpisujemy krótki temat i potwierdzając
Enterem przechodzimy do trybu redagowania wiadomości. Po wpisaniu informacji,
kończymy wiadomość przechodząc do nowej linii i wpisując . (kropka) Enter lub Ctrl+D
mkdir - zakłada nowy katalog
mkdir katalog - zakłada katalog o wyszczególnionej nazwie
wybrane opcje:
-p - tworzy wszystkie katalogi pośrednie niezbędne do utworzenia ostatniego z podanych
mkdir -p szkola/klasa
tworzy katalog szkoła a w nim podkatalog klasa
more - przeglądanie zawartości pliku
more plik -wyświetla zawartość wybranego pliku
komenda | more - dzieli na części wielkości ekranu informacje będące wynikiem
działania komendy
wybrane opcje:
-c - wyświetlanie każdej strony od góry
-v -wyświetlanie znaków kontrolnych
+numer wiersza - wyświetlanie pliku od podanego wiersza
+/ciąg - wyświetlanie pliku począwszy od dwóch wierszy poprzedzających ciąg
Polecenie more wyświetla na ekranie zawartość pliku, podobnie jak cat, ale po
zapełnieniu ekranu wyświetlanie jest wstrzymywane, co umożliwia dokładne zapoznanie
się z tekstem.
Gdy wyświetlanie jest wstrzymane na dole ekranu wyświetlany jest napis --MORE--, a
system oczekuje wyboru dalszego działania poprzez naciśnięcie odpowiedniego klawisza:
Enter - przejście do następnej linii
Spacja lub f - przejście do następnej strony
b - przejście do poprzedniej strony
d - przejście o pół strony do przodu
h - lista poleceń (help)
/ciąg - wyszukiwanie tekstu
= - wyświetlenie numeru bieżącej linii
q - koniec przeglądania tekstu
mount - dołączanie systemu plików
mount - wyświetla informacje o dołączonych systemach plików
mount plik_specjalny katalog - podłącza urządzenie zewnętrzne reprezentowane
przez plik_specjalny do wybranego pustego katalogu
wybrane opcje:
-r - udostępnia dołączany system plików tylko do odczytu (read only)
-v - wyświetla informacje o wykonywanym poleceniu
umount - odłączenie systemu plików
umount katalog - odłącza urządzenie zewnętrzne podłączone wcześniej do wybranego
katalogu
wybrane opcje:
-f - odłącza system plików nawet gdy część plików jest używana
nohup - wykonywanie polecenia w tle mimo wylogowania się użytkownika
nohup polecenie & - uruchomienie polecenia drugoplanowego, którego wykonywanie
nie zakończy się po wylogowaniu użytkownika.
Jeżeli nie zostanie określone standardowe wyjście wynik zostanie zapisany w pliku
nohup.out
ps - wyświetlenie informacji o stanie procesów
ps -opcja - wyświetlenie wybranych procesów i informacji o nich zgodnie z opcją
ps - wyświetlenie informacji o procesach uruchomionych z tego terminala
komenda ps wyświetla informacje w następujących kolumnach:
UID -identyfikator użytkownika;
PID -identyfikator procesu (process identification);
PPID -identyfikator procesu nadrzędnego;
STIME -czas uaktywnienia się procesu;
TTY -identyfikator terminala, z którego uruchomiono proces;
TIME -czas wykonywania procesy (zajętości procesora);
COMMAND -nazwa polecenia, który uruchomił proces.
wybrane opcje:
-e - wyświetlenie listy wszystkich procesów
-f - wyświetlenie pełnej informacji o procesach
pwd - wyświetla nazwę bieżącego katalogu
read - wczytanie danych
read zmienne - pobranie informacji z klawiatury i przypisanie ich do zmiennych
read zmienna?zgłoszenie - wyświetlenie na ekranie zgłoszenia i pobranie z klawiatury
danej podstawianej do zmiennej
rm - usuwa pliki i całe katalogi
rm plik(i) - usuwa plik(i) o wyszczególnionej nazwie wybrane
wybrane opcje:
-i - usuwanie plików w trybie interaktywnym (wymaga potwierdzenia kasowania)
-r - usuwanie katalogów łącznie z plikami i podkatalogami
rmdir - usuwa puste katalogi
rmdir katalog - usuwa katalog o wyszczególnionej nazwie
touch - zakłada nowy plik
touch plik(i) - zakłada nowy, pusty plik o podanej nazwie
umask - ustalenie praw dostępu do tworzonych plików i katalogów
umask maska - ustawia nową maskę praw dostępu do nowo tworzonych plików i
katalogów
unalias - usuwa istniejący alias
unalias nazwa_zastępcza - usunięcie istniejącego aliasu o podanej nazwie
unset - usunięcie zmiennych shella ze środowiska
unset zmienna - usuwa niepotrzebną zmienną z shella
until - wykonuje polecenia tak długo, aż nastąpi spełnienie warunku
until warunek
do
lista komend
done
Polecenia z listy komend wykonywane bądą tak długo, aż warunek zostanie spełniony.
vi - uruchamia edytor tekstów Visual Editor
vi plik - edycja pliku
view plik - otwiera plik w trybie tylko do odczytu (przeglądanie zawartości pliku)
vedit plik - wersja przyjaźniejsza edytora vi (wyświetlane opisy)
wall - wysłanie komunikatu do wszystkich użytkowników
wall - przesłanie wprowadzonego komunikatu do wszystkich aktualnie zalogowanych
użytkowników systemu
Podobnie jak przy komendzie write komunikat kończymy klawiszami Ctrl+D
while - wykonuje polecenia tak długo, jak długo spełniony jest warunek
while warunek
do
lista komend
done
Polecenia z listy komend wykonywane będą tak długo, aż warunek przestanie być
spełniony
write - wysłanie komunikatu użytkownikowi
write użytkownik - wysyła komunikat do wybranego użytkownika
write użytkownik terminal - wysyła komunikat do wybranego użytkownika
pracującego na określonym terminalu
Komunikat wysłany jest na terminal odbiorcy po naciśnięciu klawisza Enter. Przesyłanie
informacji kończymy naciskając klawisze Ctrl+D
Każdy plik i katalog w systemie Unix ma ściśle określone prawa dostępu dla swojego
właściciela (user), grupy, do której on należy (group) oraz pozostałych użytkowników
(other). Prawa dostępu określają możliwość odczytu danych (r - read), zapisu (w - write)
oraz wykonania (x - executable). W sumie należy określić 9 parametrów (trzy prawa dla
trzech rodzajów użytkowników). Każdy z użytkowników może mieć dowolną kombinację
praw.
Tabela przedstawia jakie prawa dostępu powinien mieć użytkownik, aby wykonać
określone operacje na plikach i katalogach (+ oznacza, że prawo jest wymagane, -
oznacza, że nie).
Wykonywana czynność
Plik
Katalog
r
w
x
r
w
x
przeglądanie zawartości katalogu
-
-
-
+
-
-
utworzenie nowego pliku w katalogu
-
-
-
-
+
-
zmiana nazwy pliku w katalogu
-
-
-
-
+
-
usunięcie pliku z katalogu
-
-
-
-
+
-
wyświetlenie zawartości pliku
+
-
-
-
-
+
zapis do pliku
-
+
-
-
-
+
uruchomienie pliku
-
-
+
-
-
+
Prawa dostępu do plików i katalogów są ważnym elementem systemu bezpieczeństwa w
Unixie. Właściciel pliku lub katalogu ustala kto i w jakim zakresie może posiadać dostęp
do tworzonych przez niego katalogów i plików. Wyróżniamy trzy poziomy
bezpieczeństwa: to, co może zrobić właściciel, grupa, do której należy właściciel oraz
wszyscy pozostali użytkownicy Komenda ls z parametrem -l wyświetla prawa dostępu w
następującej formie:
Prawa dostępu do plików i katalogów można zmieniać przy użyciu komendy chmod. W
poleceniu tym do określania praw dostępu można wykorzystywać dwa formaty: liczbowy i
symboliczny.
Format liczbowy odpowiada potęgom cyfry 2 przypisanym do prawa odczytu, zapisu i
wykonywania zgodnie ze wzorcem:
prawo wykonania x
=>
2
0
=1
prawo zapisu w
=>
2
1
=2
prawo odczytu r
=>
2
2
=4
W sumie uzyskujemy 8 możliwych kombinacji, które zawarto w tabeli poniżej:
zapis liczbowy
reprezentacja znakowa
opis
0
- - -
brak praw dostępu
1
- - x
tylko wykonywanie
2
- w -
tylko zapis
3
- w x
zapis i wykonywanie
4
r - -
tylko odczyt
5
r - x
odczyt i wykonywanie
6
r w -
odczyt i zapis
7
r w x
wszystkie prawa
(odczyt, zapis i wykonywanie)
Tworząc nowy plik lub katalog przydzielane są mu standardowe prawa dostępu zgodnie z
maska zadeklarowaną komendą umask. Jest to liczba składająca się z trzech cyfr od 0 do
7, które odjęte od wzorca dla plików (666) lub katalogów (777) określają prawa dostępu
do nowo zakładanych obiektów. Standardowo umask posiada wartość 022 co oznacza, że
nowo tworzone pliki i katalogi maja następujące prawa dostępu:
pliki =>
666 - 022 =
644
rw-r--r--
katalogi
=>
777 - 022 =
755
rwxr-xr-x
Znaki specjalne
Niektóre symbole w system Unix mają specjalne znaczenie. Należą do nich:
/ - oznaczenie katalogu głównego (root - korzeń)
. - oznaczenie katalogu bieżącego (w którym aktualnie pracujemy)
.. - oznaczenie katalogu nadrzędnego nad bieżącym
~ - oznaczenie katalogu domowego użytkownika
- - oznacza katalog, który był bieżącym poprzednio
* - zastępuje dowolne znaki w nazwie pliku (oprócz . oznaczającej plik ukryty)
? - zastępuje jeden, dowolny znak
[znaki] - określa jakie znaki mogą wystąpić w określonym miejscu w nazwie pliku
[!znaki] - określa jakie znaki nie mogą wystąpić w nazwie pliku
\ - odbiera znaczenie znakom specjalnym opisanym powyżej
< - przeniesienie standardowego wejścia z klawiatury
> - przeniesienie standardowego wyjścia z ekranu
2> - przeniesienie standardowego wyjścia diagnostycznego z ekranu
>> - dopisanie danych do pliku
alias - definiuje nazwę zastępczą polecenia
alias nazwa_zastępcza="polecenia" - zdefiniowanie nowego aliasu o podanej nazwie,
który wykonuje wymienione polecenia
alias - definiuje nazwę zastępczą polecenia
alias nazwa_zastępcza="polecenia" - zdefiniowanie nowego aliasu o podanej nazwie,
który wykonuje wymienione polecenia
bc - wykonanie dowolnych obliczeń matematycznych na liczbach rzeczywistych
bc - włącza kalkulator podstawowy
quit - kończy pracę kalkulatora
echo "wyrażenie_arytmetyczne" | bc - wylicza wartość podanego wyrażenia
arytmetycznego
wybrane opcje i funkcje:
scale=liczba - ustala dokładność wykonywanych obliczeń w cyfrach po przecinku
ibase=system (2,8,10,16) - ustala system cyfrowy dla danych wejściowych
obase=system - ustala system cyfrowy dla danych wyjściowych
sqrt(wyrażenie) - pierwiastek kwadratowy
length(wyrażenie) - liczba cyfr w wyrażeniu
-l -inicjuje biblioteką matematyczną z dodatkowymi funkcjami:
s(kąt) - sinus kąta podanego w radianach
c(kąt) - cosinus kąta podanego w radianach
e(wyrażenie) - e podniesione do potęgi wyrażenie
l(wyrażenie) - logarytm naturalny z wyrażenia
a(wartość) - arcus tangens wyrażenia
j(n,x) - funkcja Bessela
bg - przeniesienie wstrzymanego zadania pierwszoplanowego do wykonywania na drugim
planie
bg %numer_wstrzymanego_zadania - przenosi wstrzymane zadanie o podanym
numerze do wykonywania w tle
numer wstrzymanego zadania odczytujemy po wydaniu komendy jobs, umieszczony jest
w nawiasach kwadratowych
case - instrukcja wyboru
case wyrażenie in
wzorzec_1| wzorzec_2...)
lista poleceń1;;
:
:
wzorzec_i|wzorzec_j...)
lista poleceń3;;
*)
lista poleceń*;;
esac
Jeżeli wyrażenie pasuje do wzorca_1 lub wzorca_2 lub innych podanych w tej samej linii,
wykonane zostaną polecenia z listy1. Jeżeli wyrażenie nie pasuje do tych wzorców
sprawdzane są następne aż do ostatnich wartości wzorzec_i lub wzorzec_j. Gdy
wyrażenie przyjmie wartość różną od wymienionych wzorców (1,2...i,j) wykonane
zostaną polecenia z listy*.
df - wyświetlenie informacji o podłączonych systemach plików
wyświetlane są kolejno: nazwa katalogu, plik specjalny reprezentujący urządzenie,
zajmowana przestrzeń na dysku w blokach po 512 B, ilość założonych plików i katalogów.
wybrane opcje:
-k - podaje informacje o systemach plików z ich wolną przestrzenią
wyświetlane są kolejno: nazwa systemu plików, przeznaczony na ten system obszar
dysku, zajęty obszar dysku, wolny obszar dysku, zajęty obszar dysku w procentach,
nazwa katalogu, do którego ten system plików jest podłączony.
-b - podaje wyłącznie wolne miejsce w dołączonych urządzeniach
-e - podaje wyłącznie ilość wolnych i-węzłów
exit - zakończenie pracy shella
exit - zamyka aktywny shell (w przypadku uruchomienia tylko jednej powłoki komenda
ta kończy pracę w systemie Unix)
export - udostępnienie zmiennej we wszystkich procesach powoływanych przez
użytkownika
export - wyświetlenie wszystkich zmiennych globalnych
export zmienna - przesłanie wyszczególnionej zmiennej do procesów podrzędnych czyli
zadeklarowanie jej jako zmienna globalna widoczna w otoczeniu
expr - wykonanie obliczeń na liczbach całkowitych
expr wyrażenie_arytmetyczne - wyliczenie wartości podanego wyrażenia
arytmetycznego
operacje matematyczne stosowane w wyrażeniach:
+ dodawanie
- odejmowanie
* mnożenie
/ dzielenie całkowitoliczbowe
% reszta z dzielenia
uwaga: przed i po znaku operacji matematycznej należy umieścić spacje !!!
find - poszukiwanie plików według zadanych kryteriów
find katalog kryteria akcja - wyszukuje z podanego katalogu pliki odpowiadające
podanym kryteriom i wykonuje na nich określoną akcję (komendę)
wybrane kryteria:
-name -wyszukuje pliki o podanej nazwie,
-perm -wyszukuje pliki o podanych prawach dostępu,
-type - wyszukuje danych określonego typu: f - plik; d - katalog; l - link,
-links - wyszukuje pliki o podanej liczbie linków,
-size - wyszukuje pliki o podanej wielkości będącej wielokrotnością bloku 512 bajtowego
lub określonej ilością znaków (parametr c),
-user - wyszukuje pliki, których właścicielem jest podany użytkownik,
-group - wyszukuje pliki użytkowników należących do podanej grupy,
-atime - wyszukuje pliki, dla których czas dostępu jest późniejszy niż podany,
-mtime - wyszukuje pliki, dla których czas modyfikacji jest późniejszy niż podany,
kryteria mogą być łączone przy pomocy następujących znaków:
spacja - koniunkcja (i)
-o - alternatywa (lub)
! - negacja (nie)
wybrane akcje:
-print - wydruk wyszukanych plików na ekranie, powinna występować jako ostatnia,
można opuścić gdyż jest przyjmowana jako standardowa
-exec polecenie {} \; - wykonanie podanego polecenia shella dla każdego
wyszukanego pliku; polecenie musi być zakończone znakami nawiasów sześciennych,
pomiędzy które wstawiane są znalezione obiekty oraz cytowanym znakiem średnika
(spacja\;)
-ok polecenie {} \; - podobnie jak -exec, ale wykonanie polecenia jest poprzedzone
pytaniem o potwierdzenie jego realizacji, końcówka jak przy exec.
fg- przeniesienie zadania drugoplanowego do wykonywania na pierwszym planie
fg %numer_zadania_drugoplanowego - przenosi zadanie drugoplanowe o podanym
numerze do wykonywania na pierwszym planie
numer zadania drugoplanowego odczytujemy po wydaniu komendy jobs, umieszczony
jest w nawiasach kwadratowych
for - wykonuje polecenia w pętli, po jednym razie dla każdej wymienionej wartości
for zmienna in wartość1 wartość2 ....
do
lista komend
done
Polecenia z listy komend wykonywane są tylokrotnie, ile jest wartości na liście.
head - wyświetlanie początku pliku
head plik - wyświetlenie początkowych 10 linii z pliku
wybrane opcje:
-n - wyświetlenie n pierwszych linii tekstu
history - wyświetla zawartość pliku historii wydanych poleceń
history - wyświetlenie listy ostatnio wydanych poleceń
Wydawane przez użytkownika polecenia zapisywane są w pliku .sh_history w katalogu
domowym. Można obejrzeć je komendą more .sh_history.
if - instrukcja warunkowa
if warunek_1
then
lista_poleceń_1
elif warunek 2
then
lista_poleceń_2
else
lista_poleceń_3
fi
Jeżeli warunek_1 jest prawdą wykonywane są polecenia z listy_1, jeżeli jest fałszem
sprawdzany jest warunek_2. Jeżeli jest on prawdą wykonywane są polecenia z listy_2,
jeżeli jest fałszem wykonywane są polecenia z listy_3. Części elif i else są opcjonalne i nie
muszą występować w poleceniu.
jobs - wyświetla listę zadań pracujących w tle
komenda jobs wyświetla następujące informacje:
•
[numer procesu pracującego w tle] - kolejne liczby począwszy od 1;
•
stan procesu: Running (praca), Stopped (wstrzymane Ctrl+Z), Done (proces
zakończony)
•
wykonywane w tle polecenie
Aby wyświetlić listę wszystkich użytkowników wydaj polecenie:
more /etc/passwd
do przeglądania listy wykorzystaj klawisze omówione przy komendzie man
kolejne wiersze to rekordy zawierające dane użytkowników, oddzielone dwukropkiem pola
oznaczają:
•
nazwa użytkownika
•
zakodowane hasło
•
identyfikator użytkownika (uid)
•
identyfikator grupy (gid)
•
komentarz, dowolna informacja o użytkowniku np. pełne imię i nazwisko
•
nazwa katalogu domowego
•
nazwa shella instalowanego podczas logowania się użytkownika
Aby wyświetlić listę wszystkich grup zdefiniowanych w systemie wydaj polecenie:
more /etc/group
kolejne wiersze to rekordy zawierające dane grup, oddzielone dwukropkiem pola
oznaczają:
•
nazwa grupy
•
hasło grupy (niewykorzystywane)
•
identyfikator grupy (gid)
•
lista użytkowników należących do tej grupy
cp - kopiuj pliki i katalogi
cp [opcja]... źródło przeznaczenie
cp [opcja]... źródło... katalog_docelowy
Istnieją trzy główne typy zmiennych shella:
zmienne środowiska
zmienne programowe
(użytkownika)
Zmienne specjalne
Ich wartości przypisywane są w trakcie uruchamiania shella i dostarczają użytkownikowi
informacji o procesie powłoki. Zmienne te są własnością shella i nie można ich zmieniać.
Najczęściej wykorzystuje się je w programach shellowych do kontrolowania wykonania
skryptu.
Zmienna Modyfikacja ?
Opis
$#
NIE
Liczba argumentów skryptu
$0
NIE
Nazwa skryptu
$1,
$2...$9
TAK
Kolejne argumenty skryptu
$*
NIE
Wszystkie argumenty jako jeden ciąg "$1 $2 ... $9"
$@
NIE
Wszystkie argumenty jako oddzielne ciągi "$1" "$2"
...
$-
NIE
Opcje shella z polecenia set
$?
NIE
Kod powrotu ostatniego polecenia
$$
NIE
Numer procesu bieżącego shella
$!
NIE
Numer procesu ostatniego zadania wsadowego
Zmienne środowiska
Zmienne środowiska wykorzystywane są przez shell do przekazywania danych
pomocniczych wykorzystywanych do nadzorowania sesji shella. Użytkownik ma pełen
dostęp do tych zmiennych i może je modyfikować za pomocą zwykłej instrukcji
przypisania zmienna=wartość. Część zmiennych środowiska nie ma przypisanych
wartości i musi to zrobić użytkownik.
Zmienna
Opis
CDPATH
Ścieżka poszukiwań dla polecenia cd
HOME
Katalog domowy użytkownika
Nazwa pliku pocztowego użytkownika
PATH
Ścieżka poszukiwań katalogów z poleceniami
PS1
Znak gotowości shella (standardowo $ dla wszystkich i # dla
roota)
PS2
Pomocniczy znak gotowości shella
HISTFILE
Nazwa pliku z historią poleceń
HISTSIZE
Liczba pamiętanych poleceń
IFS
Wewnętrzny separator pól dzielący polecenie na części składowe
PWD
Bieżący katalog
EDITOR
Edytor wykorzystywany do edycji wiersza poleceń
MAILCHECK
Czas w sekundach sprawdzania nowo nadesłanej poczty
TMOUT
Czas nieaktywności, po którym shell zakończy sesję (sekundy)
LOGNAME
Nazwa logowania użytkownika
TERM
Tryb pracy terminala
TZ
Symbol strefy czasowej
Zmienne programowe (użytkownika)
Shell umożliwia definiowanie własnych zmiennych użytkownikowi, których zadaniem jest
przechowywania wartości potrzebnych podczas przetwarzania skryptu. Nazwy zmiennych
mogą być dowolne ale muszą rozpoczynać się literą lub znakiem podkreślenia "_". W
nazwie zmiennej mogą występować dowolne znaki "_ a-z A-Z 0-9". Shell rozróżnia
wielkość liter.
Zmiennej można przypisać wartość wielokrotnie i wielokrotnie można się do niej
odwoływać. Należy zwrócić uwagę, że przypisując zmiennej wartość za pomocą operatora
"=" nie można stosować spacji pomiędzy znakiem = a nazwą zmiennej oraz jej wartością.
Quota podaje udziały dla wszystkich systemów plików
ujętych w /etc/fstab. W przypadku systemów plików zamon
towanych jako NFS do uzyskania informacji wykonywane jest
wywołanie rpc.rquotad na maszynie serwera. Jeżeli quota
kończy pracę z niezerowym kodem, to co najmniej jeden sys
tem plików ma przekroczone udziały.
Pliki
quota.user położony na głównym systemie plików, opisujący
udziały dyskowe użytkowników
quota.group położony na głównym systemie plików, opisujący
udziały grup
/etc/fstab do odnalezienia nazw i lokalizacji systemów