Zamontuj dysk sieciowy cifs: uprawnienia do zapisu i chown

99

Mam dostęp do dysku sieciowego cifs. Po zamontowaniu pod moim komputerem OSX mogę czytać i zapisywać zi do niego.

Kiedy montuję dysk w Ubuntu, używając:

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

Nie mogę pisać na dysk sieciowy, ale mogę z niego czytać. Sprawdziłem uprawnienia i właściciela folderu montowania, wyglądają one tak:

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

Nie mogę zmienić właściciela, ponieważ pojawia się błąd:

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

Kiedy schodzę głębiej na dysk sieciowy i zmieniam tam własność, pojawia się błąd, że nie mam uprawnień do zmiany właściciela folderu.

Co powinienem zrobić, aby aktywować moje uprawnienia do zapisu?

Vincent
źródło
Czy system plików jest wymieniony w / etc / fstab? Jeśli tak, jakie opcje ma wpis?
Jenny D.
3
Możesz również użyć nopermopcji montowania, podobnie jak podano w mojej odpowiedzi na to pytanie: unix.stackexchange.com/a/375523/16287 . Zapewni to wszystkim użytkownikom dostęp do odczytu i zapisu do montażu CIFS.
Daniel

Odpowiedzi:

137

Montujesz udział CIFS jako root (ponieważ używałeś sudo), więc nie możesz pisać jak zwykły użytkownik. Jeśli dystrybucja Linuksa i jego jądro są na tyle aktualne, że możesz zamontować udział sieciowy jako zwykły użytkownik (ale w folderze, który użytkownik posiada), będziesz mieć odpowiednie poświadczenia, aby zapisać plik (np. Zamontować folder współdzielony gdzieś pod twoim katalog domowy, na przykład $HOME/netshare/. Oczywiście, musisz go utworzyć przed zamontowaniem).

Alternatywą jest określenie identyfikatora użytkownika i grupy, którego powinien używać zamontowany udział sieciowy, umożliwiłoby to określonemu użytkownikowi i potencjalnie grupie pisanie do tego udziału. Dodaj następujące opcje do swojego mounta : uid=<user>,gid=<group>i zamień <user>i <group>odpowiednio przez własnego użytkownika i grupę domyślną, które możesz znaleźć automatycznie za pomocą idpolecenia.

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

Jeśli serwer wysyła informacje o własności, konieczne może być dodanie opcji forceuidi 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
źródło
zadziałało dla mnie! Powinniśmy jednak dodać, że jeśli folder współdzielony znajduje się na komputerze z domeną logowania, należy dodać opcję domain. Coś takiego: sudo mount -t cifs -o username=${USER},password=${PASSWORD},dom=${DOMAIN}, uid=<user>,gid=<group> //server-address/folder /mount/path/on/ubuntuW rzeczywistości domena może przejść w opcji „nazwa użytkownika”, ale pamiętaj, że musisz użyć /zamiast `, like nazwy użytkownika = DOMENA / nazwa.użytkownika`.
João Portela,
Tak, to jest poprawne. :-) Konieczne może być określenie domeny lub grupy roboczej (dla starszej wersji systemu Windows) za pomocą opcji „domain =” lub nazwy użytkownika, to dobry punkt. Czasami konieczne jest nawet określenie schematu szyfrowania lub używanej wersji CIFS. Ale to wszystko nie było częścią tego pytania, więc odłożyłem to na bok. :-)
Huygens,
2
Właśnie tego potrzebowałem. Miałem wpis w / etc / fstab, aby automatycznie zamontować dysk sieciowy podczas uruchamiania. Nie mogłem pisać na wierzchowcu, więc dodałem uid = <myUserID> dla linii, która wygląda tak://192.168.1.7/public /colmustang cifs username=<uname>,password=<upassword>,uid=<myUserID> 0 0
James
5
@ 71GA usernameto zdalne logowanie do uwierzytelniania. Jest uidto lokalny identyfikator użytkownika, który chcesz usunąć wszystkie pliki / foldery. Więc nazwa użytkownika jest oddzielona od identyfikatora użytkownika, nazwa użytkownika jest zdalnym loginem użytkownika, podczas gdy identyfikator użytkownika jest lokalnym identyfikatorem użytkownika. Pamiętaj, że może być tak samo, jeśli twoim serwerem jest Samba i korzystasz z LDAP lub innego scentralizowanego konta na kliencie i serwerze :-).
Huygens,
1
@Tak Dobre pytanie. Zobacz edytowaną odpowiedź.
Gilles
20

Testowałem następujące polecenie:

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
źródło
19
Użyj „id -u <użytkownik>” i „id -g <użytkownik>, aby uzyskać odpowiednio identyfikator UID i
GID
3
Zauważ, że możesz użyć nazwy użytkownika bezpośrednio, jak udokumentowano wman mount.cifs
jstricker 24.04.17
2
Aby uniknąć wpisywania hasła obok polecenia, po prostu pomiń opcję hasła podczas połączenia - pojawi się monit o podanie hasła, aby można je było wpisać niewidocznie.
conceptdeluxe