Hintergrund
Ich versuche, automatisch einen Befehl auszuführen, der eine kennwortgeschützte Samba-Freigabe mountet, wenn sich mein Benutzer anmeldet. Der Haken dabei ist, dass ich meinen Laptop mit einem anderen Benutzer teile, und ichnichtmöchte, dass die Samba-Freigabe gemountet wird, wenn sie sich anmeldet. Ich möchte nur, dass sie gemountet wirdwenn ich mich einlogge. Das schließt das Bearbeiten meiner fstab-Datei aus, da ich möchte, dass diese benutzerspezifisch ist.
Vorherige Forschung
Ich habe viele Fragen und Antworten zum Mounten von Samba-Freigaben gesucht und überprüft, darunter "Einbinden von Samba-Freigaben beim Booten/Anmelden und Verwenden eines Skripts" Und "Richtiger fstab-Eintrag zum Mounten einer Samba-Freigabe beim Booten,“, aber die meisten Antworten beziehen sich auf das Bearbeiten von fstab, was für die meisten Leute gut funktioniert, aber das ist nicht, wonach ich hier suche.
Was ich bisher getan habe
Ich kann die Samba-Freigabe manuell von der Befehlszeile aus mounten, indem ich Folgendes mache:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
Problemstellung
Der vorherige Befehl funktioniert einwandfrei, wenn ich ihn von der Befehlszeile aus ausführe – ich werde nach meinem Passwort gefragt, um die Sudo-Berechtigung zu erhalten, ich gebe es ein und der Befehl wird ausgeführt. Das Problem ist, dass die Samba-Freigabe nicht wie erwartet gemountet wird, wenn ich genau denselben Befehl in das Feld „Befehl“ in den Einstellungen für Startprogramme > Startprogramm bearbeiten einfüge, meine Änderungen speichere, neu starte und mich erneut anmelde. Ich vermute, das liegt daran, dass ich Root-Berechtigungen benötige, um als Sudo zu laufen, und mit dem Skript in den Einstellungen für Startprogramme kann ich es nicht eingeben, sodass das Skript einfach fehlschlägt.
Wie kann ich das umgehen?
Antwort1
Okay, ich habe es geschafft, das Problem selbst zu lösen (mit Hilfe anderer). Das zugrunde liegende Problem war, wie ich vermutet hatte, die Tatsache, dass ich versuchte, einen Befehl auszuführen, der Root-Rechte erforderte, ohne ein Passwort anzugeben. Ich habe dieses Problem gelöst, indem ich den Anweisungen im Thread "Wie führe ich einen sudo-Befehl in einem Skript aus, ohne nach einem Kennwort gefragt zu werden?". Kurz gesagt, ich habe ein Shell-Skript namens "script-mount-samba-share.sh" erstellt, das nichts weiter enthält als eine einzige Zeile mit dem Mount-Befehl, den ich ausführen möchte:
mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
Dann habe ich den Dateieigentümer auf root:root geändert und die Berechtigungen auf 700 gesetzt. Als nächstes habe ich sudo so eingerichtet, dass das Ausführen des Skripts ohne Eingabe eines Passworts möglich ist. Dann habe ich das Feld „Befehl“ in den Startanwendungseinstellungen > Startprogramm bearbeiten in „sudo /home/scott/script-mount-samba-share.sh“ (ohne Anführungszeichen) geändert und voilà. Beim nächsten Neustart und der Anmeldung mit meinem Benutzernamen wurde die Samba-Freigabe gemountet, ohne dass ich einen Finger rühren musste. Ich habe auch getestet, dass die Samba-Freigabe nicht gemountet wird, wenn ich neu starte und mich mit einem anderen Benutzer anmelde, was ich auch möchte.
Das einzige kleine Problem, das ich jetzt zu lösen versuche, besteht darin, dass meine Samba-Freigabe immer noch in der linken Navigationsleiste in Nautilus angezeigt wird, wenn ich bereits angemeldet bin und dann den Benutzer zu jemand anderem wechsle. Das ist sinnvoll, da sie gemountet wurde, als ich mich mit meinem eigenen Benutzer angemeldet habe. Ich möchte jedoch nicht, dass die gemountete Freigabe in Nautilus für den anderen Benutzer angezeigt wird. Meine nächste Aufgabe besteht also darin, herauszufinden, wie ich das hinbekomme.
Antwort2
Es ist wichtig, den Benutzernamen und das Passwort für den Mount-Befehl hinzuzufügen, da sonst möglicherweise nach dem Passwort gefragt wird. Bei mir hat das funktioniert:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,user=,password=,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
natürlich mit allen Änderungen in /etc/sudoers