Richtige Methode zum Mounten von Samba-Freigaben

9

Ich möchte ein CIFS-Netzwerkdateisystem mit Samba auf meinem Arch Linux-System bereitstellen. Ich möchte dieses Dateisystem bei jeder Anmeldung bereitstellen (entweder über ssh, ein TTY oder über KDM).

Ich kann dem, was ich will, ziemlich nahe kommen, indem ich die Netzwerkfreigabe hinzufüge /etc/fstab. Das größte "Problem" besteht darin, dass entweder mein Passwort hart codiert /etc/fstaboder eine Anmeldeinformationsdatei mit meinem Benutzernamen und Passwort erstellt werden muss. Es erscheint mir unsicher, meinen Benutzernamen und mein Passwort in einer Nur-Text-Datei zu behalten, selbst wenn ich die Berechtigungen auf 600 setze.

Gibt es eine "richtige" Möglichkeit, eine Netzwerkfreigabe sicher automatisch bereitzustellen? Kann ich dies mit PAM tun (mein Benutzername und mein Passwort sind auf beiden Computern gleich) und wenn ja, wie?

StrongBad
quelle
Hast du dir pam_cifs angesehen ? "pam_cifs ist ein Linux-PAM-Modul zum Ein- und Aushängen von CIFS-Freigaben bei der Anmeldung pro Benutzer"
ein CVn vom
Oder pam_mount, ich habe keine spezielle Erfahrung, aber es sieht so aus, als ob es dafür gemacht wäre.
EightBitTony
@EightBitTony Das Finden von pam_mount hat mich dazu gebracht, die Frage zu stellen. Ich hoffe, dass jemand mir genauer sagen kann, ob es der richtige Weg ist und wenn ja, wie.
StrongBad

Antworten:

8

Methode 1 - /etc/fstab

Mir ist klar, dass Sie nach Alternativen suchen, aber hier erfahren Sie, wie Sie Ihre Anmeldeinformationen aus der /etc/fstabDatei entfernen können:

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

Dann in der Datei /etc/cifsauth:

username=someuser
password=somepass

Machen Sie die Berechtigungen dieser Datei 600, dh chmod 600 /etc/cifsauth.

Methode 2 - pam_mount

Sie können pam_mount installieren und dann einen generischen Mount für alle Benutzer einrichten, die sich wie folgt anmelden:

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

Diese Methode hat immer noch das gleiche Problem wie Methode 1, bei der die Anmeldeinformationen in einer Datei gespeichert sind /home/%(USER)/.Music.cred. Dies ist derselbe Typ von Anmeldeinformationsdatei wie bei der ersten Methode. Stellen Sie daher sicher, dass die Berechtigungen ebenfalls 600 sind.

Methode 3 - Verwenden Sie gvfs-mount

Diese U & L-Fragen und Antworten mit dem Titel: Kann ich das Mounten einer CIFS-Freigabe automatisieren, ohne mein Kennwort im Klartext zu speichern? enthält eine Antwort von @Gilles, in der die Verwendung des GNOME-Schlüsselbunds zum Speichern Ihrer CIFS-Anmeldeinformationen beschrieben wird.

Sie können dann mit GVFS - GNOME Virtual File System wie folgt auf die CIFS-Freigaben zugreifen :

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

Dadurch wird die Freigabe vom Hostnamen mit dem Namen "Benutzername" zugeordnet und unter bereitgestellt $HOME/.vfs/sharename on hostname. Sie können dies in keiner Weise kontrollieren. Es ist fest codiert, immer hier montiert zu sein, ich habe geschaut!

Sie können jedoch Links zu diesen Bereitstellungen erstellen, damit ich auf von mir bereitgestellte Freigaben zugreifen kann. Die Verwendung von .gvfswar unglücklich, da einige Tools die Punktverzeichnisse beim Durchsuchen von Dateien nicht so oft auflisten, dass der von mir erstellte Link der einzige Weg ist, auf diese Freigaben zuzugreifen.

slm
quelle
Wenn Sie eine Datei als versteckt erstellen, sagen Sie .cifsauth, und 'Benutzername =' nicht erforderlich, nur Anmeldeinformationen = / etc / .cifsauth genug
Rahul Patil
@RahulPatil - Wollen Sie damit sagen, dass Sie die angegebenen Anmeldeinformationen eingeben müssen, um die .cifsauthzu entfernen username=, oder dass die username=einfach nicht alle zusammen erforderlich sind?
slm
ja ... Schöne Antwort .. !! +1 für pam_mount
Rahul Patil
@ RahulPatil - mit welchem ​​Bit stimmst du überein?
slm
2

Es stellt sich heraus, dass dies pam_mountder richtige Weg ist. Sie fügen die Netzwerkfreigabe hinzu/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" />

Es sollte theoretisch möglich sein , die verwendet werden %(USER), %(USERUID)und %(USERGID)Variablen es eine allgemeine montieren zu machen, aber ich konnte nicht , dass ein Teil an die Arbeit auf Arch Linux bekommen. Sie müssen auch Ihr System für die Verwendung konfigurieren pam_mount. Sie müssen beide /etc/pam.d/system-authund Ihren entsprechenden Login-Manager ändern . Für KDM ist es /etc/pam.d/kde. Die Änderungen umfassen grundsätzlich das Hinzufügen optional pam_mount.sozu jedem Abschnitt beider Dateien, aber die genauen Details sind schwierig, da die Reihenfolge wichtig ist. Ich folgte dem Arch Wiki .

Mit diesem Setup und demselben Benutzernamen / Passwort auf dem Server und meinem Computer kann ich automatisch mounten, ohne irgendwo eine Anmeldeinformationsdatei zu speichern.

StrongBad
quelle
Das ist gut ... Grundsätzlich würde ich die fstab-Lösung bevorzugen - ich mag pamund den Rest persönlich nicht, und ich habe bemerkt, dass sie dazu neigen, sich immer weiter in die Systemkonfiguration einzuschleichen - aber dies beantwortet definitiv die Frage. Kann ich fragen, warum Sie so gegen das Speichern von Anmeldeinformationen sind? Benutzerberechtigungen und / oder Besitz / Verschlüsselung von Dateien sollten dort mehr als ausreichend sein. Auf einigen Systemen können Sie solche Informationen sogar in Firmware-Variablen speichern, auf die erst nach der Authentifizierung zugegriffen werden kann. sshspeichert Anmeldeinformationen zum Beispiel basierend auf fs-Berechtigungen, nicht wahr?
Mikesserv
@mikeserv Wir verwenden ein einziges Anmeldesystem, sodass ein Systemadministrator, der über Root-Zugriff auf den Computer mit meiner Anmeldeinformationsdatei verfügt, möglicherweise nicht über Root-Zugriff auf alle Server verfügt, für die ich mit meinem Kennwort Zugriff habe.
StrongBad