Jquery中文网 www.jquerycn.cn
Jquery中文网 >  服务器技术  >  文件服务器  >  正文 openbsd下shell为nologin的系统用户不能登录vsftpd的解决方法

openbsd下shell为nologin的系统用户不能登录vsftpd的解决方法

发布时间:2014-07-20   编辑:www.jquerycn.cn
openbsd下shell为nologin的系统用户不能登录vsftpd的解决方法

OpenBSD下创建的ftp文件服务器,发现如下问题:
部分系统用户可以正常登录,有的则不可以。
 
那个配置文件用了好久了,不会有问题。首先想到的权限问题,目录与文件的权限设为755后,还是登不上。后来比较了一下这两类用户发现不能登录的用户,其shell全为nologin。
 
到网上找了个资料发现vsftpd会检测用户的shell是否登记于/etc/shells文件中,而OpenBSD默认的/etc/shells没有nologin的记录,因此解决方法如下:
echo "/sbin/nologin" >> /etc/shells
登录测试成功。
 
附 我的配置文件: 
在OpenBSD上安装vsftp很简单,pkg_add 就行了。下面来看看vsftpd的配置文件,路径是/etc/vsftpd.conf,我把大部分指令列出来,其中一些默认的是没有列在文件中的要自己添加,还有一些不常用到指令可以看帮助文件。
 

复制代码 代码如下:
### Server settings
listen=YES                     #采用守护程序的形式启动
background=YES                 #启动后是否在后台运行
nopriv_user=_vsftpd             #默认以_vsftpd为此服务的执行时使用的用户身份。
secure_chroot_dir=/var/empty    #当vsftpd守护进程不需要访问文件系统时(即无登录用户时),这个目录将被作为一个安全的容器,vsftpd不能对它有读写权限。
#listen_address=               #vsftpd监听那个接口的ip,默认是所有
port_enable=YES                #打开主动模式
pasv_enable=YES                #打开被动模式
#pasv_addr_resolve=YES|NO      #在被动模式下是否可以使用域名来代表外网IP,服务器会去解析具体IP地址的。
#pass_address=                 #可以填IP地址,如果上一项是YES的话这里可以填上服务器的域名,如果服务器是在内网的,则填上服务器外网IP(这点很重要)。
listen_port=21
connect_from_port_20=YES       #在PORT模式下是否使用默认的20端口作为传输端口。
#ftp_data_port=20              #若在PORT模式下不使用默认的20数据端口,则在此处设定端口。
pasv_max_port=65400            #这项和下一项用于限定被动模式可以使用的数据端口范围。
pasv_min_port=65535
accept_timeout=60              #接受建立联机的超时设定,单位秒。
connect_timeout=60             #客户端空闲的超时时间。
data_connection_timeout=300    #空闲的数据连接的超时时间。
idle_session_timeout=300      #空闲(发呆用户)会话的超时时间
#ftpd_banner= FTP server      #此参数定义了login banner string(登录欢迎语字符串)
#banner_file=                  #此项指定一个文本文件,当使用者登入时,会显示此该文件的内容,通常为欢迎话语或是说明。
ascii_download_enable=YES      #vsftpd默认是禁用ascii模式传输的。
ascii_upload_enable=YES
max_clients=0                  #最大并发连接数,0为不限制   
max_login_fails=3              #最多可重试次数
max_per_ip=0                   #每ip最大连接数,0为不限
### secrue settings
#pam_service_name=vsftpd       #VSFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd,但在OpenBSD中是没有PAM的。
#ls_recurse_enable=NO          #允许使用"ls -R" 指令,在一个大型FTP站点的根目录下使用"ls - R"会消耗大量系统资源
hide_ids=YES                   #是否隐藏文件的所有者和组信息
write_enable=YES               #控制是否允许用户使用任何可以修改文件系统的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE等。
#deny_file={*.mp3,*.avi}       #限制上传下载这些文件
#hide_file={.*,*.hide}         #隐藏这些文件
#lock_upload_files=NO          #如果设成YES的话,上传时续传可能会出问题。             
#### vsftpd的用户分为三类:匿名用户、本地用户(local user)以及虚拟用户(guest)。
###anonymous' settings
#anonymous_enable=YES           #允许匿名用户登录
#ftp_username=ftp               #匿名用户映射到该用户名,即匿名用户在系统中以该用户身份出现
#no_anon_password=NO            #控制匿名用户登录时是否需要密码
#deny_email_enable=NO           #拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户
#banned_email_file=/etc/vsftpd.banned_emails
#secrue_email_list_enable=YES   #匿名用户必需提供了email_password_fiel指定文件中的密码才能登录
#email_password_file=/etc/vsftpd.email_passwords
#anon_root=/var/ftp/            #设定匿名用户的根目录,但这个目录是不能让匿名用户有写入权限的,必须自己在/var/ftp目录中一个目录,让匿名这个目录有写入权限,匿名用户才能上传。
#anon_mkdir_write_enable=NO     #FTP匿名用户必需对新目录的上层目录拥有写权限
#anon_other_write_enable=NO     #控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等
#anon _upload_enable=NO         #匿名用户要能上传文件,还需要两个条件:一,write_enable参数为YES;二,在文件系统上,FTP匿名用户对某个目录有写权限。
#anon_world_readable_only=YES   #控制是否只允许匿名用户下载可阅读文档,NO则允许匿名用户浏览整个服务器的文件系统。
#chmod_enable=YES               #是否允许更改文件的权限。
#chown_uploads=NO               #是否修改匿名用户所上传文件的所有权。
#chown_username=                #指定拥有匿名用户上传文件所有权的用户,不推荐用root
#anon_umask=077                 #匿名用户新增文件的umask 数值,默认值为077
#anon_max_rate=                 #设定用户速率单位是字节
 
### local user's settings
local_enable=YES                #控制vsftpd所在的系统的用户是否可以登录vsftpd。
#local_root=                    #定义所有本地用户(虚拟用户的配置文件也适用)的根目录。当本地用户登入时,将进入到此目录下.
#user_config_dir=               #定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格式与vsftpd.conf格式相同。
userlist_enable=YES             #此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表
#userlist_deny=NO                #决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器,YES为禁止。
userlist_file=/etc/vsftpd.user_list #指出userlist_enable选项生效后,被读取的包含用户列表的文件,而除此以外的其他本地用户都能登录。
chroot_local_user=YES           #将本地用户限制在自家目录中,NO则不限制,这个选项会影响到chroot_list_file的作用。
#passwd_chroot_enable=NO        #当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置基于passwd文件中指定的目录
chroot_list_enable=YES          #允许读取chroot_list_file指定的文件,文件中的用户将不会被限制在自家目录中,如果chroot_local_user是NO的话,这些用户则会被限制。
chroot_list_file=/etc/vsftpd.chroot_list 
local_umask=022                 #地用户新增档案时的umask 数值。默认值为077
local_max_rate=0           
### virtual user's settings
#guest_enable=NO                #所有的非匿名登入者都视为guest,这里开启了虚拟用户功能
#guest_username=ftp             #定义VSFTPD的guest用户在系统中的用户名
#virtual_use_local_privs=NO     #虚拟用户使用与本地用户相同的权限,当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限
### log settings
#xferlog_enable=YES|NO          #控制是否启用一个日志文件,用于详细记录上传和下载
#vsftpd_log_file=/var/log/vsftpd.log  #日志文件
#log_ftp_protocol=YES|NO        #当此选项激活后,所有的FTP请求和响应都被记录到日志中。提供此选项时,xferlog_std_format不能被激活
#xferlog_std_format=YES|NO      #控制日志文件是否使用与wu-ftp相同的的格式
#xferlog_file=/var/log/xferlog  #当使用xferlog_std_forma时,这个选项设定该种记录传输日志的文件名

您可能感兴趣的文章:
openbsd下shell为nologin的系统用户不能登录vsftpd的解决方法
vsftpd 安装配置详细教程
Linux VSFTP 配置详解
vsftpd下创建虚拟用户的方法
vsftpd+pam创建虚拟用户登录FTP服务器
CentOS 5.3建立Vsftpd虚拟用户
centos vsftpd 安装配置详解
CentOS 5.5下FTP安装配置详解
我的vsftpd安装笔记
Linux下使用vsftpd快速搭建安全的FTP服务器

[关闭]