5. 创建ftp用户,设置为无shell登陆,报curl:(67)Access denied:530的错误分析

在学习鸟哥Linux私房菜基础篇的SELinux时,跟着操作却遇上了点问题,总结分析一下错误。

  • 问题复现
  1. root创建了一个nologin shell登陆的用户,并赋予密码
useradd -s /sbin/nologin ftptest
echo "myftp123" | passwd --stdin ftptest
  1. 使用这个账号访问ftp报错
curl ftp://ftptest:myftp123@localhost/

报错如下:

curl:(67)Access denied:530

  • 报错分析

/etc/shells 文件是当前系统所有可用 shell 的列表文件。应用程序通过读取它可以知道需要使用的 shell 是否有效。每行指定一个可用的 shell,且需要为绝对路径。

这个文件对于ftp程序来说,其中并没有找到/sbin/nologin的可用shell文件,那么将会拒绝更改。

  • 解决方法

添加nologin shell的文件路径于/etc/shells中。

/sbin/nologin
  • 参考文档:
  1. https://blog.csdn.net/weixin_44417500/article/details/120713790
  2. https://linux.cn/lfs/LFS-BOOK-7.7-systemd/chapter07/etcshells.html