最近裝了個Ubuntu服務器,需要創建專用的ftp用戶,為了安全要禁止ftp用戶登錄shell。按照在freebsd的操作習慣,我把ftp用戶的shell設定為/usr/bin/nologin。豈料該用戶居然無法登錄ftp,把shell改成/bin/bash後,ftp又能登錄了。難道不能禁止登錄。網上一遍,解決方法居然很多,包括禁止22端口、設置/etc/hosts.deny或者/etc/hosts.allow等。然而這些方法都有不少局限性,最後發現原因是/usr/bin/nologin不在/etc/shells列表內,ftp登錄時要檢查該用戶的shell設定是否正確,我把shell強行改成不存在的/usr/bin/nologin,結果就出錯了。
解決方法:修改/etc/shells,在shell列表中添加一行/usr/bin/nologin。把ftp用戶的shell改為/usr/bin/nologin。