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ń: 6511

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

OSnews Wykop Blip Flaker Kciuk Śledzik Facebook Identi.ca Twitter del.icio.us Google Bookmarks