共享资源库系统
一、FTP服务
1.配置主机名
# hostnamectl set-hostname ftp
2.vsftp部署安装
通过yum源安装vsftp:
# yum -y install vsftpd telnet
# systemctl start vsftpd
#启动服务
# netstat -ntpl |grep 21
# systemctl stop firewalld
# setenforce 0
# cd /etc/vsftpd/
# cp vsftpd.conf{,.bak}
# egrep -v '^#|^$' vsftpd.conf.bak
# egrep -v '^#|^$' vsftpd.conf.bak >vsftpd.conf
# cat vsftpd.conf
主配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd
常用的全局配置项:
-
listen=YES:是否以独立运行的方式监听服务
-
listen_address=192.168.x.x:设置监听的 IP 地址
-
listen_port=21:设置监听 FTP 服务的端口号
-
write_enable=YES:是否启用写入权限
-
download_enable=YES:是否允许下载文件
-
userlist_enable=YES:是否启用 user_list 列表文件
-
userlist_deny=YES:是否禁用 user_list 中的用户
-
max_clients=0:限制并发客户端连接数
-
max_per_ip=0:限制同一 IP 地址的并发连接数
-
guest_enable=YES:启用虚拟用户
-
user_config_dir=/etc/vsftpd/vsftpd_user_conf :虚拟用户使用的配置文件目录
-
allow_writeable_chroot=YES:允许写入用户主目录
常用的匿名 FTP 配置项: -
anonymous_enable=YES:启用匿名访问
-
anon_umask=022:匿名用户所上传文件的权限掩码
-
anon_root=/var/ftp:匿名用户的 FTP 根目录
-
anon_upload_enable=YES:允许上传文件
-
anon_mkdir_write_enable=YES:允许创建目录
-
anon_other_write_enable=YES:开放其他写入权
-
anon_max_rate=0:限制最大传输速率(字节/秒)
常用的本地用户 FTP 配置项: -
local_enable=YES:是否启用本地系统用户
-
local_umask=022:本地用户所上传文件的权限掩码
-
local_root=/var/ftp:设置本地用户的 FTP 根目录
-
chroot_local_user=YES:是否将用户禁锢在主目录
3.虚拟用户配置
在vsftpd服务器中,使用虚拟用户的主要好处在与:可以将FTP登录的账号与系统登录账号区分开,用户名、密码都不相同,从而进一步增强了FTP服务器的安全性。
基本步骤。如下图:
-
创建账号数据
vsftpd服务使用Berkeley DB格式的数据库文件来存放虚拟用户账号。建立这种数据库文件需要用到db_load工具,db_load工具由db4-utils软件包提供,默认已安装。
① 创建文本格式的用户名、密码列表。
奇数行:账号名,偶数行:密码(即上一行中账号的密码)
② 转化为 Berkeley DB 格式的数据文件
需要db_load 转换工具,默认已安装。 -
“-f”用于指定数据源文件
-
“-T”表示允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件
-
“-t hash”用于指定读取数据文件的基本方法
③ 为了提高虚拟用户账号文件的安全性,应将文件权限设置为600,以免数据外泄。
如下:
[root@ftp vsftpd]# vi /etc/vsftpd/users.conf
zhangsan
1234
zhaogao
5678
[root@ftp vsftpd]# db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
[root@ftp vsftpd]# chmod 600 users.db
④ 创建 FTP 根目录及虚拟用户映射的系统用户(此账号无需设置密码及登录shell)。如下:
[root@ftp ~]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin
[root@ftp ~]# mkdir -p /home/vsftpd/xmcsxy
[root@ftp ~]# chmod -R 755 /home/vsftpd
⑤ 建立支持虚拟用户的PAM认证文件
创建好虚拟用户的账号数据文件后,还需要对vsftpd服务的配置做相应的调整,以便识别并读取新的用户信息。在vsftpd服务器中,用户认证是通过PAM(Pluggable Authentication Module,可插拔认证模块)机制来实现的,该机制包含灵活的选择认证方式。Vsftpd服务默认的PAM认证文件位于/etc/pam.d/vsftpd,该文件适用于以Linux主机的系统用户账号进行认证。若要读取虚拟用户的账号数据文件,则需要创建新的PAM认证配置。
[root@ftp ~]# vi /etc/pam.d/vsftpd
- 添加虚拟用户支持
① 在 vsftpd.conf 文件中添加虚拟用户支持配置。
[root@ftp ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #禁止匿名用户登录
增加下面配置参数:
chroot_local_user=YES #禁止用户访问除主目录以外的目录
guest_enable=YES #启用虚拟用户
allow_writeable_chroot=YES # 允许写入用户主目录
② 为不同的虚拟用户建立独立的配置文件
通过前面的几个步骤,实际上已经可以重新加载vsftpd并提供服务了,使用任一个虚拟用户账号都可以登录FTP服务器并下载文件。但因为所有的虚拟用户都映射到同一个系统用户账号,因此FTP访问权限也是相同的,要么只能下载,要么只能上传。
若要为不同的虚拟用户账号设置不同的访问权限,可以通过为每个虚拟用户建立单独的配置文件来实现。为FTP用户启用独立配置文件,需要修改vsftpd.conf配置文件,添加“user_config_dir”配置项。
[root@ftp ~]# vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户使用的配置文件目录
③ 有了上述配置以后,就可以在/etc/vsftpd/vsftpd_user_conf 目录中为每个虚拟用户分别建立配置文件了。
[root@ftp ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf
[root@ftp ~]# cd /etc/vsftpd/vsftpd_user_conf/
[root@ftp vsftpd_user_conf]# vi zhangsan
local_root=/home/vsftpd/xmcsxy # 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
anon_upload_enable=YES # 是否允许登陆用户有上传权限。
write_enable=YES # 是否允许登陆用户有写权限。
# vi zhaogao
local_root=/home/vsftpd/xmcsxy
anon_upload_enable=YES
write_enable=YES
# chmod -R 755 *
在vsftpd.conf文件中启用了“user_config_dir”配置项以后,应该为每一个虚拟用户都建立一个单独的配置文件(可以是空文件),否则该用户可能无法登录。在每个用户的独立配置文件中,可以添加新的配置项来限制访问权限、下载速率等。
4.重启服务并测试
重启服务生效配置文件:
[root@ftp ~]# systemctl restart vsftpd
[root@ftp ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
使用虚拟 FTP 账户访问测试:
zhangsan用户可以登录,并可以浏览、下载,也可以上传。
测试之前:关闭防火墙以及安全规则;
[root@ftp vsftpd_user_conf]# systemctl stop firewalld
[root@ftp vsftpd_user_conf]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@ftp vsftpd_user_conf]# setenforce 0
先往家目录写入一个文件:
[root@ftp ~]# cd /home/vsftpd/xmcsxy/
[root@ftp xmcsxy]# touch a.txt
在另一台虚拟机上安装NFS
[root@localhost ~]# yum install -y nfs-utils
#安装nfs服务
[root@localhost ~]# yum install -y