sshfs mount, sudo được phép từ chối


53

Tôi đang sử dụng sshfsđể gắn kết một thư mục với một số dự án python qua ssh vào ~/thư mục của tôi .

$ mkdir -p ~/mount/my-projects
$ sshfs user@example.com:/home/user/my-projects ~/mount/my-projects

Tôi có thể thực hiện hầu hết các lệnh như mong đợi:

$ ls ~/mount/my-projects
some-python-project

Nhưng nếu tôi cố gắng làm bất cứ điều gì với sudonó, nó sẽ thất bại với sự cho phép bị từ chối:

$ sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied

Những gì tôi thực sự đang cố gắng thực hiện là kiểm tra tập lệnh cài đặt gói python trên máy cục bộ của mình:

$ cd ~/mount/my-projects/some-python-project
$ sudo python setup.py install

Câu trả lời:


93

Tôi tin rằng bạn cần sử dụng allow_othertùy chọn để sshfs. Để làm điều này, bạn nên gọi nó bằng sudo, như sau: -

sudo sshfs -o allow_other user@myserver:/home/user/myprojects ~/mount/myprojects

Không có tùy chọn này, chỉ người dùng đã chạy sshfs mới có thể truy cập mount. Đây là một hạn chế cầu chì. Thêm thông tin có sẵn bằng cách gõ man fuse.

Bạn cũng nên lưu ý rằng (ít nhất là trên Ubuntu) bạn cần phải là thành viên của nhóm 'cầu chì', nếu không, lệnh trên sẽ phàn nàn về việc không thể truy cập /etc/fuse.confkhi chạy mà không có 'sudo'.


2
Câu trả lời đầu tiên tốt!
slm

13
Xem thêm allow_roottùy chọn rootchỉ cho phép . Tuy nhiên, xin lưu ý rằng các tùy chọn đó bị hạn chế root theo mặc định trừ khi bạn thêm một user_allow_otherdòng vào /etc/fuse.conf.
Stéphane Chazelas

7

sshfslà một quá trình người dùng, vì vậy không cần phải chạy nó với sudo.

Nếu bạn chạy nó dưới dạng sudo và sử dụng xác thực khóa SSH, thì khóa đó sẽ được tìm kiếm bên dưới /root/.sshkhông phải dưới người dùng của bạn /home/myuser/.ssh.

Điều tương tự áp dụng cho ~/.ssh/configtập tin sshfscó khả năng sử dụng.

Nếu bạn có một ~/.ssh/configthích:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile ~/.ssh/id_rsa

sau đó bạn có thể gắn máy chủ từ xa của mình như một người dùng bình thường với:

sshfs remotehost: local_dir

Để chạy dưới quyền root, bạn có thể nối thêm -o IdentityFile /home/myuser/.ssh/id_rsalệnh 'thô' sshfshoặc tạo /root/.ssh/configvới đường dẫn đầy đủ tới khóa SSH của người dùng:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile /home/myuser/.ssh/id_rsa

Bây giờ sshfs remotehost: local_dircũng sẽ làm việc dưới quyền root.

Với .ssh/configvị trí của bạn, bạn có thể sao chép toàn bộ thư mục giữa các máy chủ với (từ xa đến cục bộ) scp -r remotehost:remotedir localdirhoặc (cục bộ sang từ xa) scp -r localdir remotehost:remotedir, do đó, đối với một thao tác một lần duy nhất, bạn thậm chí có thể không cần sshfs.

Nếu bạn sử dụng một đường dẫn từ xa tương đối như trong remotehost:remotedirthì remotedirsẽ tương đối với thư mục nhà của người dùng, tức remotehost:remotedirlà tương đương vớiremotehost:/home/myuser/remotedir


1

Điều giải quyết vấn đề cho tôi là thêm allow_othertùy chọn vào lệnh như vậy:

$ sshfs -o allow_other user@example.com:/home/user/my-projects ~/mount/my-projects

sau đó bạn có thể nhận được lỗi:

tùy chọn allow_other chỉ được phép nếu 'user_allow_other' được đặt trong /etc/fuse.conf để giải quyết phần đầu đó thành /etc/fuse.conf bằng trình soạn thảo văn bản yêu thích của bạn và bỏ ghi chú (xóa # phía sau) user_allow_other

Nếu điều đó giải quyết được vấn đề và bạn có thể chạy sshfsthành công, thật tuyệt! Nếu không, bạn nên thử thêm người dùng của mình vào nhóm cầu chì bằng lệnh này:

$ usermod -a -G mark fuse

và nếu nó dẫn đến lỗi nói nhóm cầu chì không tồn tại, bạn có thể dễ dàng tạo nhóm đó bằng cách:

$ sudo groupadd mynewgroup
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.