Chỉ đọc quyền cho người dùng sftp trong thư mục cụ thể


10

Tôi muốn tạo người dùng SFTP cụ thể sẽ có quyền chỉ đọc tất cả các thư mục và thư mục con /var/www/vhosts. Bất kỳ trợ giúp về điều này?

Câu trả lời:


11

Các hệ thống Unix cung cấp chrootlệnh cho phép bạn đặt lại /người dùng vào một số thư mục trong hệ thống phân cấp hệ thống tệp, nơi họ không thể truy cập các tệp và thư mục "cao cấp".

Tuy nhiên, trong trường hợp của bạn, nó sẽ thích hợp để cung cấp một chroot ảo được triển khai bởi dịch vụ shell từ xa. sftp có thể được cấu hình dễ dàng để hạn chế người dùng cục bộ trong một tập hợp con cụ thể của hệ thống tập tin.

do đó, trong trường hợp của bạn, bạn muốn chrootgiả sử foongười dùng vào /var/www/vhosts/thư mục.

Bạn có thể đặt thư mục chroot cho người dùng của mình để giới hạn chúng vào thư mục con /var/www/vhosts/như vậy trong /etc/ssh/sshd_config;

Tạo người dùng foobằng mật khẩu

sudo useradd foo
sudo passwd foo

Tạo nhóm chỉ SFTP

$ sudo groupadd sftp_users 

Thêm vào một người dùng foocho nhóm chỉ SFTP

$ sudo usermod -G sftp_users foo 

Thay đổi chủ sở hữu, vì quyền đọc / ghi

sudo chown root.root /var/www/vhosts/

Thêm quyền

sudo chmod 755 /var/www/vhosts/

Biên tập /etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

Nhận xét và thêm một dòng như dưới đây

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Thêm vào cuối cùng

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www/vhosts/
  ForceCommand internal-sftp

(LƯU Ý: Matchcác khối cần ở END của sshd_configtệp.)

Khởi động lại sshdịch vụ

sudo service ssh restart

Với cenfiguration này, bạn có thể ssh vào thư mục ubuntuvà nhận tệp. Không thể puthoặcdelete

Để sftp trong thư mục bên phải chỉnh sửa /etc/passwd. Thay đổi dòng để người dùng footrông như thế này

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

Điều này sẽ thay đổi foothư mục nhà người dùng thành thư mục máy chủ sftp của bạn.


Vì vậy, tôi đã thêm vào Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no sshd_config và tạo người dùng và nhóm như bạn đã làm nhưng người dùng foocó quyền đối với tất cả các thư mục :(
Delirium

@Delirium xem câu trả lời được cập nhật của tôi
Rahul

Cảm ơn bạn rất nhiều cho asnwer của bạn. Nhưng phải có một số lỗi .. Tôi đã thêm Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftpnhưng có lỗi khi tôi muốn khởi động lại ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Delirium

2
@Delirium Tôi đã đề cập rõ ràng để đặt Match.....phần ở KẾT THÚC của tệp. Đặt mã đó vào cuối tập tin và khởi động lại nó.
Raul

1
Xin lỗi vì đôi mắt mù của tôi, nhưng nó hoạt động, vì vậy thực sự cảm ơn bạn.
Mê sảng
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.