linux上的文件服务

时间:2023-03-10 02:07:57
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

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=
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=
data_connection_timeout=
max_clients=
max_per_ip=
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.-.el6.x86_64
nfs4-acl-tools-0.3.-.el6.x86_64
nfs-utils-1.2.-.el6.x86_64
[oracle@jydb1 ~]$ rpm -qa | grep rpcbind
rpcbind-0.2.-.el6.x86_64 未安装则yum安装yum install -y nfs-utils rpcbind

主配置文件:

  • /etc/exports:需要我们在服务安装好后手动创建
# cat /etc/exports
/data 192.168.13.0/(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其属主、属组及权限信息如下:

linux上的文件服务

用户和组为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
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
udp status
tcp status
udp rquotad
udp rquotad
tcp rquotad
tcp rquotad
udp mountd
tcp mountd
udp mountd
tcp mountd
udp mountd
tcp mountd
tcp nfs
tcp nfs
tcp nfs
tcp nfs_acl
tcp nfs_acl
udp nfs
udp nfs
udp nfs
udp nfs_acl
udp nfs_acl
udp nlockmgr
udp nlockmgr
udp nlockmgr
tcp nlockmgr
tcp nlockmgr
tcp 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/ 选项与参数:
-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