Schreibberechtigung beim Mounten von Windows-Freigaben von Ubuntu

2

Ich glaube, ich bin kurz davor, meine Dev-Umgebung genau so einrichten zu können, wie ich es will, aber es bleibt noch ein letzter Haken. Ich verwende VirtualBox auf einem Windows 7 x64-Host mit meiner Entwicklungsumgebung in einem Ubuntu 12.04-Gast. Ich möchte die Dateien für meine Projekte auf dem Host-Dateisystem aufbewahren - teilweise, damit ich darauf zugreifen kann, wenn der Ubuntu-Gast nicht läuft, aber auch, um Tortoise und andere Windows-basierte Tools ( Husten Photoshop), und es erleichtert auch mein Backup-Schema.

Ich habe also einen Ordner "Rails" auf meinem NTFS-Laufwerk, den ich vom Host mit einem Benutzer geteilt habe, der speziell für den Ubuntu-Gast erstellt wurde. Der Einhängepunkt wurde eingerichtet und ein Eintrag zu fstab (cifs) hinzugefügt, wobei eine Berechtigungsnachweisdatei und die Optionen verwendet wurden iocharset=utf8,file_mode=0777,dir_mode=07‌​77 Dies funktioniert gut, und mein Ubuntu-Benutzer verfügt über Lese- und Schreibberechtigungen für den Inhalt. Wenn ich jedoch meine Rails-App starten möchte, erhalte ich Berechtigungsfehler für alle Dateien, in die die App schreiben muss (z. B. die Protokolldatei). Was gibt?

Ola Tuvesson
quelle

Antworten:

2

Es stellte sich heraus, dass ich einfach an der falschen Stelle gesucht hatte - ich hatte vergessen, dass das Konto auf dem Windows-Host die richtigen Zugriffsberechtigungen für den freigegebenen Ordner haben musste; es hatte nur Read & execute. Write und List folder contents. Doh! Hinzufügen Modify das Problem behoben Also nichts als ein dummer Fehler - aber ich habe auch etwas mehr über das erfahren cifs-Syntax und fstab und überlegte, wie man als bescheidene Benutzer mounten kann, wodurch die Mountpunkte in mir sind /home/user Mappe. Der letzte Mount-String in meinem Fstab sieht folgendermaßen aus (meine Werte werden durch [Token] ersetzt):

//[server]/[share] /home/[user]/[folder] cifs credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0

Sie müssen also nur noch einstellen uid und gid für den Benutzer und die Gruppe, für die Sie die Dateien nach dem Mounten in der Freigabe besitzen möchten - keine weiteren Schritte erforderlich. Ich habe auch die erforderlichen Windows-Benutzeranmeldeinformationen in einer separaten Datei unter meinem .config-Verzeichnis abgelegt und getan chmod 400 um andere davon abzuhalten, es zu lesen.

Es hat erstaunlich lange gedauert, bis all dies herausgefunden wurde, da es eine Million Argumente für die Verwendung von CIFs gibt, und viele scheinen sie missverstanden zu haben - daher empfehlen viele die Verwendung file_mode / dir_mode 777 (das klingt nach einer wirklich schlechten Idee für mich) und Pfeffer mit unnötigen Argumenten wie nounix. noperm. rw. iocharset und noacl - Keine davon wird benötigt, um diese Arbeit zu ermöglichen. Während mein Problem durch einen einfachen Fehler verursacht wurde, lasse ich die Frage (und diese Antwort) hier. hoffentlich findet es jemand hilfreich!

Bearbeiten: Durch ein Fehler in Samba Cifs-Implementierung es ist notwendig, das nobrl Option auch, wenn Sie SQLite-Datenbanken auf der Freigabe ausführen möchten. Grundsätzlich kann der aktuelle Samba cifs Linux-Client nicht mit der Art und Weise umgehen, wie SQLite die Datenbankdatei sperrt. Keine großartige Lösung und fast sicher eine schlechte Idee in einer Umgebung mit mehreren Benutzern, aber da es sich in meinem Fall um eine Einzelbenutzerfreigabe handelt, die auf demselben Computer wie der Client gehostet wird (was die Netzwerklatenz fast vollständig beseitigen sollte), werde ich das tun dran bleiben.

nobrl

Senden Sie keine Bytebereichssperrenanforderungen an den Server. Das ist notwendig   für bestimmte Anwendungen, die mit dem obligatorischen Byte im cifs-Stil brechen   Bereichssperren (und die meisten cifs-Server unterstützen das Anfordern noch nicht   empfohlene Bytebereichssperren).

Der Eintrag fstab sieht jetzt so aus:

//[server]/[share] /home/[user]/[folder] cifs nobrl,credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0
Ola Tuvesson
quelle