设为首页 收藏本站
查看: 930|回复: 0

[经验分享] linux下NFS、FTP使用讲解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-25 08:57:12 | 显示全部楼层 |阅读模式
一、NFS
1、NFS简介
NFS全称是network file system 网络文件系统nfs依赖网络带宽的支持
NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS用户和程序可以像访问本地文件一样访问远端系统上的文件。
假如有三台机器A, B, C它们需要访问同一个目录目录中都是图片传统的做法是把这些图片分别放到A, B, C. 但是使用NFS只需要放到A上然后A共享给B和C即可。访问的时候B和C是通过网络的方式去访问A上的那个目录的。

2、安装、配置NFS服务
需要安装两个包(nfs-utils和rpcbind)
#yum install -y nfs-utils  会同时安装上依赖包rpcbind

提供nfs服务的机器上 vim /etc/exports 输入以下内容
/home/ 192.168.20.0/24(rw,sync,all_squash,anonuid=501,anongid=501)
共分为三部分
/home/    第一部分是本地要共享出去的目录
192.168.20.0/24    第二部分为允许访问的主机可以是一个IP也可以是一个IP段
(rw,sync,all_squash,anonuid=501,anongid=501)    第三部分就是小括号里面的为一些权限选项。权限为读写同步限定所有使用者并且限定的uid和gid都为501501账号必须真实存在。
启动nfs服务先启动rpcbind再启动nfs启动顺序错误的话会导致后面出错
/etc/init.d/rpcbind start
/etc/init.d/nfs start  

3、NFS配置的一些选项说明
rw 可读可写
ro 只读
sync 同步模式内存中数据时时写入磁盘
async 不同步把内存中数据定期写入磁盘中
no_root_squash squash的意思为挤压压制字面意思为不压制root的权限加上这个选项后root用户就会对共享的目录拥有至高的权限控制就像是对本机的目录操作一样。不安全不建议使用
root_squash和上面的选项对应root用户对共享目录的权限不高只有普通用户的权限即限制了root
all_squash不管使用NFS的用户是谁他的身份都会被限定成为一个指定的普通用户身份
anonuid/anongid 要和root_squash 以及all_squash一同使用用于指定使用NFS的用户限定后的uid和gid前提是本机的/etc/passwd中存在这个uid和gid。

4、客户端上挂载NFS
客户端机器也同样需要安装nfs包# yum install -y nfs-utils
同时需要检查iptables清空iptables
关闭selinux防火墙
查看服务器端都共享了哪些目录    #showmount -e 192.168.20.30nfs服务器的ip地址
客户端使用showmount -e 时报错RPC程序没有注册
[root@yong ~]# showmount -e 192.168.20.30
clnt_create: RPC: Program not registered
出错原因是rpcbind服务与NFS服务启动顺序不对先停止服务重新启动先启动rpcbind服务再启动nfs服务
1
2
[iyunv@localhost ~]# /etc/init.d/nfs stop
[iyunv@localhost ~]# /etc/init.d/rpcbind stop



重新启动后执行显示正确

1
2
3
4
5
[iyunv@localhost ~]# /etc/init.d/rpcbind start
[iyunv@localhost ~]# /etc/init.d/nfs start
[iyunv@yong ~]# showmount -e 192.168.20.30
Export list for 192.168.20.30:
/home 192.168.20.0/24




在客户端上挂载服务端的nfs命令
mount -t nfs -o nolock,nfsvers=3 192.168.20.30:/home/ /mnt/     
//如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody如果指定nfsvers=3则显示root
-o nolock    不上锁指定nfsvers版本是3默认是4
df -h  查看挂载的情况

实验测试nfs
服务器端共享/home目录允许192.168.20.0网段的机器访问指定使用nfs用户的身份为501
1
2
3
4
5
6
7
8
9
10
11
[iyunv@localhost home]# cat /etc/exports
/home/ 192.168.20.0/24(rw,sync,all_squash,anonuid=501,anongid=501)
[iyunv@localhost /]# ls -ld home/
drwxr-xr-x. 8 root root 4096 5月  22 11:33 home/
[iyunv@localhost home]# ls -ld
rwxr-xr-x  2 root    root    4096 5月  15 15:54 logs
drwx------. 3 mysql   mysql   4096 5月  11 14:47 mysql
drwx------. 4 php-fpm php-fpm 4096 5月  13 14:24 php-fpm
drwx------  2 test    test    4096 5月  22 11:40 test
[iyunv@localhost home]# mkdir 111
[iyunv@localhost home]# chmod 777 111



客户端机器新建立文件夹nfs挂载nfs服务器的/home目录到nfs目录挂载后使用df -h查看已挂载的nfs
1
2
3
4
5
6
7
8
9
10
[iyunv@yong ~]# mkdir nfs
[iyunv@yong ~]# mount -t nfs 192.168.20.30:/home/ /root/nfs/
[iyunv@yong ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       19G  2.9G   15G  17% /
tmpfs                 250M     0  250M   0% /dev/shm
/dev/sda1             477M   46M  407M  11% /boot
/dev/sdb2             6.0G   93M  5.6G   2% /data
192.168.20.30:/home/   18G  2.1G   15G  13% /root/nfs





ls -l 列出来共享的目录的文件所属主、组全部为nobody在nfs目录新建目录或文件提示权限被拒绝
1
2
3
4
5
[iyunv@yong nfs]# ls -l
drwxr-xr-x 2 nobody nobody 4096 May 15 15:54 logs
drwx------ 3 nobody nobody 4096 May 11 14:47 mysql
drwx------ 4 nobody nobody 4096 May 13 14:24 php-fpm
drwx------ 2 nobody nobody 4096 May 22 11:40 test



1
2
3
4
[iyunv@yong nfs]# mkdir abc
mkdir: cannot create directory `abc': Permission denied
[iyunv@yong nfs]# touch 1.txt
touch: cannot touch `1.txt': Permission denied



服务器端/home目录新建111目录并设置权限为777客户端进入111目录下可以创建目录或文件创建的文件所属主、组都为nobodoy
1
2
[iyunv@yong 111]# ls -l
-rw-r--r-- 1 nobody nobody       0 May 22 13:40 1.txt



取消挂载重新挂载添加参数-o nolock,nfsvers=3 显示的所属主则为root进入111目录新建立文件文件所属主、组权限为501因为客户端已经存在501 对应账号为user1所以这里显示账号为user1

1
2
[iyunv@yong ~]# umount /root/nfs/
[iyunv@yong ~]# mount -t nfs -o nolock,nfsvers=3 192.168.20.30:/home/ /root/nfs/



1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@yong nfs]# ls -l
drwxrwxrwx 2 root    root      4096 May 22 14:18 111
drwxr-xr-x 2 root    root      4096 May 15 15:54 logs
drwx------ 3 500   testgroup   4096 May 11 14:47 mysql
drwx------ 4 user1   user1     4096 May 13 14:24 php-fpm
drwx------ 2 php-fpm php-fpm   4096 May 22 11:40 test
[iyunv@yong nfs]# cd 111
[iyunv@yong 111]# touch 2.txt
[iyunv@yong 111]# ls -l
-rw-r--r-- 1 user1 user1 0 May 22  2015 2.txt
[iyunv@yong 111]# id -u user1
501




5、exportfs 命令的使用
-a 全部挂载或者卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享的目录
/home/ 192.168.20.0/24(rw,sync,no_root_squash) 不限制root用户客户端再创建的用户的所属主组都是root

可以进行更改权限删除文件。
改变/etc/exports配置文件后不用重启nfs服务执行命令#exportfs -arv  使/etc/exports配置文件生效
我们还可以把要挂载的nfs目录写到client上的/etc/fstab文件中  192.168.20.10:/tmp/ /test nfs nolock 0 0  然后 mount -a


实验测试服务器端更改nfs配置不压制root的权限
1
2
3
4
[iyunv@localhost home]# cat /etc/exports
/home/ 192.168.20.0/24(rw,sync,no_root_squash)
[iyunv@localhost home]# exportfs -arv
exporting 192.168.20.0/24:/home



客户端挂载nfs不指定nfsvers版本显示的账号还是为nobody但是可以直接创建文件已经有root权限
1
2
3
4
5
6
[iyunv@yong ~]# mount -t nfs 192.168.20.30:/home/ /root/nfs/
[iyunv@yong ~]# cd nfs/
[iyunv@yong nfs]# touch 1.txt
[iyunv@yong nfs]# ls -l
drwxrwxrwx 2 nobody nobody 4096 May 22 14:25 111
-rw-r--r-- 1 nobody nobody    0 May 22  2015 1.txt



取消挂载nfs重新指定参数挂载挂载后显示账号为root
1
2
3
4
5
6
7
[iyunv@yong ~]# umount /root/nfs/
[iyunv@yong ~]# mount -t nfs -o nolock,nfsvers=3 192.168.20.30:/home/ /root/nfs/
[iyunv@yong ~]# cd nfs/
[iyunv@yong nfs]# touch 1.txt
[iyunv@yong nfs]# ls -l
drwxrwxrwx 2 root    root      4096 May 22 14:25 111
-rw-r--r-- 1 root    root         0 May 22  2015 1.txt




二、ftp
1、什么是ftp
FTP 是File Transfer Protocol文件传输协议的英文简称而中文简称为 “文传协议” 用于Internet上的控制文件的双向传输。
FTP的主要作用就是让用户连接上一个远程计算机这些计算机上运行着FTP服务器程序查看远程计算机有哪些文件然后把文件从远程计算机上拷到本地计算机或把本地计算机的文件送到远程计算机去。
在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftpd。

2、使用pure-ftpd搭建FTP服务
pure-ftpd 官网 http://www.pureftpd.org/project/pure-ftpd  
pure-ftpd 是服务端工具

先安装epel扩展源然后安装pure-ftpd包
#yum install -y epel-release
#yum install -y pure-ftpd
yum list 可以查看包所在的源
1
2
3
[iyunv@pma ~]# yum list |grep pure-ftpd
pure-ftpd.i686                        1.0.30-1.el6                  epel   
pure-ftpd-selinux.i686                1.0.30-1.el6                  epel




pure-ftpd 配置模板参考
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cat /etc/pure-ftpd/pure-ftpd.conf
ChrootEveryone              yes
BrokenClientsCompatibility  no
MaxClientsNumber            50
Daemonize                   yes
MaxClientsPerIP             8
VerboseLog                  no
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 yes
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 15
PureDB                       /etc/pure-ftpd/pureftpd.pdb
LimitRecursion              3136 8
AnonymousCanCreateDirs      no
MaxLoad                     4
AntiWarez                   yes
Umask                       133:022
MinUID                      10
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AutoRename                  no
AnonymousCantUpload         no
CustomerProof              yes




生成随机字符串用户名长度为5没有特殊字符没有数字没有大写字母密码没有特殊字符然后重定向到一个文件中
如果没有mkpasswd命令需要安装expect包# yum install -y expect
user=`mkpasswd -l 5 -s 0 -d 0 -C 0`
pass=`mkpasswd -s 0`
echo $user $pass > /tmp/ftp.pass
1
2
[iyunv@localhost ~]# cat /tmp/ftp.pass
zwdlc EEoz14swg



创建ftp服务的目录用于共享
#mkdir /data/ftp  
#echo -e "$pass\n$pass"|pure-pw useradd $user -u test -d /data/ftp/
pure-pw 创建一个用户

-u test 映射一个用户系统里必须存在的用户。使用创建的随机用户映射到系统里的用户
pure-pw mkdb    #创建密码文件把用户和密码保存到一个二进制的文件中。路径在/etc/pure-ftpd/pure-ftpd.conf配置文件里PureDB指定的路径中
1
2
[iyunv@localhost ~]# ls -l /etc/pure-ftpd/pureftpd.pdb
-rw------- 1 root root 2141 5月  22 15:24 /etc/pure-ftpd/pureftpd.pdb



pure-pw list     #列出用户
1
2
[iyunv@localhost ~]# pure-pw list
zwdlc               /data/ftp/./



pure-pw userdel $user     #删除账号
/etc/init.d/pure-ftpd  start  #启动服务监听端口为21


ftp客户端需要安装lftp包#yum install -y lftp
输入命令 #lftp 用户名@ftp服务器ip地址     
用户名为服务器创建的随机用户名ftp服务器ip地址输入密码就登录ftp服务器
put 文件 上传到ftp服务端
get 文件 下载到本地客户端目录
1
2
3
4
[iyunv@yong nfs]# lftp zwdlc@192.168.20.30
Password:
lftp zwdlc@192.168.20.30:/> get nginx-1.6.2.tar.gz
804164 bytes transferred




2、vsftp配置ftp服务
服务端安装yum install -y vsftpd db4-utils
建立虚拟账号相关联的系统账号 useradd virftp -s /sbin/nologin  
建立虚拟账户相关的文件  vim  /etc/vsftpd/vsftpd_login //内容如下
    test1
    123456
    test2
    abcdef
chmod 600 /etc/vsftpd/vsftpd_login
生成对应的库文件 db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
db_load命令可以将用户文本信息文件转换为db数据库并使用hash加密。
选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的为了让Vsftpd这个应用程序能够通过文本来载入用户数据必须要使用这个选项。
指定了选项-T那么一定要追加子选项-t ;    子选项-t追加在在-T选项后用来指定转译载入的数据库类型。
hash就是使用hash码加密。
-f 参数后面接包含用户名和密码的文本文件文件的内容是:奇数行用户名、偶数行密码
如果更改密码更改文件后还需要db_load一下并重启ftp服务使其生效

建立虚拟账号相关的目录以及配置文件 mkdir  /etc/vsftpd/vsftpd_user_conf
cd   /etc/vsftpd/vsftpd_user_conf  创建和用户对应的配置文件
vim test1 内容如下
1
2
3
4
5
6
7
8
9
10
11
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
修改权限 chown -R virftp:virftp /home/virftp

vim /etc/pam.d/vsftpd   用户认证的配置文件在最开头添加两行
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login   //如果是64位系统则改为/lib64/security/pam_userdb.so
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login   //如果是64位系统则改为/lib64/security/pam_userdb.so
再修改vsftpd主配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES改为anonymous_enable=NO    匿名用户
#anon_upload_enable=YES 改为 anon_upload_enable=NO    匿名上传禁止
#anon_mkdir_write_enable=YES 改为 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/vsftpd_user_conf

启动vsftpd服务/etc/init.d/vsftpd start  
启动vsftp服务报错vsftp.conf主配置文件guest_enable这一行错误的变量值。查找原因是因为这一行最后有空格所有配置文件末尾不能有空格删除空格后正常启动服务
[root@localhost vsftpd_user_conf]# /etc/init.d/vsftpd start
为 vsftpd 启动 vsftpd500 OOPS: bad bool value in config file for: guest_enable


客户端实验验证
ftp客户端需要安装lftp包yum install -y lftp

登录命令lftp test1@ftp服务端的ip地址


客户端访问ftp服务器故意输错密码竟然也能登录但是执行ls就提示登录失败使用正确口令登录使用ls正常
1
2
3
4
5
6
7
8
9
10
[iyunv@localhost ~]# lftp
test1@192.168.22.30
口令:
lftp test1@192.168.22.30:~> ls         
ls: 登录失败: 530 Login incorrect.              
lftp test1@192.168.22.30:~> exit
[iyunv@localhost ~]# lftp test1@192.168.22.30
口令:
lftp test1@192.168.22.30:~> ls         
-rw-r--r--    1 0        0               0 May 24 15:21 1.txt



put上传一个文件ls查看文件的所属主、组为501在ftp服务器查看显示为virftp账号对应的uid即501
1
2
3
4
5
6
7
8
9
10
lftp test1@192.168.22.30:/> put 1.sql
1851 bytes transferred
lftp test1@192.168.22.30:/> ls -l
-rw-r--r--    1 501      501          1851 May 24 15:23 1.sql
-rw-r--r--    1 0        0               0 May 24 15:21 1.txt
[iyunv@yonglinux test1]# ls -l
-rw-r--r-- 1 virftp virftp 1851 5月  24 23:23 1.sql
-rw-r--r-- 1 root   root      0 5月  24 23:21 1.txt
[iyunv@yonglinux ~]# tail -1 /etc/passwd
virftp:x:501:501::/home/virftp:/sbin/nologin



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-70304-1-1.html 上篇帖子: Linux系统FTP服务器搭建与配置 下篇帖子: vsftpd+pam+mysql实现虚拟用户访问控制 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表