刚开始玩linux服务器,今天把vsftp改成虚拟用户登录,网上找了很多文章,终于解决了,分享一下,也供自己以后好查阅。
1.建立虚拟用户口令库
vi /etc/vsftpd/logins.txt
在里面写用户名和口令,奇数行用户名,偶数行口令,例如:
user01
666666
user02
666666
vi /etc/vsftpd/logins.txt
在里面写用户名和口令,奇数行用户名,偶数行口令,例如:
user01
666666
user02
666666
2.生成vsftpd的认证文件
首先安装认证软件
yum install db4
首先安装认证软件
yum install db4
生成认证文件命令: db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
3.更改文件权限
chmod 600 /etc/vsftpd/vsftpd_login.db vsftpd_login.db只对root用户可读写(安全起见)
chmod 600 /etc/vsftpd/vsftpd_login.db vsftpd_login.db只对root用户可读写(安全起见)
4.建立虚拟用户所需的PAM配置文件
vi /etc/pam.d/vsftpd.vu 在里面写下面的内容 (新建)
vi /etc/pam.d/vsftpd.vu 在里面写下面的内容 (新建)
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
保存退出.
vsftpd_login 是认证文件去掉.db
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
保存退出.
vsftpd_login 是认证文件去掉.db
5.建立虚拟用户及所要访问的目录并设置相应权限
groupadd ftpd
useradd -g ftpd -d /www -s /sbin/nologin -M ftpd 宿主目录home/ftpsite 帐号:virtual
chmod 700 /homegtpstie/ 宿主目录的权限设为700
vsftpd服务器中的所有虚拟用户帐号登陆后都在 /www下
新建虚拟用户也不一定非得放在/www下,放在其他目录也行,只要文件宿主都是ftpd.ftpd就行.
groupadd ftpd
useradd -g ftpd -d /www -s /sbin/nologin -M ftpd 宿主目录home/ftpsite 帐号:virtual
chmod 700 /homegtpstie/ 宿主目录的权限设为700
vsftpd服务器中的所有虚拟用户帐号登陆后都在 /www下
新建虚拟用户也不一定非得放在/www下,放在其他目录也行,只要文件宿主都是ftpd.ftpd就行.
6.设置vsftpd.conf配置文件
vi /etc/vsftpd/vsftpd.conf 最后面加上
guest_enable=YES 激活虚拟用户
guest_username=ftpd 虚拟用户在linux里的用户名
pam_service_name=vsftpd.vu 判断虚拟用户的数据文件
user_config_dir=/etc/vsftpd_user_conf 虚拟用户指定的配置文件所在地址 (vsftpd_user_conf是文件夹)
virtual_use_local_privs=YES 设置为 YES 时,虚拟用户使用与本地用户相同权限,设置为 NO 时,虚拟用户使用与匿名用户相同权限 (必须开启)
vi /etc/vsftpd/vsftpd.conf 最后面加上
guest_enable=YES 激活虚拟用户
guest_username=ftpd 虚拟用户在linux里的用户名
pam_service_name=vsftpd.vu 判断虚拟用户的数据文件
user_config_dir=/etc/vsftpd_user_conf 虚拟用户指定的配置文件所在地址 (vsftpd_user_conf是文件夹)
virtual_use_local_privs=YES 设置为 YES 时,虚拟用户使用与本地用户相同权限,设置为 NO 时,虚拟用户使用与匿名用户相同权限 (必须开启)
7.为不同的虚拟用户设置不同的权限
1)为虚拟用户设置主配置文件
在vsftpd.conf配置文件中,添加user_config_dir项,并设置保存的目录
user_config_dir=/etc/vsftpd_user_conf
1)为虚拟用户设置主配置文件
在vsftpd.conf配置文件中,添加user_config_dir项,并设置保存的目录
user_config_dir=/etc/vsftpd_user_conf
2)建立配置文件目录 (上面指定了目录,现在还没有建呢)
mkdir /etc/vsftpd_user_conf
mkdir /etc/vsftpd_user_conf
3)为每个不同的虚拟用户建立不同的配置文件
在/etc/vsftpd_user_conf目录中可以为每个虚拟用户建立单独的配置文件,配置文件名称和用户名相同。
在/etc/vsftpd_user_conf目录中可以为每个虚拟用户建立单独的配置文件,配置文件名称和用户名相同。
local_root=/data/userspace 设置虚拟用户登录后的主目录
anon_world_readable_only=NO 具有浏览FTP目录和下载权限
anon_upload_enable=YES 具有上传文件权限
anon_mkdir_write_enable=YES 具有建立和删除目录的权利
anon_other_write_enable=YES 具有文件改名和删除文件的权利
anon_world_readable_only=NO 具有浏览FTP目录和下载权限
anon_upload_enable=YES 具有上传文件权限
anon_mkdir_write_enable=YES 具有建立和删除目录的权利
anon_other_write_enable=YES 具有文件改名和删除文件的权利
最后重启vsftpd
设置文件和文件夹上传后的权限
vi /etc/vsftpd/vsftpd.conf
local_umask=022
file_open_mode=0644
开启目录访问控制
chroot_list_enable=YES 锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在 chroot_list_file参数所指定的文件中列出。默认值为NO。
chroot_list_file=/etc/vsftpd/chroot_list
指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。
要创建/etc/vsftpd/chroot_list这个文件,然后把要锁定在自家目录的用户名都写上去,一行一个用户名.
指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。
要创建/etc/vsftpd/chroot_list这个文件,然后把要锁定在自家目录的用户名都写上去,一行一个用户名.
最后重启vsftpd