租用了服务器,挂接了硬盘,头几天还在自己有台不断电的网络电脑的新奇和兴奋中,这种感觉不亚于自己第一次拥有一台苹果笔记本时的感觉。
没有有事没事就登陆操作一下,其实主要是ls一下,没什么实际工作 :b
作为开发和试运营的网站环境,要安装的组件太多了,一个一个来吧,觉得还是先要从ftp入手,这样至少可以上传备份资料。
安装vsftpd软件
sudo apt-get install vsftpd
创建虚拟账户
安装支持软件:
sudo apt-get install db-util //db-util 用于生成认证文件,不同的ubuntu版本可能该软件版本不一样
创建vsftpd的虚拟用户口令的文本文件:
vi /etc/vsftpd_account.txt
奇数行为用户名。偶数行为密码,上面建立了密码为admin的admin用户,支持创建多个用户,每个用户增加两行配置即可
内容为:
///////////////////////////////////////
ftpusername
password123
///////////////////////////////////////
建立虚拟用户口令库文件
db_load -T -t hash -f /etc/vsftpd_account.txt /etc/vsftpd_account.db
chmod 600 /etc/vsftpd_account.db
因为需要pam_userdb.so这个库但是配置的路径下没有,所以通过连接解决路径下找不到该库的问题
sudo ln -s /lib/x86_64-linux-gnu/security/pam_userdb.so /lib/security/pam_userdb.so
建立虚拟用户所需的PAM配置文件
vi /etc/pam.d/vsftp.vu
内容为:
///////////////////////////////////////
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_account
account required /lib/security/pam_userdb.so db=/etc/vsftpd_account
///////////////////////////////////////
创建账户并制定用户路径
useradd -d /appdata/ftp virtual_user
chmod 700 /appdata/ftp
配置vsftpd
vi /etc/vsftpd.conf
配置文件(去掉了注释说明部分):
///////////////////////////////////////
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ftpd_banner=Welcome to APPCOMB FTP service.
chroot_local_user=YES
guest_enable=YES
guest_username=virtual_user
user_config_dir=/etc/vsftpd_user_conf
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftp.vu
rsa_cert_file=/etc/ssl/private/vsftpd.pem
///////////////////////////////////////
vsftpd服务操作:
启动 sudo service vsftpd start
重启 sudo service vsftpd restart
停止 sudo service vsftpd stop
配置启动之后,总是报500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误;
经查询之后发现,为了避免一个安全漏洞,从 vsftpd 2.3.5 开始,chroot 目录的权限必须为不可写。
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
意思是,如果开启了chroot来控制用户路径,则用户不能再具有该用户根目录的写的权限。
解决办法1:
去掉该用户根目录的写的权限,再新建一目录,以后用新目录
sudo chmod a-w /home/用户名
sudo mkdir /home/用户名/新目录名
其实很不方便,用户登陆进去会发现必须要再进一层目录才能找到自己的文件
如果非要保证ftp用户根目录可写,
解决办法2:
在vsftpd.chroot_list上写进去我们不要限制的用户,其他用户则不让他们“漂移”。一个用户名一行
sudo vim /etc/vsftpd.chroot_list
但这样也有风险,这个ftp用户可以去浏览系统其它目录了,失去了chroot设置意义了。
有没有更好的办法,既能使用chroot功能,又能不去掉该用户根目录的写的权限?
安装配置时学习参考的资料地址:
http://blog.csdn.net/hanvy_xia/article/details/8282189
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。