vsftp、Samba、NFS对比
服务器名称 |
用户客户端平台 |
使用范围 |
服务端口 |
VSFTP |
Windows/linux/unix/macOS等 |
发布网站,文件共享 |
Tcp/21 |
Samba |
Windows |
文件共享(网上邻居) |
Tcp/445,tcp/139 |
NFS |
Linux/unix |
网站发布,文件共享,可挂载(mount) |
Tcp/2049 |
ftp搭建
用vsftpd搭建FTP服务:
简介:
安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。
是SentOS或者redhat上自带的ftp软件,默认不安装,一般执行yum安装
vsftp安装配置
首先检查是否安装vsftp包 # rpm –qa | grep vsftpd
yum安装:yum install -y vsftpd db4-utils //这里db4-utils用来生成密码文件
建立账号:
vsftp支持系统账号登陆,出于安全考虑我们使用虚拟账号登陆
#useradd -virftp -s /sbin/nologin
创建虚拟账号的配置文件:
#vim /etc/vsftpd/vsftpd_login
test1 123456 test2 abcdef
#该文件存储用户和密码,奇数行为用户名,偶数行为密码
安全起见设置权限
#chmod 600 /etc/vsftpd/vsftpd_login
vsftpd使用的密码不是明文,现在使用“用户&密码”文件生成对应库文件:
#db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
最后建立与虚拟账号相关的目录及配置文件,如下所示:
#mkdir /etc/vsftpd/user_conf //此文路径要和全局配置文件中的用户配置目录设置一致
创建和用户对应的配置文件
每一个用户都有一个对应的配置文件,文件名和用户名一致,用来自定义用户配置
切换到上面创建的user_conf下
#vim test1
local_root=/home/virftp/test1
anonymous_enable=NO write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO idle_session_timeout=600 data_connection_timeout=120 max_clients=10 max_per_ip=5 local_max_rate=50000
根据字面意思应该不难理解各参数意义
#mkdir /home/virftp/test1; touch test.txt
#chown -R virftp.virftp /home/virftp
#vim /etc/pam.d/vsftpd //在最开头添加
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
CentOS为64位,所以库文件路径为/lib64/security/pam_userdb.so(32位的为/lib/security/pam_userdb.so)
修改全局配置文件/etc/vsftpd/vsftpd.conf
除了修改我们的用户配置文件外,我们还需要修改一些全局配置文件
vim /etc/vsftpd/vsftpd.conf
修改
anonymous_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO
增加
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_conf
allow_writeable_chroot=YES
启动:
#service vsftpd start
测试:安装客户端工具lftp
#yum install lftp
#lftp test1@127.0.0.1
Password:
lftp test1@127.0.0.1:~> ls
-rw-r--r-- 1 503 504 11 Dec 02 13:37 text.txt
NFS共享存储配置
简介
NFS(Network File System)即网络文件系统的缩写,由Sun公司研发,其目的是为了解决网络文件共享的问题。用户可以实现像挂载本地文件系统一样挂载NFS服务器的共享目录;其具有配置简单、使用高效的特点,但只能在Linux系统使用,不能跨平台使用。
要设定好 NFS 服务器我们必须要有两个软件才行,分别是:
- RPC 主程序:rpcbind他是一个RPC(远程过程调用协议)服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。
- NFS 主程序
安装配置
NFS服务端配置
安装
#确认是否安装 [oracle@jydb1 ~]$ rpm -qa | grep nfs nfs-utils-lib-1.1.5-9.el6.x86_64 nfs4-acl-tools-0.3.3-6.el6.x86_64 nfs-utils-1.2.3-54.el6.x86_64 [oracle@jydb1 ~]$ rpm -qa | grep rpcbind rpcbind-0.2.0-11.el6.x86_64 未安装则yum安装yum install -y nfs-utils rpcbind
主配置文件:
- /etc/exports:需要我们在服务安装好后手动创建
# cat /etc/exports /data 192.168.13.0/24(rw,sync)
常见参数有
常见的参数则有: 参数值 内容说明 rw ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。 sync async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘! no_root_squash root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行! all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) anonuid anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 。
NFS文件访问权限
NFS服务本身没有身份验证的功能,权限是遵循共享目录在NFS服务器上的权限设置,而且只识别UID和GID。假如现在有一个共享的目录share其属主、属组及权限信息如下:
用户和组为mysql,但当客户端访问此目录时,NFS是判定访问者的uid是否为400,如果uid相符,那么访问者就有可能拥有与mysql用户相同的权限,这还要取决于/share设置共享时所分配的权限;如果访问者的uid对应了NFS服务器上的另一个用户,则访问者就对应拥有other权限,但是否能够完全对应用other权限也要取决于share的共享权限;如果访问者的uid恰好在NFS服务器上不存在,则服务器用自动将其压缩成为匿名用户,其uid为65534,而CentOS将其显示为nfsnobody。
由于在绝大部分Linux系统中root用户的uid为0,也就是说客户端可以轻易的获得NFS的root权限来访问共享目录,这样是极不安全的,所以NFS默认会将root的身份压缩成匿名用户。
配置生效
# exportfs -r
启动rpcbind、nfs服务
# service rpcbind start
# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
查看RPC的注册状况
# rpcinfo -p localhost program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 19859 status 100024 1 tcp 30274 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100005 1 udp 44795 mountd 100005 1 tcp 44611 mountd 100005 2 udp 29470 mountd 100005 2 tcp 59381 mountd 100005 3 udp 32527 mountd 100005 3 tcp 55847 mountd 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 nfs_acl 100227 3 tcp 2049 nfs_acl 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 nfs_acl 100227 3 udp 2049 nfs_acl 100021 1 udp 47974 nlockmgr 100021 3 udp 47974 nlockmgr 100021 4 udp 47974 nlockmgr 100021 1 tcp 29453 nlockmgr 100021 3 tcp 29453 nlockmgr 100021 4 tcp 29453 nlockmgr
选项与参数: -p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息; -t :针对某主机的某支程序检查其 TCP 封包所在的软件版本; -u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;
secver端测试
# showmount -e localhost Export list for localhost: /data 192.168.13.0/24 选项与参数: -a :显示目前主机与客户端的 NFS 联机分享的状态; -e :显示某部主机的 /etc/exports 所分享的目录数据。
客户端配置
安装nfs-utils客户端
# yum -y install nfs-utils
创建挂载目录
# mkdir /data
查看服务器抛出的共享目录信息
[root@bogon ~]# showmount -e 192.168.12.111 Export list for 192.168.12.111: /data 192.168.12.111/24
为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议
# mount -t nfs 192.168.12.111:/data /data -o proto=tcp -o nolock