今天帮助已好友配置vsftpd,可能是长时间不用这个东西了,竟然这里个半天才把需求折腾完,
其实需求简单,就是使用系统账户登录,不可跳转目录,限制权限,只能上次不能下载。
懵逼一:
最开始配置sftp协议的时候,配置到Match user那个地方,也就是sftp协议下限制某一个用户的目录,遇到一个奇怪的报错,登录一直日志提示:
sshd[pid]: fatal: chroot into directory without nodev and either noexec or nosuid
估计一般人都没怎么见过,也提示的不明显,其实最后我也没弄明白意思,只是在https://www.suse.com/support/kb/doc/?id=7009112
这个网址的B项目得到了启发,最终通过修改chroot的目录解决,其实总结一下就是用户的目录上次目录必须是root属主,然后呢就是
你再定义match的时候 有个chroot路径不需要写到具体的用户目录,写到上一次即可。比如用户目录是/data/ftproot/user1,那么match下
ChrootDirectory配置到/data/ftproot即可,并且ftoroot目录必须root:root否则就是这个报错。
一个完整的match备份:
Subsystem sftp internal-sftp #这个不属于macth一部分,但是如果使用ssh隧道必须修改成这个。 #以下是一个match示范
Match user cdnok ChrootDirectory /opt/ftproot/ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
懵逼二:
系统账户无法登录,本地登录参数已经YES,但是使用ftp://ip 登录,一直提示你输入账号密码,实际情况是ftp账号密码是对的。
解决:
经过检查配置开启了chroot_list_enable=YES选项,大家可能都知道此选项的作用是定义限制不能切换目录的用户。
可能当时脑子短路了就认为配置完,所有用户默认就是不能切换目录了。造成死活登录不了,最后才发现如果开启了
此配置项目,那么与之配套的chroot_list_file=/etc/vsftpd/chroot_list,必须启动,必须手动简历这个文件,把你的账户
放进去,这样才算完整限制用户调整目录,2个必须一起使用。
懵逼三:
细化用户权限的时候,重启后直接无法访问。
解决:
经检查是个别权限关键字的问题,我也是在网上找了一个下载专用的权限:
此处备份:(英文逗号,不能有空格)
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST