pam_mount + sshfs czyli automatyczne montowanie
Kategoria: Artykuły, etykiety: pam_mount, ssh, sshfs
Dodany: 2011-09-15 18:08
(zmodyfikowany: 2011-09-15 20:55)
Przez: nat
Wyświetleń: 8842
Automatyczne montowanie przez pam_mount katalogu domowego po ssh podczas logowania
Jest to niezwykle przydatne kiedy trzymamy katalogi użytkowników na serwerze. Doskonale sprawdza się wraz z scentralizowanym logowaniem po LDAP (konfiguracja ldap nie jest tu opisana).
Sposób ten jest lepszą alternatywą do montowania katalogów przez nfs i nfs+kerberos.
Zasada działania jest prosta. Podczas logowania do systemu, pam_mount przechwytuje nazwę użytkownika oraz hasło i wykorzystuje go do zamontowania katalogu domowego (i/lub innego) z serwera po sshfs tak aby nie trzeba było wpisywać drugi raz hasła.
pam_mount ma szersze zastosowanie niż tu opisane.
Całość składa się z czterech prostych kroków
trzeba zainstalować:
na serwerze:
sudo apt-get install ssh
na kliencie:
sudo apt-get install libpam-mount sshfs
Należy na kliencie dodać do globalnej listy znanych hostów w /etc/ssh/ssh_known_hosts
odcisk klucza serwera (dokładanie taki, jaki dodaje się sam do pliku: ~/.ssh/known_hosts
kiedy za pierwszym razem nawiązywane jest normalne połączenie przez ssh z serwerem, można go skopiować do: /etc/ssh/ssh_known_hosts
domyślnie plik /etc/ssh/ssh_known_hosts
nie istnieje.
w /etc/security/pam_mount.conf.xml w przedostatniej linii dodajemy:
<volume fstype="fuse" path="sshfs#%(USER)@192.168.1.233:" mountpoint="~" options="reconnect,idmap=user,password_stdin,nonempty" />
gdzie:
192.168.1.233: - adres serwera, nie trzeba podawać ścieżki ponieważ domyślnie użyta jest ścieżka katalogu domowego, ale można jeżeli ma być inna)
%(USER)
- nazwa użytkownika przechwycona w czasie logowania
reconnect
- łączy automatycznie po rozłączeniu, uśpieniu komputera etc.
password_stdin
- pozwala przejąć hasło ze standardowego wejścia programowi sshfs co normalnie jest niedopuszczalne
nonempty
- zamontuje nawet w niepustym katalogu lokalnym
i dodatkowo na debianie/ubuntu wykonać:
sudo chmod +x /usr/bin/fusermount
sudo chmod +r /etc/fuse.conf
sudo chmod +s /sbin/mount.fuse
(ścieżki do tych plików mogą być inne w różnych wersjach systemu /sbin, /bin, lub /usr/bin)
teoretycznie i prawidłowo powinno wystarczyć dodanie użytkownika do grupy fuse i nie trzeba zmieniać praw tych plików, ale to wymaga testów i sprawdzenia innych zabezpieczeń, zwłaszcza kiedy logowanie następuje po ldap
i już można się logować a katalog domowy będzie montował się automatycznie po sshfs.
Warto zwrócić uwagę na kilka opcji w /etc/security/pam_mount.conf.xml
debug enable="1"
- włącza tryb debugowania, przydatne kiedy nie wiemy dlaczego coś nie działa
mkmountpoint enable="1" remove="true"
- tworzy katalog lokalny w którym ma być zamontowany udział po sshfs nawet jak go nie ma, drugi parametr usuwa katalog lokalny po odmontowaniu przy wylogowaniu jeżeli jest on pusty
zamiast opcji password_stni
możn użyć ssh=”1”
niestety rzadko ta opcja daje oczekiwane rezultaty.
PS. Aby nie pojawiał się błąd z .ICEauthority podczas uruchamiania Gnome należy wpisać do /etc/environment ICEAUTHORITY=/tmp/.ICEauthority spowodowane to jest tym, że sshfs nie obsługuje twardych linów