Fork me on GitHub

允许FTP用户登录并禁止Shell登录的方法

  最近安装了vsftpd做FTP服务,发现系统用户的登录shell设置为/sbin/nologin,就无法使用FTP服务。网上资料说,vsftpd会为每个FTP登录用户去在/etc/shells中检查对应的登录shell,因此需要增加一行/sbin/nologin。但是我/etc/shells文件明明有/sbin/nologin。

[plain] view plain copy
  1. [root@localhost ~]# vsftpd -v  
  2. vsftpd: version 2.2.2  
  3. [root@localhost ~]# cat /etc/shells   
  4. /bin/sh  
  5. /bin/bash  
  6. /sbin/nologin  
  7. /bin/tcsh  
  8. /bin/csh  

    但是用户设置/sbin/nologin后,就登录不了,报错如下

[plain] view plain copy
  1. 500 OOPS: cannot change directory:/home/xxx  
  2. 500 OOPS: priv_sock_get_cmd  
  3. 远程主机关闭连接。  

    于是看看vsftpd产生的ftp用户的配置,也是/sbin/nologin,为什么他能登录呢?(我允许匿名用户登录),如下

[plain] view plain copy
  1. [root@localhost ~]# cat /etc/passwd | grep ftp  
  2. ftp:x:14:50:FTP User:/var/ftp/pub/:/sbin/nologin  

    发现唯一区别就是指定的主目录不一样,于是我把该用户的主目录/home/xxx换成/var/ftp/pub/,果然可以成功登录了!

 

参考资料:

1、http://www.linuxidc.com/Linux/2008-06/13712.htm






posted @ 2016-09-23 13:13  Anonymous-develop  阅读(7272)  评论(0编辑  收藏  举报

python自动化开发&研究 - 创建于 2016年1月10日

这是一位运维自动化开发工程师的个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

致力于自动化应用开发&研究工作,专注运维与前端开发,关注互联网前沿技术与趋势。


廖雪峰的博客 | 徐亮的博客 | 刘耀的博客 | python基础课程 | 我的svn | 我的个人导航首页