Cifs-Netzlaufwerk einbinden: Schreibberechtigungen und Chown

99

Ich habe Zugriff auf ein CIFS-Netzlaufwerk. Wenn ich es unter meinem OSX-Rechner einbinde, kann ich von und auf es lesen und schreiben.

Wenn ich das Laufwerk in Ubuntu mounte, benutze ich:

sudo mount -t cifs -o username=${USER},password=${PASSWORD} //server-address/folder /mount/path/on/ubuntu

Ich kann nicht auf das Netzlaufwerk schreiben, aber ich kann davon lesen. Ich habe die Berechtigungen und den Besitzer des Mount-Ordners überprüft. Sie sehen folgendermaßen aus:

4.0K drwxr-xr-x  4 root root    0 Nov 12  2010 Mounted_folder

Ich kann den Besitzer nicht ändern, da ich den Fehler erhalte:

chown: changing ownership of `/Volumes/Mounted_folder': Not a directory

Wenn ich tiefer in das Netzlaufwerk eintauche und dort den Eigentümer ändere, erhalte ich die Fehlermeldung, dass ich keine Berechtigung habe, den Eigentümer des Ordners zu ändern.

Was kann ich tun, um meine Schreibberechtigung zu aktivieren?

Vincent
quelle
Ist das Dateisystem in / etc / fstab aufgeführt? Wenn ja, welche Optionen hat der Eintrag?
Jenny D
3
Sie können auch die nopermMount-Option verwenden, die in meiner Antwort auf diese Frage ähnlich angegeben ist: unix.stackexchange.com/a/375523/16287 . Dadurch erhalten alle Benutzer Lese- und Schreibzugriff auf die CIFS-Bereitstellung.
Daniel

Antworten:

137

Sie mounten die CIFS-Freigabe als Root (weil Sie sie verwendet haben sudo), sodass Sie nicht als normaler Benutzer schreiben können. Wenn Ihre Linux-Distribution und ihr Kernel so aktuell sind, dass Sie die Netzwerkfreigabe als normaler Benutzer bereitstellen können (jedoch unter einem Ordner, dessen Eigentümer der Benutzer ist), verfügen Sie über die erforderlichen Anmeldeinformationen, um Dateien zu schreiben (z. B. den freigegebenen Ordner irgendwo unter Ihrem bereitstellen) Ausgangsverzeichnis, wie zum Beispiel $HOME/netshare/. Offensichtlich müssten Sie den Ordner erstellen, bevor Sie ihn mounten.

Eine Alternative besteht darin, die Benutzer- und Gruppen-ID anzugeben, die die gemountete Netzwerkfreigabe verwenden soll. Auf diese Weise kann dieser bestimmte Benutzer und die potenzielle Gruppe auf die Freigabe schreiben. Fügen Sie die folgenden Optionen für Ihren Mount : uid=<user>,gid=<group>und ersetzen <user>und <group>jeweils durch Ihre eigene Benutzer- und Standardgruppe, die Sie automatisch mit dem finden idBefehl.

sudo mount -t cifs -o username=${USER},password=${PASSWORD},uid=$(id -u),gid=$(id -g) //server-address/folder /mount/path/on/ubuntu

Wenn der Server Besitzinformationen sendet, müssen Sie möglicherweise die Optionen forceuidund hinzufügen forcegid.

sudo mount -t cifs -o username=${USER},password=${PASSWORD},uid=$(id -u),gid=$(id -g),forceuid,forcegid, //server-address/folder /mount/path/on/ubuntu
Huygens
quelle
es hat bei mir funktioniert! Wir sollten jedoch hinzufügen, dass Sie die Option hinzufügen sollten, wenn sich der freigegebene Ordner auf einem PC mit einer Anmeldedomäne befindet domain. sudo mount -t cifs -o username=${USER},password=${PASSWORD},dom=${DOMAIN}, uid=<user>,gid=<group> //server-address/folder /mount/path/on/ubuntuEtwa so: Tatsächlich kann die Domain die Option "Benutzername" verwenden, aber denken Sie daran, dass Sie /anstelle von " `, like Benutzername = DOMAIN / Benutzer.Name" verwenden müssen.
João Portela
Ja das ist richtig. :-) Möglicherweise muss die Domäne oder Arbeitsgruppe (für ältere Windows-Versionen) über die Option "domain =" oder über den Benutzernamen angegeben werden, das ist ein guter Punkt. Und manchmal ist es sogar erforderlich, das zu verwendende Verschlüsselungsschema oder die zu verwendende CIFS-Version anzugeben. Aber all das war nicht Teil dieser Frage, also habe ich es beiseite gelassen. :-)
Huygens
2
Das ist genau das, was ich brauchte. Ich hatte einen Eintrag in / etc / fstab, um das Netzwerklaufwerk beim Start automatisch zu mounten. Ich konnte nicht an das Mount schreiben, also fügte ich hinzu, uid = <myUserID> für eine Zeile, die so aussieht://192.168.1.7/public /colmustang cifs username=<uname>,password=<upassword>,uid=<myUserID> 0 0
James
5
@ 71GA usernameist die Remote-Anmeldung zur Authentifizierung. Dies uidist die lokale Benutzer-ID, unter der Sie alle Dateien / Ordner ablegen möchten. Der Benutzername ist also von der Benutzer-ID entkoppelt. Der Benutzername ist die Anmeldung des Remotebenutzers, während die Benutzer-ID Ihre lokale Benutzer-ID ist. Beachten Sie, dass dies auch der Fall sein kann, wenn Ihr Server Samba ist und Sie sowohl auf dem Client als auch auf dem Server ein LDAP-Konto oder ein anderes zentrales Konto verwenden :-).
Huygens
1
@Tak Gute Frage. Siehe die bearbeitete Antwort.
Gilles
20

Ich habe den folgenden Befehl erfolgreich getestet:

sudo mount -t cifs -o username=[username],password=[password],uid=1001,gid=1001 //172.16.148.2/dfsgob01 /home/ususario/Documentos/benz-win
Ricardo Leon
quelle
19
Verwenden Sie "id -u <user>" und "id -g <user>", um die UID bzw. GID abzurufen.
nvd
3
Beachten Sie, dass Sie den Benutzernamen direkt verwenden können, wie inman mount.cifs
jstricker 24.04.17 um 17:57
2
Um zu vermeiden, dass das Kennwort neben dem Befehl geschrieben wird, lassen Sie die Kennwortoption während des Anrufs einfach weg. Anschließend werden Sie aufgefordert, das Kennwort einzugeben, damit es unsichtbar eingegeben werden kann.
ConceptDeluxe