ftp安装:
Sudo apt-get install vsftpd
安装后系统会自动创建ftp用户
配置ftp:
首先备份一下配置文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
注意:如果配置允许匿名登录 ftp跳转到的根目录设置为755
配置项:
anonymous_enable=YES //允许匿名登陆
anon_root=/var/ftp //登陆ftp后指向的目录,该目录权限不能为777,默认 为/srv/ftp
local_enable=YES //允许本地用户登陆
write_enable=YES //服务器接受写操作
local_umask=022 //本地用户创建新的文件权限为022,022表示初始的权限值是创建者有全部的权限,其他用户(包括组用户,其他用户)只有读和执行权限,077表示初始创建者具有全部权限,其他用户没有权限
anon_upload_enable=YES //允许匿名用户上传文件,当设置为yes指定的上传目录有写权限
anon_mkdir_write_enable=YES //允许匿名用户在ftp上创建目录
chroot_local_user=YES
虚拟用户的创建和配置:
设置/etc/vsftpd.conf anonymous_enable=NO
1.创建/home/loginuser.txt虚拟用户列表格式为:
User1
Pass1
User2
Pass2
User3
Pass3
2.在ftp根目录下创建loginuser.txt三个目录分别为user1 user2 user3
使得:
用户user1的主目录为dbuser1,在该目录下只有读权限
用户user2的主目录为dbuser2,在该目录下只读权限
用户user3的主目录为dbuser3,在该目录下有所有权限
3.接下来我们需要生成虚拟帐号数据库,先安装DB库工具
Sudo apt-get install db4.8-util
将数据库文件导入到指定目录
sudo db4.8_load -T -t hash -f /home/loginuser.txt /etc/vsftpd/vsftpd_login.db
将数据库文件设置权限为600,并不需要被其他用户读,修改
sudo chmod 600 /etc/vsftpd/vsftpd_login.db
4.配置PAM文件
(所有支持PAM验证的程序都有一个与PAM进行对接的配置文件,它们存放在/etc/pam.d目录,vsftpd与PAM的对接配置文件名可以由 vsftpd.conf文件中的pam_service_name选项指定,默认是pam_service_name=vsftpd,当以后认证本地用户 时,会根据/etc/pam.d/vsftpd文件的配置内容进行认证。)
编辑前,先查找下pam_userdb.so位置
xyx@ubuntu:/home$ sudo find / -name pam_userdb.
/lib/x86_64-linux-gnu/security/pam_userdb.so
将下面内容加入到vsftpd文件的前两行:
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
5.建立所有FTP虚拟用户帐号使用的操作系统帐号即本地系统用户,需要我们自己新建目录,并设置该帐号工作目录的权限,所有者。
这里我们新建一个系统用户ftp_virt,用户家目录为/var/htp/ftp_virt,/bin/false禁止登陆系统
sudo useradd ftp_virt -d /home/ftp_virt -s /bin/false
sudo mkdir /home/ftp_virt
sudo chown ftp_virt :ftp_virt /home/ftp_virt
sudo chmod 700 /home/ftpsite
注:查看/etc/passwd里有该用户
6.在vsftpd.conf配置文件中添加有关虚拟帐号用户的配置内容
user_config_dir=/etc/vsftpd_user_conf一项设置虚拟用户的权限来指定放置用户配置文件的目录位置是/etc/vsftpd_user_conf
解释下这一项的作用,添加这一项之后,当我们以虚拟用户登录vsftpd时,服务器将会寻找/etc/vsftpd_user_conf目录下于虚拟用户名相同的配置文件,从而确定该虚拟用户的权限等属性。这方便了我们管理FTP虚拟用户。
当然需要在创/etc/vsftpd_user_conf
Sudo mkdir /etc/sftpd_user_conf
编辑user1配置文件内容为:
Local_root=/var/ftp/user1
User2配置文件内容为:
Local_root=/var/ftp/user2
User3配置文件内容为:
local_root=/var/ftp/user3
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=YES
write_enable=YES
guest_enable=YES
guest_username=ftp_virt
user_config_dir=/etc/vsftpd_user_conf
7.配置虚拟用户配置文件
在/etc/vsftpd_user_conf下新建user1 user2 user3文件
Sudo touch user1 user2 user3
Sudo vi User1内容:local_root=/var/ftp/user1
Sudo vi user2:local_root=/var/ftp/user2
Sudo vi user3:
local_root=/var/ftp/user3
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=YES
write_enable=YES
8.创建local_root
在/var/ftp下创建user1 user2 user3 eg:sudo mkdir user1
注意:由于这几个文件为ftp登陆根目录,打开chroot配置禁止根目录有写权限所以更改权限
Sudo chmod 555 user1 user2 user3
测试user3新建删除功能:
User3配置中的anon_other_write_enable=YES允许用户除了建目录外的其他任何操作但这些写操作必须有一目录允许写操作。
Sudo mkdir upload -----默认所属用户和用户组为root,权限为755
Sudo chown ftp_virt : ftp_virt upload/
这时我们就可以在该目录下做任何读写操作了
附:ftp服务操作:
sudo service vsftpd restart
sudo service vsftpd start
sudo service vsftpd stop