允許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







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM