全栈工程师开发手册 (作者:栾鹏)
架构系列文章
ubuntu16.04安装启动ftp
sudo apt-get install vsftpd
ftp的配置文件在
/etc/vsftpd.conf
可以使用下列命令来打开,关闭,重启ftp服务
sudo /etc/init.d/vsftpd start
sudo /etc/init.d/vsftpd stop
sudo /etc/init.d/vsftpd restart
使用下列命令,可以看到系统中多了ftp用户组和ftp用户
cat /etc/group
cat /etc/passwd
ftp服务器的目录位置在 /srv/ftp, 这也是匿名用户访问时的根目录。
在浏览器中输入ftp://192.168.2.238
会弹出如下界面,输入本机的账号密码,可以登录,不过这种方式登录的根目录为该用户的根目录,也就是home/luanpeng/目录
这个表明已经开启了ftp服务,但是未开启匿名登录。
修改配置文件
编辑/etc/vsftpd.conf文件:
// 允许匿名用户登录
anonymous_enable=YES
// 允许本地用户登录
local_enable=YES
// 开启全局上传
write_enable=YES
// 允许匿名用户上传文件
anon_upload_enable=YES
// 充许匿名用户新建文件夹
anon_mkdir_write_enable=YES
//修改vsftpd的默认根目录
local_root=/media/ftp/pub
chroot_local_user=YES
anon_root=/var/www/html/
local_root 表示本地用户登录后的根目录,也就是非匿名,而是输入用户名和密码登录进入的,这里顺便说一下ftp登录的格式
ftp://username:passwd@localhost
anon_root anonymous用户,即匿名用户访问的主目录
但是这时候可能会出现以下报错:
[root@localhost pub]# lftp localhost
lftp localhost:~> ls
ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable anonymous root
原因还是权限设置问题:
是ftp默认主目录权限设置不对,我这里报这个错误是因为/media/ftp设置权限为777,/media/ftp/pub设置权限也为777。正确的权限设置是将/media/ftp权限设置为755,chmod 755 /media/ftp后重启ftp服务就ok了。
另:
如果你是默认的ftp目录出现此问题,那一定是这个/home/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;是您运行了chmod 777 /home/ftp所致;如果没有ftp用户这个家目录,当然您要自己建一个;
如下FTP用户的家目录是不能针对所有用户、用户组、其它用户组完全开放;
[root@localhost ~]# ls -ld /home/ftp
drwxrwxrwx 3 root root 4096 2005-03-23 /home/ftp
修正这个错误,应该用下面的办法;
[root@localhost ~]# chown root:root /home/ftp
[root@localhost ~]# chmod 755 /home/ftp
有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/home/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了;没有什么难的;
vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的FTP服务器了,对不对?