Thay đổi quyền ghi cho SFTP bị từ chối đăng nhập


14

Tôi đã tìm hiểu trên nhiều trang web và diễn đàn về cách thiết lập người dùng SFTP bị bỏ tù vào một thư mục nhất định bằng CHROOT. Dưới đây là các bước tôi đã làm theo nhưng dường như tôi không thể có được quyền ghi.

Thiết lập

sshd_config

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


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

Tạo thư mục

mkdir /var/www/sites

Tạo người dùng và nhóm

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

Quyền và quyền sở hữu

chown root:root /var/www
chmod 755 /var/www/sites

Bây giờ với các cài đặt này, người dùng tải lên có thể SFTP vào thư mục chính nhưng không thể ghi vào thư mục.

Có 2 lỗi điển hình xảy ra, tôi không thể đăng nhập hoặc tôi không có quyền ghi.

Lỗi đăng nhập

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

Tôi đang mâu thuẫn khi cố gắng tìm ra điều này và nếu có ai có thể chỉ cho tôi đi đúng hướng tôi sẽ đánh giá rất cao nó.

Cảm ơn bạn.

Câu trả lời:


16

Tìm ra giải pháp. Người dùng bị bỏ tù /var/www/sites. Sau đó tôi đã tạo một thư mục khác /var/www/sites/site1.

Tôi sử dụng:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

Điều này cho phép thư mục chính có quyền đăng nhập chính xác và sau đó có thể ghi vào thư mục tiếp theo.

Nếu người dùng cần quyền truy cập ghi /var/www/sites, thì bạn phải bỏ tù người dùng /var/wwwroot:rootquyền sở hữu và quyền 755. Sau đó, bạn cần cấp /var/www/sitesquyền sở hữu root: (nhóm của bạn) và quyền 775.


1

Có lẽ giải pháp lớn nhất là:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

Thêm người dùng:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

Sau đó, đối với mỗi người dùng bạn đã tạo, hãy thêm thẻ ssh như thế này: (bạn cũng có thể sử dụng chỉ thị "Nhóm đối sánh" như trong ví dụ của bạn thay vì "Đối sánh người dùng")

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Vì vậy, bạn có thể quản lý tất cả người dùng bạn cần trong một môi trường chroot.

Hth, Fabrizio


Re khối mã cuối cùng của bạn: Matches hỗ trợ nhiều mục tiêu trong các danh sách được phân tách bằng dấu phẩy, vì vậy chúng tôi có thể đơn giản hóa / sắp xếp rất nhiều bằng cách có một bộ ghi đè cho cả hai người dùng, theo tiêu đềMatch User dev1,dev2
underscore_d

1
Vậy làm thế nào để bạn thiết lập nó để chúng bị khóa vào thư mục mà chúng có quyền truy cập đọc / ghi?
Kevin B đốt cháy
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.