Quyền viết tắt của người dùng SFTP


10

Tôi có một thiết lập với người dùng chỉ sftp:

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Tôi nhận được thông báo sau trong safe.log:

fatal: bad ownership or modes for chroot directory

Với từ khóa đối sánh, có một số nội dung bảo mật với nó ... các thư mục cần được sở hữu bởi root và các thư mục cần phải là chmod 755 (drwxr-xr-x). Vì vậy, nó khiến người dùng không thể có quyền ghi vào các thư mục, nếu nó chỉ có thể ghi vào thư mục gốc của người dùng và được đặt thành không thể ghi cho các nhóm do bảo mật của ssh.

Ai đó biết về một công việc tốt xung quanh?


Làm chrooted người dùng sở hữu của họ ChrootDirectory? Họ có thể truy cập nó?
John WH Smith

Câu trả lời:


2

Tôi có cài đặt tương tự trên máy chủ của chúng tôi. Chúng tôi sử dụng cùng một cấu hình của SSHD. Thư mục nhà của người dùng được sở hữu bởi root và trong đó có các thư mục documentspublic_htmlthuộc sở hữu của người dùng tương ứng. Người dùng sau đó đăng nhập bằng SFTP và ghi vào các thư mục đó (không trực tiếp vào nhà). Vì SSH không được phép cho họ, nên nó hoạt động hoàn hảo. Bạn có thể điều chỉnh thư mục nào sẽ được tạo cho người dùng mới trong / etc / skel / (ít nhất là trong openSUSE, tôi không quá quen thuộc với các bản phát hành khác).

Một khả năng khác sẽ là ACL ( tài liệu openSUSE ) - nó có thể thêm quyền ghi cho người dùng tương ứng cho thư mục chính của mình.


1
Đối với tôi, trên Debian Jessie (8.10), đặt ACL trên nhà của người dùng không hoạt động. Khi người dùng cố gắng đăng nhập bằng SFTP, họ sẽ nhận đượcpacket_write_wait: Connection to 10.0.0.42 port 22: Broken pipe
Drew Chapin

7

Chúng tôi đã tìm thấy một cách giải quyết gần đây như sau:

/ etc / ssh / sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

quyền thư mục:

root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*

Bây giờ /homeđáp ứng các yêu cầu cho ChrootDirectoryvà không thể được liệt kê bởi người dùng bị hạn chế, nhưng sftponlyngười dùng sẽ không thể đăng nhập nếu thư mục chính của họ được thiết lập như bình thường ( /home/$LOGNAME): trong môi trường chroot thư mục nhà của họ không ở bên trong /homemà trực tiếp bên dưới gốc ( /).

cách giải quyết 1

Đặt nhà của người dùng bị hạn chế theo cách họ xuất hiện dưới chroot:

root@server:~ # usermod -d /username username

báo trước 1

Nếu bất kỳ người dùng không bị hạn chế hoặc một số tập lệnh quản trị nào sử dụng mở rộng dấu ngã của bash như ~usernamenó sẽ mở rộng đến /usernamebây giờ, điều đó không có nghĩa là gì.

Ngoài ra, quản trị viên tạo sftponlyngười dùng phải nhớ sử dụng nhà không mặc định. Có thể giải quyết với một kịch bản. Mà quản trị viên phải nhớ để sử dụng.

cách giải quyết 2

Đây là một thay thế cho cái trước mà chúng tôi đã sử dụng:

root@server:~ # ln -s . /home/home

Đó là tạo một liên kết tượng trưng bên trong /homeđến tên riêng của nó. Bây giờ dưới chroot /home/usernametrỏ đến cùng thư mục như không có chroot. Đối với người dùng bị hạn chế đăng nhập bằng sftp, nó sẽ xuất hiện dưới dạng /username. Thư mục này có thể ghi cho chủ sở hữu của nó (người dùng bị hạn chế). Người dùng bị hạn chế không thể liệt kê thư mục gốc hoặc thư mục gốc của bất kỳ anh chị em nào theo tên.

Điều duy nhất đặc biệt về sftponlyngười dùng là sự tham gia của họ trong sftponlynhóm. Chúng tôi thấy việc giải quyết dễ dàng hơn so với cách giải quyết 1.

báo trước 2

  1. Bạn không thể có người dùng có tên 'nhà' với một thư mục nhà /home/home
  2. Bạn phải cẩn thận với các tập lệnh đi qua /homehệ thống phân cấp và theo các liên kết tượng trưng.

Xin chào artm hoặc bất kỳ độc giả nào khác, tôi biết đây là một bài viết cũ nhưng bạn có thể giúp tôi hiểu cách giải quyết 2 không? Tôi có một người dùng (ftpuser) cần phải vào tù thư mục chính của họ (/ home / ftpuser /), điều này tôi có thể đạt được nhưng / home / ftpuser tất nhiên phải có 755. Tôi cần ftpuser để có thể tạo các thư mục nad trong thư mục chính của họ. Tôi cần tạo liên kết tượng trưng nào và giá trị của ChrootDirectory của tôi là gì?
Blatant

4

Bạn cần tạo một cấu trúc bên trong thư mục chính của người dùng, như các thư mục vào và ra. Những thư mục đó phải thuộc sở hữu của người dùng và ở đó anh ta sẽ có thể đặt và lấy tệp.


0

Bạn nên tạo cấu trúc thư mục sau:

/Người dùng gia đình

/ home / user / home / user <- thư mục thực sự mà người dùng sẽ có quyền truy cập

Tùy chọn:

/home/user/.ssh/authorized_keys <- nếu bạn muốn xác thực bằng khóa chung


0

Để tham khảo phần 'quyền thư mục' trong câu trả lời từ @artm (mà tôi vừa kiểm tra) .. Tôi đã tìm thấy:

root@server:~ # chmod 111 /home <- Does not work

Nó không cho phép kết nối sftp hoạt động trên Ubuntu với chỉ thực thi quyền trên mọi thứ, ví dụ 111.

Tôi thấy rằng:

root@server:~ # chmod 555 /home

Hoạt động với kết nối với sftp với các quyền Đọc và Thực thi, ví dụ như 555. Không chắc chắn liệu debian so với các hương vị khác có khác không, nhưng đó là những gì hoạt động trên các bản cài đặt Ubuntu của tôi.


0

Khi bạn tạo người dùng, bạn phải đặt quyền sở hữu bằng chownmọi thư mục cho mọi người dùng.

Ví dụ:

sudo chown usertest:groupsftp /home/rootsftp/usertest
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.