Mount cifs Network Drive: viết quyền và chown


99

Tôi có quyền truy cập vào một ổ đĩa mạng cifs. Khi tôi gắn nó vào máy OSX, tôi có thể đọc và viết từ đó.

Khi tôi gắn ổ đĩa vào Ubuntu, sử dụng:

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

Tôi không thể ghi vào ổ đĩa mạng, nhưng tôi có thể đọc từ nó. Tôi đã kiểm tra các quyền và chủ sở hữu của thư mục gắn kết, chúng trông giống như:

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

Tôi không thể thay đổi chủ sở hữu, vì tôi nhận được lỗi:

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

Khi tôi truy cập sâu hơn vào ổ đĩa mạng và thay đổi quyền sở hữu ở đó, tôi nhận được lỗi rằng tôi không có quyền thay đổi chủ sở hữu thư mục.

Tôi nên làm gì để kích hoạt quyền viết của mình?


Là hệ thống tập tin được liệt kê trong / etc / fstab? Nếu vậy, các mục có những lựa chọn?
Jenny D

3
Bạn cũng có thể sử dụng nopermtùy chọn gắn kết tương tự được nêu trong câu trả lời của tôi cho câu hỏi này: unix.stackexchange.com/a/375523/16287 . Điều này sẽ cung cấp cho tất cả người dùng đọc và ghi quyền truy cập vào mount CIFS.
Daniel

Câu trả lời:


137

Bạn đang gắn kết chia sẻ CIFS với quyền root (vì bạn đã sử dụng sudo), vì vậy bạn không thể viết như người dùng bình thường. Nếu Phân phối Linux và nhân của nó đủ gần đây để bạn có thể gắn kết chia sẻ mạng như một người dùng bình thường (nhưng trong một thư mục mà người dùng sở hữu), bạn sẽ có thông tin xác thực để ghi tệp (ví dụ: gắn thư mục dùng chung ở đâu đó bên dưới thư mục nhà, ví dụ như $HOME/netshare/. Rõ ràng, bạn sẽ cần phải tạo thư mục trước khi gắn nó).

Một cách khác là chỉ định ID người dùng và nhóm mà chia sẻ mạng được gắn kết nên được sử dụng, điều này sẽ cho phép người dùng cụ thể đó và nhóm có khả năng ghi vào chia sẻ. Thêm các tùy chọn sau vào mount của bạn : uid=<user>,gid=<group>và thay thế <user><group>tương ứng bởi người dùng và nhóm mặc định của riêng bạn, mà bạn có thể tìm thấy tự động bằng idlệnh.

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

Nếu máy chủ đang gửi thông tin quyền sở hữu, bạn có thể cần thêm forceuidforcegidcác tùy chọn.

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

nó làm việc cho tôi Nhưng chúng ta nên thêm rằng nếu thư mục dùng chung trong PC có miền đăng nhập, bạn nên thêm tùy chọn domain. Một cái gì đó như thế này: sudo mount -t cifs -o username=${USER},password=${PASSWORD},dom=${DOMAIN}, uid=<user>,gid=<group> //server-address/folder /mount/path/on/ubuntuTrên thực tế, tên miền có thể đi trong tùy chọn "tên người dùng", nhưng hãy nhớ rằng bạn phải sử dụng /thay vì `, like tên người dùng = DOMAIN / user.name`.
João Portela

Vâng đúng rồi. :-) Người ta có thể cần chỉ định miền hoặc nhóm làm việc (đối với phiên bản Windows cũ hơn) thông qua tùy chọn "domain =" hoặc qua tên người dùng, đó là một điểm tốt. Và đôi khi thậm chí cần phải chỉ định sơ đồ mã hóa hoặc phiên bản CIFS sẽ được sử dụng. Nhưng tất cả điều này không phải là một phần của câu hỏi này, vì vậy tôi đã bỏ nó qua một bên. :-)
Huygens

2
Đây chỉ là những gì tôi cần. Tôi đã có một mục trong / etc / fstab để tự động gắn ổ đĩa mạng khi khởi động. Tôi không thể ghi vào mount vì vậy tôi đã thêm, uid = <myUserID> cho một dòng giống như thế này://192.168.1.7/public /colmustang cifs username=<uname>,password=<upassword>,uid=<myUserID> 0 0
James

5
@ 71GA usernamelà đăng nhập từ xa để sử dụng để xác thực. Đây uidlà ID người dùng cục bộ mà bạn muốn ngủ trưa tất cả các tệp / thư mục. Vì vậy, tên người dùng được tách rời khỏi uid, tên người dùng là đăng nhập người dùng từ xa trong khi uid là id người dùng cục bộ của bạn. Lưu ý rằng đó có thể là điều tương tự nếu máy chủ của bạn là Samba và bạn sử dụng LDAP hoặc tài khoản tập trung khác trên cả máy khách và máy chủ :-).
Huygens

1
@Tak Câu hỏi hay. Xem câu trả lời được chỉnh sửa.
Gilles

20

Tôi đã thử nghiệm lệnh sau thành công:

sudo mount -t cifs -o username=[username],password=[password],uid=1001,gid=1001 //172.16.148.2/dfsgob01 /home/ususario/Documentos/benz-win

19
Sử dụng "id -u <user>" và "id -g <user> để nhận uid và gid tương ứng.
nvd

3
Lưu ý rằng bạn có thể sử dụng tên người dùng trực tiếp như được ghi trongman mount.cifs
jstricker

2
Để tránh ghi mật khẩu bên cạnh lệnh, chỉ cần bỏ qua tùy chọn mật khẩu trong khi gọi - một dấu nhắc sau đó sẽ yêu cầu nó để có thể nhập nó một cách vô hình.
conIGHTtdeluxe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.