linux上的文件服务

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
# rpcinfo -p localhost

 

选项与参数:
-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

 

nfs参考:https://www.cnblogs.com/liuyisai/p/5992511.html

 

posted @ 2017-12-02 21:29  abm  阅读(1205)  评论(0编辑  收藏  举报