我有vsftpd允许本地用户登录 ftp 的服务器。如何防止某些本地用户登录 shell 账户,而只允许登录 ftp 服务器(vsftpd)?
答案1
您应该使用虚拟用户,并注意它们之间的登录匹配
[vsftpd.conf]/etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd #look here
guest_enable=YES
guest_username=ftp #carefull
user_sub_token=$USER
local_root=/var/ftpserver/ #careful
chroot_local_user=YES
hide_ids=YES
syslog_enable=YES
file_open_mode=0666
local_umask=0022
[vsftpd]/etc/pam.d/vsftpd
auth required pam_pwdfile.so pwdfile /etc/vsftpd.passwd # htpasswd file
account required pam_permit.so
并创造htpasswd -c /etc/vsftpd.passwd username
答案2
答案3
我认为完全没有必要使用虚拟用户。普通用户就足够了。
如果 /etc/shells 中还没有此行,请添加一行:
/bin/false
对于您只希望能够使用 FTP 的用户,请编辑 /etc/passwd 并将他们的 shell(通常默认为 /bin/bash 或 /bin/sh)更改为 /bin/false
例如:
由此:
jdoe:x:1000:1000:John:/home/fbh:/bin/bash
对此
jdoe:x:1000:1000:John:/home/fbh:/bin/false
这样,该用户就只能使用 FTP 登录。