Cách tạo người dùng FTP chỉ với quyền truy cập / dir / cụ thể khi cài đặt Centos / linux


44

Vì vậy, tôi đang cài đặt VPS - CentOS Linux. Tôi có vsFTPd trên máy chủ. Tôi hiện có quyền truy cập SFTP vào máy chủ thông qua người dùng root của mình, nhưng hiện đang cố gắng tạo một người dùng mới có quyền truy cập FTP vào một thư mục cụ thể chỉ trên máy chủ, tôi đã thực hiện như sau:

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

Điều tôi đang cố gắng làm là tạo cho người dùng CHỈ có quyền truy cập /var/www/mydomain.com - Tôi quan sát thấy rằng người dùng đăng nhập chính xác vào đúng thư mục, tuy nhiên người dùng có thể duyệt "trở lại" các thư mục khác. Tôi muốn người dùng dính vào thư mục cụ thể và không thể "duyệt" lại .

Có ý kiến ​​gì không?

Tôi đã tìm thấy các bài viết khác nhau về chroot, nhưng chỉ đơn giản là không tìm ra nó để sử dụng nó trong các bước bao gồm ở trên.


digitalocean.com/community/tutorials/ Từ Bạn có thể làm theo cách này để giải quyết vấn đề của mình
Jack

Đối với những người đang sử dụng Ubuntu 18, đây là phiên bản dành riêng cho digitalocean.com/community/tutorials/ Khăn
Dung

Câu trả lời:


39

Nó khá đơn giản.

Bạn phải thêm tùy chọn sau vào tệp vsftpd.conf

chroot_local_user=YES

Tài liệu bên trong tệp cấu hình là tự giải thích:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

Điều này có nghĩa là, người dùng sẽ chỉ có quyền truy cập vào thư mục bạn đã cấu hình là HOME của người dùng. Tôi có một ví dụ về mục nhập mật khẩu của người dùng:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

Đặt thư mục chính của người dùng bằng lệnh sau

usermod -d /var/www/my.domain.example/ exampleuser

Lưu ý: Trong ví dụ của tôi, người dùng này cũng là người dùng hợp lệ cho một số tác vụ được lên lịch trong Linux. Nếu bạn không có nhu cầu này, vui lòng thay đổi vỏ của người dùng thành /sbin/nologinthay vì bash.


Chào người mới! Cảm ơn rất nhiều vì đã dành thời gian để trả lời tôi về điều này. Vì vậy, trong tệp vsftpd.conf của tôi, tôi đã thêm dòng sau "chroot_local_user = YES" - khi tôi hiểu nó, tôi có cần thêm một dòng tương tự như dòng bạn hiển thị cho người dùng của mình không? Phải thừa nhận tôi không hoàn toàn chắc chắn những gì để viết ở đó với ví dụ bạn cung cấp. "1001" vv đó là gì? Giả sử người dùng của tôi được gọi là: "im_a_linux_noob" và thư mục cho người dùng đó là: "/var/www/mydomain.com" - nó sẽ trông như thế nào?
dùng1231561

Và tôi có thể làm điều này mà không cần thêm bất kỳ bước nào về những gì tôi đã làm trong bài viết của mình không? Vì vậy, làm 1-8 và sau đó thêm những gì bạn mô tả nên làm gì?
dùng1231561

Chào. Ví dụ trên chỉ là một dòng (dĩ nhiên đã được sửa đổi) của /etc/passwdtệp, đại diện cho người dùng có tên upload_ftp, 1001: 1001 là Id người dùng và ID nhóm của anh ấy, / var / www / site là thư mục chính của người dùng (và tham số mà vsftpd đọc từ) và / bin / bash, shell. Có lẽ những gì còn thiếu trong trường hợp của bạn là một thư mục chính cho người dùng và nó có thể được giải quyết bằng lệnh sau : usermod -d /var/www/mydomain.com <username>. Chúc mừng :)

3
Yup cảm ơn rất nhiều. Một vấn đề mặc dù. Nó hoạt động tốt với loggin thông qua FTP thông thường, tuy nhiên khi tôi đăng nhập như SFTP - sau đó tôi có thể duyệt lại - có ý tưởng nào không?
dùng1231561

1
Chắc chắn bởi vì sftp đang được xử lý bởi máy chủ ssh của bạn chứ không phải bởi máy chủ ftp của bạn. Theo cách "thô thiển": SFTP = SSH + FTP; FTPS = FTP + SSL. Có một chủ đề về sftp ở đây, và tôi sẽ trích dẫn nó để sao chép chủ đề aviod ok? ;) unix.stackexchange.com/a/64541/34720

6

Sau khi bạn thay đổi cấu hình của bạn để bao gồm chroot_local_user=YES

Bạn có thể thay đổi trình bao của người dùng để /usr/sbin/nologinnếu mật khẩu bị rò rỉ, bạn sẽ giảm được một số rủi ro (cũng đặt thư mục chính). Shell cũng cần được liệt kê /etc/shellshoặc xác thực sẽ thất bại.

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d, --home HOME_DIR Thư mục đăng nhập mới của người dùng. Nếu tùy chọn -m được cung cấp, nội dung của thư mục chính hiện tại sẽ được chuyển sang thư mục chính mới, được tạo nếu nó chưa tồn tại.

-s, --shell SHELL Tên của vỏ đăng nhập mới của người dùng. Đặt trường này thành trống khiến hệ thống chọn vỏ đăng nhập mặc định.

https://security.appspot.com/vsftpd/FAQ.txt


4

Dưới đây là các bước để thiết lập người dùng và chỉ cho phép người dùng truy cập qua FTP (tức là không có SSH) và cũng giới hạn quyền truy cập vào một thư mục cụ thể (nhà người dùng) trên proftpd :

  1. Thêm người dùng mới: adduser newusername

  2. Đặt mật khẩu: passwd newusername

  3. Sửa đổi thư mục nhà của người dùng từ mặc định sang một thư mục mới:

    usermod -d /target/directory username

  4. Chỉnh sửa shellstập tin: vi /etc/shellsvà thêm /dev/nullvào cuối

  5. Sửa đổi newusernamemục trong passwdtệp: vi /etc/passwdđể thêm /./trước mục newusernameđể mục này trông như thế này:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    Chi tiết cho các bước 4 & 5 tại đây:

  6. Chỉnh sửa /etc/proftpd/proftpd.conftập tin và bỏ ghi chúDefaultRoot ~


-4

Đặt quyền thư mục gốc thành 711 với tài khoản gốc của bạn.


-4

Chạy lệnh này:

useradd -d ftp_user:chown 711 /etc/init.d/

2
Bạn nên xem xét mở rộng bài đăng của mình để có, ít nhất, một số giải thích hoặc tài liệu hữu ích.
HalosGhost

Đây là một câu trả lời khủng khiếp. Về cơ bản, bạn cung cấp cho người dùng ftp toàn quyền truy cập vào thư mục /etc/init.d/ - sự điên rồ hoàn toàn. 711 giải thích - permissions-calculator.org/decode/0711
Tisch
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.