piątek, 28 sierpnia 2009

Debian - Bash auto uzupełnianie - problemy

Jeżeli jako zwykły użytkownik przy używaniu tabulatora w celu autouzupełnienia tekstu (np. nazwy katalogu) pojawia się nam taka lub podobna linijka:

cd /ho-sh: <( compgen -d -- '/ho' ): No such file or directory


(w tym wypadku chciałem przejść do katalogu /home bez wpisywania całej nazwy a jedynie poprzez wpisanie pierwszej litery 'h' a później naciśnięcie klawisza TAB)

to problemem jest używany przez nasz shell - używamy shella innego niż Bash. Najprostszym rozwiązaniem jest zmiana w pliku /etc/passwd shella na bash (ambitnym pozostawiam analizę narzędzia compgen).

Zobaczmy to a przykładzie. Wyszukam informacje o użytkowniku w pliku passwd:

# grep user1 /etc/passwd
user1:x:1001:1001:Ordinary user:/home/user1:/bin/sh


Każda linijka w tym pliku definuje jednego użytkownika systemowego. Konkretne informacje o użytkowniku oddzielone są dwukropkiem - i oznaczają kolejno:
- nazwę użytkownika
- skrót hasła lub x jeśli skrót jest przechowywany w bezpiecznym pliku - /etc/shadow
- numeryczny identyfikator użytkownika (bodajże typu int) - uid
- numeryczny identyfikator grupy głównej (domyślnej - też typu int) użytkownika - gid
- katalog domowy użytkownika
- opis użytkownika - pełna nazwa - ciąg pozwalający odszyfrować po co i przez kogo jest używany dany login
- domyślny shell użytkownika

Jak widać user1 używa shella sh - żeby wyeliminować opisany błąd należy edytorem tekstowym z poziomu administratora zmienić wpis dotyczący shella z /bin/sh na /bin/bash i już.

A co jeśli nie mamy uprawnień roota?
Można użyć polecenia chsh będąc zalogowanym na swoim koncie:

#chsh -s /bin/bash


Możemy używać tego polecenia również z poziomu administratora jeśli nie chcemy edytować pliku ręcznie - polecenie jako argument może przyjąc login użytkownika, na którym chcemy dokonać zmiany (polecam man chsh).

Jak sprawdzić aktywny shell?
Za pomocą zmiennej shella $0
# echo $0
-bash


Pliki konfiguracyjne, którym warto się przyjrzeć:
/etc/shadow
/etc/login.defs
/etc/shells

Jako zadanie domowe pozostawiam pytania:
Jak działa chsh?
Dlaczego skróty haseł zaleca się trzymać w osobnym pliku /etc/shadow?
Do czego służy polecenie getent?

Brak komentarzy:

Prześlij komentarz