Jeżeli pragniesz poznać Linuksa Mandrake (obecnie Mandriva), to... dobrze trafiłeś. Witryna została zauważona przez twórców magazynu KOMPUTER ŚWIAT 5/2004(141) str. 46 poprzez umieszczenie linku oraz magazynu CHIP 4/2004 (str.114) poprzez umieszczenie artykułu opisującego ten serwis internetowy. Jak na hobbystyczną stronę o Linuksie to miłe ;) Acha... na stronie mandrakelinux.pl/informacje podano też link z opisem cytuję "duży zbiór praktycznych informacji o Mandrake" (mam ją w swoim archiwum - klub.chip.pl/twarogal).
Zapraszam do zadawania pytań na FORUM oraz mailem. Chętnie udzielę (bezpłatnie) odpowiedzi. Oficjalne ceny za jedną poradę na stronie MandrakeSoftPL (mam ją w moim archiwum z dnia 2.05.2004) wahają się od 20 do 350 zł.
http://linuxcommand.org Anglojęzyczna strona, która w
przystępny sposób wprowadza w składnię poleceń shella oraz
przedstawia wiele ciekawych (i prostych) skryptów. Autor udostępnia witrynę w wersji off-line (w paczce tar).
Lista poleceń shella sh w pliku txt (niestety,
nie pamiętam adresu domowego pliku).
Lista poleceń shella z krótkimi objaśnieniami (mam kopię w swoim archiwum)
Shell, zwany inaczej powłoką, to program, który odbiera polecenia tekstowe, a następnie zamienia je na ciąg znaków rozumianych przez Kernel (jądro systemu).
Ponieważ możesz mieć kłopoty z edycją plików za
pomocą tradycyjnych unixowych edytorków, proponuję zainstalowanie
programu MC. Jest bardzo podobny do Norton Commandera i
powinien wystarczyć w początkowym etapie nauki. Uruchamiamy go
zleceniem mc lub sam edytor mcedit nazwapliku . Zapisujemy klawiszem F2,
edytujemy F4, kopiujemy pliki i katalogi F5,
przesuwamy pliki i katalogi F6, kończymy pracę F10,
kasujemy pliki i katalogi F8. Podczas edycji można uruchomić
menu wyboru klawiszami ALT (prawy) o (mała literka o)
- pojawi się np. menu szukania i zamieniania tekstu. Więcej o
programie MC znajdziesz tutaj.
*
Mając uruchomione okienka (np. KDE) czasami
będziesz musiał wpisać zlecenie tekstowe. Jeżeli nie znajdziesz
ikonki o wyglądzie czarnego monitorka, to po prostu wciśnij
klawisze CTRL F2 lub ALT F2 i wpisz zlecenie xterm lub konsole (w systemie możesz mieć różne programy emulujące powłokę tekstową pod okienkami - najpopularniejsze to: xterm i konsole).
*
Pseudo-terminale czyli konsole, uaktywniamy wciskając
ALT F1 do ALT F7 (zobacz
też CTRL ALT F1 do F7). Konsola nr 7 uzyskana klawiszami CTRL ALT
F7 jest uprawniona do utworzenia sesji okienek. Oczywiście
jeżeli uruchomisz drugą sesję okienek, to zajmie ona konsolę nr 8.
Jak tworzyć kilka sesji okienkowych na jednym Linuksie opisałem tutaj.
Pamiętaj, że konsola tekstowa nr 1 jest miejscem uruchomienia sesji
okienkowej, ale sama sesja okienkowa zajmuje konsolę 7 (uwaga: konsola nr 1 jest wówczas zajęta i nie można do niej wpisywać poleceń).
Sposoby uzyskania powłoki tekstowej.
Najprostszym sposobem uzyskiwania powłoki tekstowej
jest pod KDE kliknięcie w ikonkę czarnego monitora. Pojawi się
okienko z powłoką tekstową, czyli program xterm lub konsole. Niestety,
jest to tzw. emulator powłoki i niektóre polecenia shellowe
mogą nieprawidłowo działać. Pewność uzyskasz jedynie
po wykonaniu poniższych punktów.
Powłokę tekstową uzyskasz po wciśnięciu klawiszy
CTRL ALT F1 (F2, F3 itd. do F6, uwaga: CTRL ALT F7 jest
domyślnie zarezerwowane dla okienek). W ten sposób możesz uruchomić
jednocześnie kilka powłok np. dla roota, użytkownika itp. (idealne
do testowania zmian konfiguracji). Musisz pamiętać, że samo
zmienienie aktywnej powłoki nie zamyka poprzedniej.
Jako root wyedytuj plik /etc/inittab
(zleceniem mcedit /etc/inittab) i zmień w
wierszu id:5:initdefault: wartość 5
czyli "okienka", na 3 czyli "tekst z funkcjami sieciowymi".
Od teraz, po każdym restarcie - system zatrzyma ładowanie na
powłoce tekstowej. Aby w takich okolicznościach uruchomić domyślną
wersję okienek (KDE, GNOME itp.) wystarczy (po zalogowaniu) wydać
komendę startx. Więcej o startowaniu okienek
znajdziesz tutaj.
Jeżeli chcesz włączyć okienka wpisz zlecenie /sbin/telinit 5 lub telinit 5.
Zlecenie runlevel
wyświetli aktualny poziom startowy.
Sposoby logowania i wylogowania.
Możemy logować się po wydaniu polecenia login i podaniu nazwy użytkownika, a następnie
hasła.
Ponieważ z przyczyn bezpieczeństwa system może
czasami nie zezwolić na logowanie użytkownika root, należy
po zalogowaniu się pod zwykłym użytkownikiem, wydać polecenie su i podać hasło roota. Komenda su potrafi uaktywnić konto każdego użytkownika, byle
znać jego hasło. Szerzej opisałem ten problem na stronie o msec.
Wylogowanie, czyli zwolnienie danej powłoki
dokonujemy poleceniem logout lub exit . Uwaga: należy pamiętać o obowiązku wylogowania
się na koniec prac, gdyż samo wybranie kolejnej powłoki nie zamyka
poprzednio uaktywnionych. Zwróć szczególną uwagę na powłokę roota.
Jeżeli jesteś gapowaty to restartuj od czasu do czasu komputer.
Sposoby przemieszczania po katalogach.
Przemieszczanie się po strukturze katalogów nie
zawsze jest dozwolone każdemu użytkownikowi. Ze względów
bezpieczeństwa jest to słuszne, gdyż zabezpiecza kluczowe pliki
przed odczytaniem, modyfikowaniem, czy skasowaniem. Dlatego zaloguj
się jako root i działaj:
cd .. [czyli: cd spacja ..] to tak jak cd..
w DOSie, czyli cofam się o jeden poziom w górę.
cd / [czyli: cd spacja /] to tak jak cd \
w DOSie, czyli cofam się na najwyższy katalog.
Sposoby kończenia pracy systemu.
Wciśnij klawisze CTRL ALT BACKSPACE aby zabić okienka i szybko wciśnij klawisze CTRL ALT DELETE by restartować komputer.
Na zakończenie prac należy wydać komendę halt.
Na zakończenie prac można też wydać komendę poweroff
Aby restartować system wpisz reboot.
Aby zamknąć lub restartować system z zaawansowanymi opcjami
wybierz shutdown
shutdown -h 15 (czyli wyłączenie systemu po
15 sekundach) shutdown -r now (czyli restart systemu
TERAZ)
I na tym bym mógł skończyć, gdyby nie
zabezpieczenia systemu, które w zależności od opcji zabraniają
zwykłemu użytkownikowi wyłączania systemu. Czasami będziesz więc
zmuszony wklepać su, podać hasło roota i
dopiero halt . Po głębszej analizie uznasz sam,
że to dobry, choć sprawiający nieco kłopotów pomysł.
Różne informacje do zapamiętania na początku
nauki.
Plik tekstowy można edytować na wiele sposobów. Najprostszym
edytorkiem jest program mc (lub mcedit). Przydaje się
zlecenie less nazwapliku lub do
śledzenia na bieżąco zmian w pliku np. messages zlecenie: tail -f /var/log/messages
./plik (czyli kropka, ukośnik,
nazwa pliku - bez spacji) uruchomienie pliku wykonywalnego.
Stosowane często podczas instalacji ./install . Więcej o uruchamianiu plików wykonywalnych na sąsiedniej stronie.
CTRL Z lub CTRL C (skrót klawiszowy) - zatrzymanie
(lub zabicie) wydanego ostatnio polecenia. Więcej na ten temat na stronie o procesach i zadaniach.
Czasami wykonasz jakieś polecenie i będziesz chciał wyniki
zapisać do pliku txt. Zamiast mozolnie spisywać z monitora literkę
po literce, daj prosty znaczek > .
Jest to tzw. przekierowanie strumienia. Przykład zlecenia: ls -la >/home/antek/Desktop/raport.txt
Wylistujsz zawartość aktualnego katalogu [ls
-la] i na Desktopie użytkownika antek utworzysz za
pomocą znaczka > plik raport.txt z listą plików i katalogów. Jeżeli chcesz
DOPISAĆ wyniki do już ISTNIEJĄCEGO pliku daj dwa znaczki >> .
Zamiast operatora > możesz użyć 1> (przyjmowane domyślnie, więc nie
ma sensu tak wpisywać). Uwaga: jeśli przekierowanie na standardowe wyjście nie zadziała, wypróbuj przekierowanie na standardowe wyjście błędu
za pomocą operatora 2> /dev/null w połączeniu ze zleceniem tee.
Zlecenie tee umożliwia drukowanie danych zarówno na standardowe wyjście jak i do pliku.
Znaczek | uruchamia potok (połączenie kilku zleceń). Przykład zlecenia:
info groupadd2> /dev/null | teeinformacje.txt
Podobnie jak w Windows, DOS tak i w Linuksie mamy
możliwość użycia masek nazw podczas wpisywania szukanych nazw
plików oraz katalogów. * (gwiazdka) zastępuje dowolny ciąg znaków ? (znak zapytania) zastępuje jeden znak [costam] , czyli zbiór znaków w nawiasach kwadratowych -
pozwala wybierać nazwy zawierające znaki z nawiasu. Przykład:
/home/antek/[oO]? czyli pliki dwuliterowe zaczynające się na
małe lub duże o. Inny przykład: /home/antek/[oO]* czyli
pliki o nieokreślonej długości, zaczynajace się na małe lub duże
o.
Nazwy plików i katalogów ukrytych zaczynają się od kropki.
Shele linuksowe rozróżniają duże i małe litery w nazwach plików
(katalogów). Można stosować znaki typu -@#^. ale nie można
używać znaków ",'*&)(|!`?/\<>;
W trakcie wpisywania polecenia możemy skorzystać z klawisza
TAB. Ułatwia pracę i automatycznie dopisuje resztę nazwy.
Przykładowo po napisaniu drakfire i wciśnięciu TAB
otrzymamy polecenie drakfirewall, a po wpisaniu drak
i dwukrotnym, szybkim wciśnięciu TAB uzyskasz listę poleceń
zaczynających się na drak (a jest ich wiele).
Link (dowiązanie, skrót do pliku) w Linuksie nie jest tym samym co w Windows. Przede wszystkim w Linuksie rozróżniamy dwa rodzaje linków: "dowiązanie" miękkie oraz twarde. Miękkie, czyli "symlink" (symboliczny link) w schemacie działania jest trochę podobne do tego stosowanego w Windows. Natomiast zrozumienie dowiązania "twardego", czyli "hardlinku" (twardego linku) wymaga poznania budowy systemów plików: bloków danych oraz i-węzłów.
W skrócie można powiedzieć, że dowiązanie twarde to kolejne, pełnowartościowe łącze do tych samych danych w systemie plików.
Prościej mówiąc "twardy link" jest kolejną nazwą tego samego pliku.
Jakie daje to praktyczne działanie? Aby definitywnie skasować dane pliku trzeba usunąć wszystkie "hardlinki" tego pliku (natomiast skasowanie skrótu, "symlinku" nie kasuje danych). Dowiązania "twarde" mają ograniczenia: muszą występować jedynie w obrębie jednego urządzenia (partycji, dysku) oraz powinny należeć do tego samego użytkownika.
Zlecenie tworzące skrót (symlink) wyglada tak: ln -s /etc/rc.d/init.d/httpd
/etc/rc.d/rc5.d/S85httpd
Jest zbudowane z czterech członów:
ln (link) czyli zlecenie tworzące
skrót
-s (opcja decydująca, że link ma być typu symlink)
/etc/rc.d/init.d/httpd czyli
skąd i co (scrypt httpd odpalajacy Apacha)
/etc/rc.d/rc5.d/S85httpd czyli
gdzie i z jaką nazwą
ln -b oryginalna_nazwa nowa_nazwa
(backup) tworzy kopie zapasowe plików przed ich usunięciem lub nadpisaniem
ln -f oryginalna_nazwa nowa_nazwa
(force) nadpisuje istniejący plik o takiej samej nazwie
ln -i oryginalna_nazwa nowa_nazwa
(interaktive) oczekuje na potwierdzenie przed usunięciem
ln -s oryginalna_nazwa nowa_nazwa
(symbolic) tworzy dowiązania symboliczne zamiast stałych
ln -v oryginalna_nazwa nowa_nazwa
(verbose) wypisuje nazwę każdego pliku przed utworzeniem dowiązania
Przypominam, że dowiązanie symboliczne można wykonać wygodnym programikiem mc (przykład z konfiguracji JAVA dla Netscape):
"Ustaw się na lewym panelu w katalogu /usr /local /netscape /plugins
i w prawym panelu na pliku /usr /java /j2rel.4.2_06 /plugin /i386 /ns7 /libjavaplugin_oji.so .
Mając belkę nad plikiem /usr /java /j2rel.4.2_06 /plugin /i386 /ns7/libjavaplugin_oji.so wciśnij klawisz F9.
Następnie za pomocą klawiszy kierunkowych (strzałek obok klawiatury numerycznej) przejdź na menu PLIK i klawiszem-strzałką w dół otwórz menu PLIK. Wybierz DOWIĄZANIE SYMBOLICZNE. Zatwierdź klawiszem ENTER."
Podczas edycji scryptów zauważysz wiersze
zaczynajace się od # . Jest to bezpieczny
sposób umieszczania komentarzy lub bezbolesnego blokowania części
scryptu.
Szukając materiałów opisujących Linuksa znajdziesz czasami w
instrukcji wykonania coś takiego:
# mount /dev/fd0 $ mount /dev/fd0
Pierwszy jest poleceniem wydanym przez roota, drugi
przez zwykłego użytkownika. Musisz nauczyć się odróżniać, kiedy
znak hasz # oznacza opis komendy, kiedy jest zneutralizowanym
(czyli sprowadzonym do roli komentarza) wpisem w skrypcie, a
także... kiedy jest wpisem rozpoczynającym scrypt (patrz przykład
/etc/rc.d/rc.his).
* * *
Po udanym zalogowaniu możesz przeglądać zawartość domowego
katalogu. Wydaj polecenie ls (czyli listowanie zawartości
obecnego katalogu). Istnieje szereg opcji, z których
najciekawsze to:
ls -a (wyświetlenie wszystkich plików i
katalogów, łącznie z ukrytymi)
ls -c (sortowanie wg czasu utworzenia, ls
-cr czyli w odwrotnym porządku sortowania)
ls -t (sortowanie plików wg czasu ich
modyfikacji - najnowsze srwsze, ls -tr czyli w odwrotnym porządku sortowania)
ls -r (wyświetla wyniki w odwrotnym porządku sortowania)
ls -S (sortowanie plików wg rozmiaru, ls
-Sr czyli w odwrotnym porządku sortowania)
ls -C (wyświetlanie wyników w kolumnach posortowanych pionowo)
ls -l (wyświetlanie danych szczegółowych).
Popularne jest zlecenie ls -la (-a wyświetli pliki ukryte czyli o nazwie zaczynającej się kropką)
ls -R (lista plików w katalogu i podkatalogach)
ls -aRl (lista wszystkich plików, także ukrytych, w katalogu i podkatalogach)
lsattr (listowania plików z rozszerzonymi atrybutami).
Zobacz zlecenie chattr
ls -B (pliki kopii zapasowych przeważnie kończą
się znakiem tyldy ~, ten parametr sprawi, że nie zostaną one wyświetlone)
ls -i (wyświetla numer indeksowy i-węzła i numer seryjny każdego pliku)
Zliczanie plików w wybranym katalogu za pomocą zlecenia ls opisałem na sąsiedniej stronie.
Zobacz też:
echo "masz `ls|wc -l` plikow w katalogu `pwd`" Otrzymamy w odpowiedzi ilość plików w aktualnym katalogu. Mamy zlecenia ls, wc, pwd oddzielone znakiem ` (na klawiszu z tyldą). Uwaga na znak cudzysłowia "
Listowanie wyłącznie katalogów: dir, vdir, tree.
Dla ambitnych pokażę bardziej rozbudowane plecenia
listowania:
ls -l /var/log/messages.[1-5].gz lub ls -l /var/log/messages.[12345].gz
Jeżeli mamy w katalogu /var/log pliki o nazwach messages.*.gz ,
gdzie w miejscu * występują liczby 1, 2, 3, 4, 5 to wspomniane
polecenia wyświetlą listę plików posortowanych od 1 do 5
* * *
Czasami będziesz musiał utworzyć sobie
podkatalog lub plik. Jest to banalnie proste. Wystarczy
polecenie mkdir nazwakatalogu ew. touch nazwapliku i sprawa z pozoru załatwiona. Jednak
prawa takiego katalogu lub pliku są uzależnione od widzimisie
administratora (poprzez parametry montowania partycji w pliku /etc/fstab oraz narzuconego w systemie poziomu bezpieczeństwa (msec). Po
wydaniu polecenia mkdir obrazki założyłeś jako
użytkownik antek katalog obrazki o automatycznie
nadanych prawach:
obrazki drwx --- ---
antek.antek
Co to oznacza ten zapis? Literka d z lewej
strony informuje, że mamy do czynienia z katalogiem. Następnie mamy
w trzech częściach podane trzy prawa: r - read
(czytanie), w - write (pisanie, zmienianie
itp.) oraz x - czyli prawo do uruchomienia. W systemach sieciowych dawno,
dawno temu ktoś wpadł na świetny pomysł podzielenia użytkowników na
(od lewej) właściciela, znajomych właściciela (tzw. grupy) i
obcych. Nasz katalog obrazki (oraz jego zawartość) może
wykorzystywać TYLKO właściciel. A co z kumpalmi, którzy też chcą
tam zagladać? Czas na zmiany. Służy do tego polecenie: chmod i chown.
chmod 750 obrazki daje prawa:
rwxr-x--- czyli rwx dla właściciela (liczba 7),
rx dla znajomych (liczba 5) oraz zero praw dla
obcych. Jak łatwo zapamietać technikę wyliczania wartości od 0 do
7? Mamy, jak już wiesz prawa: rwx. Prawo r to wartość
4, prawo w to wartość 2 i prawo x to wartość 1. Suma
tych liczb da nam wartość ostateczną, gotową do wpisania w
poleceniu chmod.
chown antek.kazik obrazki
wyznacza właściciela i następnie znajomych właściciela. Wszyscy z
grupy użytkownika kazik (których z kolei on wyznaczy) będą mogli
wykonać w katalogu obrazki to, na co zezwolą ustawienia po
poleceniu chmod. Niezbyt skomplikowane nie?
Czasami potrzeba rekurencyjnie, czyli z
podkatalogami i ich zawartością jednolicie nadać prawa. Do tego
służy opcja -R czyli np. chown
-R antek.kazik obrazki lub chmod -R 764
obrazki .
Najczęściej stosowane przykłady zlecenia chmod:
chmod 744 nazwa (rwx r-- r--)
chmod 644 nazwa (rw- r-- r--)
chmod 750 nazwa (rwx r-x ---)
chmod 711 nazwa (rwx --x --x)
7 daje rwx 6 daje rw- 5 daje r-x 4 daje r-- 1 daje --x 2, 3 nie stosuje się w praktyce
Celowo nie opisałem w tej części ustawiania bitu suid oraz
sgid. Zapraszam tutaj.
*
Jeżeli interesuje Ciebie bardziej zaawansowany wykład o
prawach do plików i katalogów to proszę:
Do określania praw dostępu do plików i katalogów służy program
chmod. Jego parametry można podzielić na trzy
elementy:
KOGO DOTYCZĄ ZMIANY
u - właściciel
g - członków grupy, do której należy
plik
o - inni, czyli reszta userów tzw.
obcy
a - wszyscy użytkownicy
Przykład parametru u w zleceniu chmod u+rx nazwapliku
W tym przykładzie u czyli właściciel, ma mieć prawa: r
(czytanie), x (uruchomienie). Reszta praw taka jaka była
dotychczas.
s - suid/sgid . Nie polecam na początku
nauki. Więcej na ten temat poniżej.
Przykład parametrów rx w zleceniu chmod u=rx nazwapliku
W tym przykładzie u (czyli właściciel), ma mieć prawa: r (czytanie), x (uruchomienie).
Reszta praw dla właściciela została wyzerowana bo użyto znak(=).
Grupa oraz inni mają prawa takie jak dotychczas.
JAKIE ZMIANY (dodawanie lub cofnięcie)
+ (znak plus) czyli przyznanie praw - (znak minus) czyli zabranie praw = (znak równości) czyli określenie, że nadawane
uprawnienia są kompletne. Przykład parametru =
w zleceniu chmod u=rx nazwapliku .
W tym przykładzie u (czyli właściciel), ma mieć prawa: r (czytanie), x
(uruchomienie). Reszta praw dla właściciela została wyzerowana bo
użyto znak(=). Grupa oraz inni mają prawa takie jak
dotychczas.
Przykłady zleceń:
chmod a-w nazwapliku czyli cofnięcie
(-)wszystkim (a)prawa do zapisu (w).
chmod o=r nazwapliku czyli nadanie
(=) praw dla obcych (o)do odczytu (r).
Pozostałe prawa dla obcych (o) są cofnięte do zera, bo użyto
znak (=). Właściciel i grupa mają dotychczasowe prawa.
chmod u=rx nazwaprogramu czyli nadanie
(=) praw dla właściciela (u) do odczytu i
wykonania (rx). Pozostałe prawa dla właściciela (u) są
cofnięte do zera, bo użyto znak (=). Obcy i grupa mają
dotychczasowe prawa.
chmod a+x,u+s nazwaprogramu czyli złozone
zlecenie składające się z dwóch członów oddzielonych przecinkiem.
nadanie (+) praw dla wszystkich (a) do
wykonania (x) oraz ustawienie bitu suid. Pozostałe prawa są
dotychczasowe.
*
Kiedy zakończysz instalację systemu i programów -
sprawdź, w jakich plikach masz ustawione bity SUID,
SGID (SetUID, SetGID). Określają one prawa użytkownika
(SUID) lub grupy (SGID) do wykonania programu z prawami
roota. Nie jest wskazane, abyś samodzielnie (w trakcie nauki)
nadawał takie uprawnienia, gdyż dla wprawnego włamywacza nawet gra
działajaca z prawami administratora może pomóc w przejęciu praw
roota.
Nadawanie prawa suid, sgid oraz
sticky (patrz punkt poniżej) robimy zleceniem chmod.
Nietypowością jest czterocyfrowy zapis parametrów tego zlecenia.
Pierwszy z lewej to nasz znak nadania:
chmod 1751 nazwapliku czyli
1-nadanie bitu sticky, czyli prawa rwx r-x --t chmod 2751 nazwapliku czyli
2-nadanie bitu SGID, czyli prawa rwx r-s --x chmod 4751 nazwapliku czyli
4-nadanie bitu SUID, czyli prawa rws r-x --x chmod u+s nazwapliku czyli nadanie bitu
SUID (pozostałe prawa bez zmian) chmod g+s nazwapliku czyli nadanie bitu
SGID (pozostałe prawa bez zmian) chmod +t nazwapliku czyli nadanie bitu
sticky (pozostałe prawa bez zmian)
Usunięcie flagi SUID, SGID, sticky:
chmod 751 nazwapliku
czyli gdy wybierzesz trzycyfrowy zapis zlecenia chmod
lub dasz zlecenie typu:
chmod u=rx nazwapliku (znak=), to wykasujesz nadane już prawo
SUID, SGID, sticky. chmod -s nazwa_pliku - jednoczesne
usunięcie bitów SUID, SGID chmod u-s nazwa_pliku - usunięcie bitu
SUID chmod g-s nazwa_pliku - usunięcie bitu
SGID chmod -t nazwapliku czyli usunięcie bitu
sticky (pozostałe prawa bez zmian)
Odrobina wyjaśnień: czasami zdarza się, że trzeba
uruchomić program, który do poprawnego działania wymaga
uruchomienia przez roota. Aby umożliwić innym użytkownikom
uruchamianie takiego programu (np. ping) trzeba uaktywnić
prawo dostępu SUID zleceniem chmod 4755
/bin/ping (zwróć uwagę na liczbę 4). Natomiast SGID
działa nieco inaczej: programy opatrzone tym prawem dostępu są
wykonywane z prawami dostępu grupy do której należą (zamiast praw
grupy, w skład której wchodzi użytkownik je uruchamiający). Prawo
SGID jest oznaczane cyfrą 2 i zlecenie nakładające je wygląda
następująco: chmod 2755 /usr/local/backups/plik
. Po wykonaniu listowania (zleceniem ls -l)
zobaczymy w miejscu praw uruchomienia (x) literkę s. Prawa dostępu
do plików SUID zawierają s tam, gdzie powinno znajdować się
pierwsze (z lewej) x, a w przypadku plików SGID literka s, zamiast
drugiego x.
Warto usunąć bity SUID, SGID wobec plików, które
nie muszą działać z prawami roota. Ale mam jedną uwagę: jeżeli nie
instalowałeś gierek, to dajac WYSOKI poziom bezpieczeństwa (w
trakcie instalacji) ustaliłeś automatycznie na minimalnym poziomie
obecność tych bitów w systemie. Pamiętaj o narzędziu SUDO, które umożliwia zwykłemu userowi uruchomienie plików dostępnych tylko rootowi.
Sprawdzenie obecności bitów SUID
find / -type f -perm -4000 -exec ls -l '{}'
\;|more
lub z tworzeniem pliku raportu wykaz_suid.txt w katalogu /home/antek/
find / -user root -perm -4000 >/home/antek/wykaz_suid.txt - wówczas zdejmowanie atrybutu odbędzie się z wykorzystaniem pliku /home/antek/wykaz_suid.txt za pomocą zlecenia:
chmod -s `cat /home/antek/wykaz_suid.txt` (znak ` jest na klawiszu z ~ tyldą).
lub po prostu find / -perm +4000
Sprawdzenie obecności bitów SGID
find / -type f -perm -2000 -exec ls -l '{}'
\;|more
lub po prostu find / -perm +2000
Obserwowałem mój system pod względem obecności
bitów SUID i stwierdziłem, że są one niezbędne na partycji
montowanej jako /usr (konkretnie w podkatalogach: /usr/bin ,
/usr/lib , /usr/sbin). Co to oznacza w praktyce? Że można
zaryzykować usunięcie ich z plików mieszczących się w innych
katalogach np. /var , /var/www , /var/ftp.
Jako ciekawostkę podam treść e-maila (z dnia
04.09.2002) od Mandrake-Security, w którym zaleca się użytkownikom
wersji 7.2-8.2 usunięcie bitu setuid z pliku linuxconf poleceniem
chmod u-s /bin/linuxconf
(...) by default, Mandrake Linux
ships linuxconf as setuid root in versions 7.2 through 8.2.
Successful exploitation will yield a root shell. MandrakeSoft
recommends that all users take steps and remove the setuid bit from
linuxconf. This can be done by issuing, as root, the following
command: chmod u-s /bin/linuxconf . For users of
Linux-Mandrake 7.2, the correct location of the linuxconf
executable is /sbin(...)
* * *
Czasami będziesz musiał odnaleźć plik.
Będziesz znał np. część jego nazwy. Użyj wówczas polecenia find, a w nazwę pliku wpisz poznane już znaki
?*. Polecam stronę: http://ultra.ap.krakow.pl/~bar/FIND/find_toc.html (mam ją w swoim archiwum). Przykład zlecenia:
find /etc -name '*.conf' -print
Wyjaśnienia: find /etc -name (czyli przeszukaj katalog
/etc wg nazw) '*.conf' (W nazwie wyszukuj plików o
dowolnej treści, ale z zakończeniem .conf . Znaczek ' jest
na klawiszu z cudzysłowem.) -print (Wyniki wydrukuj na domyślnym
urządzeniu, czyli ekranie.)
Jeżeli chcemy znaleźć program spell w katalogu /usr/bin wystarczy napisać:
find /usr/bin -name spell -print
Można również użyć zlecenie find do znalezienia plików poprzez datę, jak również wprowadzić przedział dat. Jeżeli chcemy znaleźć wszystkie programy w katalogu /usr/bin , które nie były wykorzystane przez ostatnie 100 dni można użyć polecenia:
find /usr/bin -type f -atime +100 -print
Aby znaleźć pliki, które zostały utoworzone lub zmodyfikowane w ciągu ostatniego dnia można napisać:
find /usr/bin -type f -mtime -1 -print
* * *
Wielkość katalogów wraz z podkatalogami wyświetli polecenie du -sh * . Natomiast ilość wolnego miejsca na dysku np. /dev/hda zobaczysz po wpisaniu zlecenia: df /dev/hda
* * *
Usuwanie katalogów: załatwi polecenie rmdir katalog . Niestety taki katalog musi być
pusty. Usunięcie pełnego wymaga opcji rm -r
katalog , ale będziemy musieli potwierdzać usuwanie. Zlecenie
rm -rf katalog jest brutalne i szybkie. Patrz
co w nim chcesz usunąć, gdyż pomyłka pod rootem może kosztować
nawet utratę całej zawartości dysku (gdy zamiast rm
rf /katalog wpiszesz nieprawidłowo: rm rf /
katalog (czyli po / wciśniesz
błędną spację i dopiero nazwę katalog).
Plik usuniemy zleceniem rm
nazwapliku
WYKAZ ZLECEŃ DO BEZWZGLĘDNEGO OPANOWANIA
Uzyskiwanie pomocy
apropos [Wybieranie stron podręcznika
zawierających słowo kluczowe]
whatis [Podobnie jak apropos lecz
tylko wobec pełnych wyrazów]
info [Pomoc na temat danego
polecenia]
man [Wywołanie podręcznika
pomocy]
Ułatwienia wykonywania zadań
alias oraz unalias [OPIS] [Tworzenie nazw zastępczych
dla długich poleceń]
pwd [Wyświetlenie ścieżki do
bieżącego katalogu. "Gdzie ja jestem?"]
touch [Tworzenie pustego pliku] . Można zmieniać datę modyfikacji pliku: touch -t 11221000 plik . Czas modyfikacji pliku został ustawiony na godzinę 10:00, 22 listopada 2003 roku.
Znajdowanie plików...
find [OPIS] [... na podstawie kryteriów,
takich jak nazwa, rozmiar itp]
locate [... w utworzonym wcześniej
spisie (bazie danych o plikach)]
whereis [... w katalogach]
which [ daje pełną ścieżkę do danego
pliku, o ile został umieszczony w katalogach wymienionych w
definicji zmiennej]
Przetwarzanie informacji tekstowych
cat [Wyświetlanie i ew. łączenie plików tekstowych] . Aby przejrzeć zawartość krótkiego pliku: cat plik.txt . Numerowanie linii przez dodanie opcji -n czyli cat -n plik.txt . Można wyswietlić kilka plików na raz: cat -n plik1.txt plik2.txt lub cat -n plik.* . W celu złączenia kilku plików w jeden należy się posłużyć operatorem przekierowania potoku >> czyli cat plik1.txt plik2.txt >> plik3.txt
less [Przeglądanie danych ekran po
ekranie w dół i górę tekstu , przydatne przy długim listingu plików np. ls /usr/bin | less] . Do przeglądania plików skompresowanych można użyć polecenia zless.su
tail [np. tail -f nazwapliku -
śledzenie na bieżąco zmian w pliku]
mount oraz unmount [OPIS]
[Montowanie-odmontowanie urządzeń typu dyski,
CD-ROM, stacje dyskietek. Dobry link
opisujący zlecenie. Mam go w swoim archiwum1,
archiwum2]
df [Informacja o zajętości
zamontowanych urządzeń pamięci masowej]
du [Informacja o zajętości urządzenia
lub objętości plików]
fdformat [Niskopoziomowe formatowanie
dyskietek]
fsck [Sprawdzenie i ew. naprawa
systemu plików]
INNE
dmesg [Odtworzenie komunikatów
startowych]
./nazwapliku [Uruchomienie pliku wykonywalnego]
* * *
Musisz wiedzieć, że polecenia tekstowe np. reboot to nic innego, jak... pliki. Uruchamiając
polecenia, uruchamiasz pliki wykonywalne lub skrypty zapisane w
plikach tekstowych.
W katalogu /sbin spotkać można
starych znajomych: killall5 (zabija wszystkie
aktywne logowania), linuxconf (okienkowe
narzędzie do konfiguracji, wbrew pozorom trudne), netconf (moduł linuxconfa), modemconf (moduł linuxconfa), tsconf
(quoty, partycje, volumeny nfs), shorewall (scrypt do konfigurowania iptables), reboot, poweroff, halt. Za to /usr/bin/drakbug
umożliwia wysłanie do centrali Mandrake raportu o wykrytym
błędzie.
Mając Mandrake 9.x, 10, warto zajrzeć
do /usr/sbin by uruchomić okienkowe moduły znane z
KDE, do których uruchomienia... nie zawsze potrzeba KDE, a nawet
zwykłych X-ów. Uwaga: nie ma wielu z tych plików w Mandrake 6.x,
7.x, 8.x. Więcej o Mandrake Control Center znajdziesz tutaj.
* * *
Skróty klawiszowe przydatne podczas pracy w
shellu. Uwaga: podczas edycji pliku w edytorku, należy używać
skróty właściwe dla danego edytorka.
SHIFT PageUp - przewijanie ekranu w górę oraz w dół
(PageDown)
CTRL a - przenosi kursor na początek wiersza (e
przenosi na koniec)
CTRL d - kasowanie (uwaga ten skrót także
wylogowuje)
CTRL u - kasowanie całego wiersza poleceń
CTRL k - "wycięcie" tekstu do schowka
CTRL y - "wklejenie" tekstu ze schowka
CTRL l - jak zlecenie clear
CTRL r - szukamy w historii poleceń zlecenia na r
strzałki kierunkowe dół, góra - historia poleceń
cd /opt/netTAB dopisze
treść zlecenia (nazwę pliku, czyli w tym wypadku netscape).
Podobnie jak np. drakTAB wyświetli
wszystkie zlecenia o nazwie zaczynającej się słowem drak np.
drakfirewall, drakgw itd.
SUDO, czyli program pozwalający wybranemu, zwykłemu userowi na uruchomienie innego, dowolnego programu dostępnego wyłącznie dla roota został opisany na sąsiedniej stronie..
Uwaga: z powodu namnożenia się różnych złodziejskich witryn www, które kopiują moje strony i umieszczają je u siebie wraz z komercyjnymi reklamami (na których zarabiają) informuję, że wszelkie prawa są zastrzeżone.
Uwaga.
Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).
Witryna była dostępna pod adresami:
strony.wp.pl/wp/twarogal , strony.wp.pl/wp/linuxtwarka ,
twarogal.republika.pl , klub.chip.pl/twarogal oraz gorzow-wlkp.net
(w latach 2003/04).