Giới hạn truy cập FTP chỉ vào / var / www với vsftpd


41

Tôi đang chạy vsftpd với tư cách máy chủ ftp trên linux (rasbian), tôi đăng nhập vào máy với tư cách người dùng root.

Tôi muốn vẫn bị khóa khi chỉ sử dụng / var / www, làm cách nào tôi có thể định cấu hình vsftpd conf để thực hiện nó?


1
Kiểm tra các chroot tùy chọn trong vsftpd.confvà tạo một người dùng riêng cho người dùng có homedir được đặt thành /var/www.
jirib

Câu trả lời:


65

Phương pháp 1: Thay đổi thư mục nhà của người dùng

Hãy chắc chắn rằng dòng sau tồn tại

chroot_local_user=YES

Đặt thư mục HOME cho người dùng /var/www/, nếu bạn muốn thay đổi cho người dùng hiện tại thì bạn có thể sử dụng:

usermod --home /var/www/ username

sau đó đặt quyền yêu cầu /var/www/

Cách 2: Sử dụng user_sub_token

Nếu bạn không muốn thay đổi thư mục Home của người dùng thì bạn có thể sử dụng:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

Về user_sub_token:

Tự động tạo thư mục chính cho mỗi người dùng ảo, dựa trên mẫu. Ví dụ: nếu thư mục chính của người dùng thực được chỉ định qua guest_username là / ftphome / $ USER và user_sub_token được đặt thành $ USER, thì khi đăng nhập thử nghiệm người dùng ảo, anh ta sẽ kết thúc (thường là chroot () 'ed) trong thư mục / ftphome / test. Tùy chọn này cũng có ảnh hưởng nếu local_root chứa user_sub_token.

Tạo thư mục và thiết lập quyền:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

Sau khi khởi động lại vsftpdvà kiểm tra thiết lập của bạn.

Mẫu đầu ra thành công:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.

2
Lưu ý rằng bạn có thể có một hậu tố sau $USERfor local_root, chẳng hạn như /home/$USER/ftp(sẽ chroot người dùng đến ftpthư mục con của thư mục nhà của họ).
Benoit Duffez 17/08/2015

Lưu ý các lưu ý trong vsftp FAQ liên quan đến chroot vào thư mục có thể ghi được khi người dùng đăng nhập. Điều này rất có thể xảy ra trong trường hợp đưa local_rootvào thư mục nhà thực tế của người dùng.
Thomas Urban

Nơi để xác nhận rằng "chroot_local_user = YES" tồn tại?
Một

4

Bạn có thể làm được việc này:

usermod --home /var/www/ username

5
Câu trả lời một đến hai dòng thường được coi là chất lượng thấp. Vui lòng xem xét mở rộng bài đăng của bạn với một số giải thích về những gì đề xuất của bạn cùng với các liên kết hoặc tài liệu đề xuất khả năng đề xuất của bạn để thực sự giải quyết vấn đề.
HalosGhost

2

Tôi đã sử dụng gợi ý của Rahul Patil ở trên:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

Nhưng tôi không thể hiểu tại sao tôi chỉ có thể đăng nhập với một người dùng. Sau đó, tôi thấy rằng chúng ta không thể chroot vào một thư mục gốc (đối với trường hợp này /home/$USER/www-data), có quyền truy cập ghi. Vì vậy, tôi loại bỏ quyền truy cập ghi bằng:

# chmod a-w /home/$USER/www-data

LƯU Ý: thay đổi $USERvới người dùng của bạn.


1

Kiểm tra các chroottùy chọn trong vsftpd.confvà tạo một người dùng riêng cho người dùng có homedir được đặt thành /var/www.


Tôi nhận thức rõ điều đó, tôi sẽ tạo một người dùng riêng. Tôi có lẽ nên thiết kế lại câu hỏi của tôi thì làm sao tôi có thể giới hạn một người dùng đến con đường riêng biệt chỉ
Badr Hari

Sử dụng sftp từ OpenSSH. Xem man sshd_config để biết nội bộ, sau đó 'ForceCommand' và xem 'ChrootDirectory'. OpenSSH mới hơn cũng đã thêm tùy chọn cho sftp-server để chuyển sang một đường dẫn cụ thể, do đó, kết hợp với ChrootDirectory bạn có thể làm: chroot -> / path -> Destination -> 'onlyhere' = / chroot / onlyhere
jirib
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.