Właściwy sposób zamontowania udziału samba

9

Chciałbym zamontować system plików CIFS z sambą w moim systemie Arch Linux. Chciałbym zamontować ten system plików przy każdym logowaniu (przez ssh, TTY lub przez KDM).

Mogę zbliżyć się do tego, co chcę, dodając udział sieciowy /etc/fstab. Największym „problemem” jest to, że wymaga to twardego kodowania mojego hasła /etc/fstablub utworzenia pliku poświadczeń z moją nazwą użytkownika i hasłem. Nie wydaje mi się bezpieczne przechowywanie mojej nazwy użytkownika i hasła w zwykłym pliku tekstowym, nawet jeśli ustawię uprawnienia na 600.

Czy istnieje „właściwy” sposób bezpiecznego automatycznego zamontowania udziału sieciowego? Czy mogę to zrobić za pomocą PAM (moja nazwa użytkownika i hasło są takie same na obu komputerach), a jeśli tak, to w jaki sposób?

StrongBad
źródło
Czy spojrzałeś na pam_cifs ? „pam_cifs to moduł Linux-PAM do montowania i odmontowywania udziałów CIFS przy logowaniu dla poszczególnych użytkowników”
CVn
Lub pam_mount, nie mam żadnego specjalnego doświadczenia, ale wygląda na to, aby to zrobić.
EightBitTony
@EightBitTony odkrycie pam_mount doprowadziło mnie do zadania pytania, mam nadzieję, że ktoś będzie w stanie powiedzieć mi bardziej zdecydowanie, czy jest to właściwy sposób, a jeśli tak, to w jaki sposób.
StrongBad

Odpowiedzi:

8

Metoda nr 1 - /etc/fstab

Zdaję sobie sprawę, że szukasz alternatywnych rozwiązań, ale oto sposób, w jaki można uzyskać poświadczenia z /etc/fstabpliku:

//WindowsHost/Sharename /LocalMountPoint cifs credentials=/etc/cifsauth 0 0

Następnie w pliku /etc/cifsauth:

username=someuser
password=somepass

Ustaw uprawnienia do tego pliku 600, tj chmod 600 /etc/cifsauth.

Metoda nr 2 - pam_mount

Możesz zainstalować pam_mount, a następnie skonfigurować ogólne podłączenie dla wszystkich użytkowników, którzy się zalogują:

# /etc/security/pam_mount.conf.xml
<debug enable="1" />
<volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />

Metoda ta wciąż ma ten sam problem co Sposób nr 1, gdzie poświadczenia są przechowywane w pliku /home/%(USER)/.Music.cred. Jest to ten sam typ pliku poświadczeń, co w pierwszej metodzie, więc upewnij się, że uprawnienia również wynoszą 600.

Metoda nr 3 - użyj gvfs-mount

Niniejsze pytania i odpowiedzi dotyczące U&L: Czy mogę zautomatyzować montowanie udziału cifs bez przechowywania hasła w postaci zwykłego tekstu? zawiera odpowiedź @Gilles, która opisuje użycie klucza GNOME do zachowania poświadczeń CIFS.

Następnie możesz uzyskać dostęp do udziałów CIFS za pomocą GVFS - GNOME Virtual File System - w następujący sposób:

$ gvfs-mount smb://username\;workgroupname@hostname/sharename

Spowoduje to zmapowanie udziału z nazwy hosta o nazwie sharename i zamontowanie go pod $HOME/.vfs/sharename on hostname. Nie możesz tego w żaden sposób kontrolować. Spojrzałem na stałe!

Możesz jednak utworzyć łącza do tych montowań, co właśnie robię, aby uzyskać dostęp do udziałów, które zamontowałem. Użycie .gvfsbyło niefortunne, ponieważ niektóre narzędzia nie wyświetlają katalogów kropek podczas przeglądania plików, więc często utworzony przeze mnie link jest jedynym sposobem na uzyskanie dostępu do tych udziałów.

slm
źródło
jeśli utworzysz plik jako ukryty, powiedz .cifsauth, a „nazwa użytkownika =” nie jest wymagana, wystarczy tylko poświadczenia = / etc / .cifsauth
Rahul Patil
@RahulPatil - czy mówisz, że musisz wykonać poświadczenia .cifsauth, aby je usunąć username=, czy też to, co username=słuszne, nie jest konieczne razem?
slm
tak ... Ładna odpowiedź .. !! +1 za pam_mount
Rahul Patil
@RahulPatil - z czym się zgadzasz?
slm
2

Okazuje się, że taka pam_mountjest droga. Dodaj udział sieciowy do/etc/security/pam_mount.conf.xml

<volume user="yourUserName" fstype="auto" path="//path/to/the/network/share" mountpoint="/path/to/the/mount/point" options="username=yourUserName" />
<mkmountpoint enable="1" remove="true" />

Powinno być teoretycznie możliwe do wykorzystania %(USER), %(USERUID)i %(USERGID)zmienne, aby ogólny montażu, ale nie mogłem dostać tę część do pracy na Arch Linux. Musisz także skonfigurować swój system do używania pam_mount. Musisz zmodyfikować zarówno /etc/pam.d/system-authi odpowiedni menedżer logowania. W przypadku KDM tak jest /etc/pam.d/kde. Modyfikacje polegają zasadniczo na dodawaniu optional pam_mount.sodo każdej sekcji obu plików, ale dokładne szczegóły są trudne, ponieważ liczy się kolejność. Śledziłem Arch Wiki .

Dzięki tej konfiguracji i tej samej nazwie użytkownika / hasła na serwerze i moim komputerze mogę automatycznie montować bez zapisywania pliku poświadczeń w dowolnym miejscu.

StrongBad
źródło
To dobrze ... Z zasady wolałbym rozwiązanie fstab - nie lubię, pama reszta osobiście, i zauważyłem, że mają tendencję do wkradania się coraz bardziej do konfiguracji systemu - ale to zdecydowanie odpowiada na pytanie. Czy mogę jednak zapytać, dlaczego tak nie zgadzasz się z przechowywaniem poświadczeń? Uprawnienia użytkownika i / lub własność / szyfrowanie pliku powinny tam być więcej niż wystarczające. W niektórych systemach można nawet przechowywać takie informacje w wersjach oprogramowania układowego, które są dostępne dopiero po uwierzytelnieniu. sshprzechowuje poświadczenia na przykład na podstawie uprawnień fs, prawda?
mikeserv
@ mikeserv korzystamy z jednego systemu logowania, więc administrator systemu, który ma uprawnienia roota do komputera z plikiem moich danych uwierzytelniających, może nie mieć dostępu root do wszystkich serwerów, do których moje hasło uzyskuje dostęp.
StrongBad