Tạo người dùng vsftpd mới và khóa vào (chỉ định) thư mục nhà / đăng nhập


31

Tôi cần định kỳ cấp quyền truy cập tạm thời và giới hạn vào các thư mục khác nhau trên máy chủ linux của CentOS đã cài đặt vsftp.

Tôi đã tạo một người dùng bằng cách sử dụng useradd [user_name]và cung cấp cho họ mật khẩu bằng cách sử dụng passwd [password].

Tôi đã tạo một thư mục trong /var/ftpvà sau đó tôi liên kết thư mục này với thư mục mà tôi muốn giới hạn quyền truy cập.

Tôi cần phải làm gì khác để đảm bảo rằng khi người dùng này đăng nhập vào FTP, họ chỉ có quyền truy cập vào thư mục này?


Xin lỗi nhưng bạn đã bao giờ xem xét để kiểm tra vsftpd.conf chưa?
jirib

Vâng. Tôi có. Nó không cho tôi biết làm thế nào để hướng dẫn một người dùng cụ thể đăng nhập vào một thư mục cụ thể ...?
zigojacko

1
Chắc chắn rồi? tùy chọn chroot_list_enable ... Hoặc bạn có nghĩa là ghi đè thư mục khác với $ HOME?
jirib

1
Tôi muốn biết làm thế nào để khai báo một thư mục nhà cụ thể cho một người dùng cụ thể. Tôi đã kích hoạt chroot_list_enablevà tạo /etc/vsftpd/chroot_list. Tôi không biết phải làm gì tiếp theo.
zigojacko

Sau đó, usermod để thay đổi homedir của người dùng.
jirib

Câu trả lời:


44

Câu trả lời hoàn chỉnh đã giải quyết câu hỏi của tôi cho bất kỳ ai khác đang theo từng bước ...

Cài đặt vsftpdbằng cách sử dụng này như một hướng dẫn .

  • Tạo người dùng với useradd [user_name].
  • Tạo mật khẩu người dùng với passwd [user_name]. (Bạn sẽ được nhắc chỉ định mật khẩu).
  • Tạo thư mục FTP trong /var/ftpvà sau đó liên kết với thư mục 'home' mà bạn muốn chỉ định cho người dùng này mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Thay đổi thư mục nhà của người dùng với usermod -d /var/ftp/custom_name/ user_name

    Trong /etc/vsftpd/vsftpd.conf, đảm bảo tất cả những điều sau đây được đặt: -

    • chroot_local_user = CÓ
    • chroot_list_enable = CÓ
    • chroot_list_file = / etc / vsftpd.chroot_list

Chỉ liệt kê người dùng trong vsftpd.chroot_listtệp nếu bạn muốn họ có quyền truy cập đầy đủ vào bất kỳ nơi nào trên máy chủ. Bằng cách không liệt kê chúng trong tệp này, bạn đang nói hạn chế tất cả vsftpdngười dùng vào thư mục chính được chỉ định của họ.

Nói cách khác (để tham khảo): -

  1. có nghĩa là theo mặc định, TẤT CẢ người dùng được chọn ngoại trừ người dùng trong tệp ...
    • chroot_local_user = CÓ
    • chroot_list_enable = CÓ
  2. có nghĩa là theo mặc định, người dùng CHỈ trong tệp bị chroot ...
    • chroot_local_user = KHÔNG
    • chroot_list_enable = CÓ

Tại sao không thiết lập thư mục chính của người dùng đó trực tiếp /var/www/vhosts/domain.com/? Có một số vấn đề với điều đó (như bất kỳ rủi ro tiềm ẩn)?
leeme

2
Tôi mới phát hiện ra rằng vsftp dường như cấm cấp quyền cho người dùng ftp viết quyền ở cấp cao nhất của chroot vì lý do bảo mật (nhưng tôi không chắc chắn 100%). Vì vậy, đó có thể là một lý do để có "sự gián tiếp" này để cấp cho người dùng ftp quyền truy cập ghi vào một thư mục cụ thể trong khi không cho phép xem bất kỳ thư mục anh chị em nào (đó sẽ là trường hợp nếu bạn chỉ cần đặt nhà của mình lên một cấp tránh vấn đề được đề cập). (xem ubuntuforums.org/ trên )
leeme

2
@zigojacko người dùng của bạn chỉ nhìn thấy thư mục nhà được chỉ định của họ? Đối với tôi, điều này mặc định người dùng đến thư mục được chỉ định, nhưng, họ vẫn có thể thấy các thư mục khác và có thể rình mò mọi cách để root, mặc dù chỉ có quyền truy cập đọc.
GraehamF

1
Câu trả lời này, kết hợp với unix.stackexchange.com/questions/208960/ đã là câu trả lời đầy đủ cho tôi. Tôi đã kết thúc việc tạo một người dùng trong một nhóm và giới hạn quyền truy cập của nhóm vào thư mục mong muốn.
GraehamF

10

Đối với tôi nó không hoạt động ngay cả sau khi ở trên. Có một local_root đã được đặt thành một thư mục và bất cứ điều gì tôi làm, thư mục của người dùng đã không bị bỏ tù. Cuối cùng nó được làm việc chỉ sau khi thay đổi

chroot_local_user = CÓ

Và làm theo thủ tục

  1. vi /etc/vsftpd.conf
  2. Thêm dòng 'user_config_dir = / etc / vsftpd_user_conf' (không có dấu ngoặc kép)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi tên người dùng;
  6. Nhập dòng 'local_root = / srv / ftp / user_name'

Chỉ cần hai xu của tôi nếu có ai khác có cùng vấn đề.


Tôi đã làm theo thủ tục này để thay đổi thư mục gốc của vsftpd, bao gồm các bước bổ sung của gnaanaa. Thật không may, nó không hoạt động. Filezilla báo cáo 530 Đăng nhập không chính xác. Người dùng và mật khẩu theo quy trình trên (user_name). Tôi đã tạo một người dùng thử nghiệm ftp2 và đặt mật khẩu của nó. Đăng nhập bình thường Filezilla sử dụng tên người dùng và mật khẩu. Tôi cũng đặt thư mục gốc chỉ đọc và tạo thư mục cấp thấp hơn với quyền ghi theo bài đăng này Tôi đang sử dụng Ubuntu 16.04 nếu điều đó tạo ra sự khác biệt.
tim11g

Tôi đang sử dụng Ubuntu 16.04 nếu điều đó tạo ra sự khác biệt, @gnaanaa. Ngoài ra tôi nghĩ thật kỳ lạ khi không có thư mục ftp trong / var. Vì vậy, tôi đã phải tạo / var / ftp và sau đó / var / ftp / user_name. code<br/> Phản hồi: 220 (vsFTPd 3.0.3) <br/> Lệnh: USER ftp2 <br/> Trả lời: 331 Vui lòng chỉ định mật khẩu. <br/> Lệnh: PASS ***** <br/> Phản hồi : 530 Đăng nhập không chính xác. <br/> Lỗi: Lỗi nghiêm trọng: Không thể kết nối với máy chủ <br/>code
tim11g

Đầu tiên, hãy xem tại sao bạn không thể đăng nhập vào máy chủ. Bạn có thể gỡ lỗi sự cố chỉ với tù sau khi đăng nhập thành công. Chúc mừng.
gnaanaa

Có phải vsftp sử dụng một người dùng / mật khẩu khác so với các tài khoản trên máy không? Tôi phát hiện ra rằng mật khẩu smb phải được đặt riêng với smbpasswd -a. Liệu vsftpd có hoạt động theo cùng một cách không?
tim11g

Không, đó là tài khoản người dùng hệ thống. kiểm tra câu trả lời này: askubfox.com/questions/413677/vsftpd-530-login-inc chính xác
gnaanaa
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.