linux 深入应用 NFS

以下实验大家用主机名来区分服务器端和客户端,

 

 

服务器端为 NFS_Server ip-192.168.1.4;

 

 

客户端为 NFS_Client ip-192.168.1.5;

 

 

 

实例一

 

 

 

将/tmp 分享给大家使用,让所有的人都可以存取,让 root 写入档案还是具有 root 的权限

 

 

[NFS Server]

 

 

[root@NFS_Server ~]# ll -d /tmp/  #目录 tmp 文件系统本身具有读写权限

 

drwxrwxrwt. 3 root root 4096 May  3 21:39 /tmp/ [root@NFS_Server ~]# vim /etc/exports

/tmp 192.168.1.5(rw,root_squash)

 

[root@NFS_Server ~]# exportfs -r #重新载入配置文件 [root@NFS_Server ~]# ll /tmp

total 0

 

-rw-------. 1 root       root       0 Apr 23 15:05 yum.log

 

 

[root@NFS_Client ~]# mkdir /share1 #创建挂载目录

 

[root@NFS_Client ~]# ll /share1/

 

total 0

 

[root@NFS_Client ~]# mount -t nfs 192.168.1.4:/tmp/ /share1/  #挂载 [root@NFS_Client share1]# ll #已同步到客户端的/share1 目录

total 0

 

 

-rw-------. 1 root root 0 Apr 23 15:05 yum.log

 

 

[root@NFS_Client share1]# whoami #查看当前用户

 

 

root

 

 

[root@NFS_Client share1]# touch a.sh  #以 root 用户创建一个测试文件

 

 

[root@NFS_Client share1]# ll #查看 a.sh 的宿主宿组都是 root

 

 

total 0

 

 

-rw-r--r--. 1 root root 0 May  3  2014 a.sh

 

 

-rw-------. 1 root root 0 Apr 23 15:05 yum.log

 

 

[NFS Server]

 

 

[root@NFS_Server tmp]# ll  #查看 a.sh 是否同步,查看 a.sh 的宿主宿组是否是 root

 

 

total 0

 

 

-rw-r--r--. 1 root root 0 May  3 22:15 a.sh

 

 

-rw-------. 1 root root 0 Apr 23 15:05 yum.log

 

 

---End---

 

实验一总结:主要的就是共享权限 no_root_squash

 

要想明白 no_root_squash 就要先明白 root_squash 的意思

 

root_squash:如果客户端是以 root 身份进行对 nfs 分区操作,那么会被 root_squash 压缩成

 

nfsnobody。

 

no_root_squash:与 root_squash 意思相反,就是不压缩,仍然是以 root 用户进行进行操作 nfs

 

分区,安全性没有保证

 

 

同一目录针对不同范围开放不同的权限

 

我们将一个公共的目录/www/onair 公开出去,但是我们只限定我的局域网络 192.168.1.0/24 这个 网且加入 Allentunsgroup 的用户才能够读写,其它来源则只能读取

[ON Server]

[root@NFS_Server ~]# mkdir /www/onair -pv mkdir: created directory `/www'

 

 

mkdir: created directory `/www/onair'

 

 

[root@NFS_Server ~]# touch /www/onair/a.sh

 

 

[root@NFS_Server ~]# groupadd -g 500 Allentunsgroup

 

 

[root@NFS_Server ~]# useradd -g Allentunsgroup -r 500 Allentuns

 

 

[root@NFS_Server ~]# setfacl -m g:Allentunsgroup:rwx /www/onair  #设置 Allentunsgroup

 

 

组对/www/onair 文件的读写执行权限

 

 

[root@NFS_Server ~]# ll -d /www/onair/

 

 

drwxrwxr-x+ 2 root root 4096 May  4 01:45 /www/onair/

 

 

[root@NFS_Server ~]# cat /etc/group |grep Allentunsgroup #查看对应的 gid 后面会用到

 

 

Allentunsgroup:x:500:

 

 

[root@NFS_Server ~]# vim /etc/exports

 

 

/www/onair         192.168.1.0/24(rw)  *(ro)

 

 

[root@NFS_Server ~]# exportfs -r

 

 

[ON Client]

 

[root@NFS_Client ~]# mkdir /usr/local/onair

 

[root@NFS_Client ~]# showmount -e 192.168.1.4

 

Export list for 192.168.1.4:

 

/www/onair (everyone)

 

[root@NFS_Client ~]# mount -t nfs 192.168.1.4:/www/onair /usr/local/onair/ [root@NFS_Client ~]# cd /usr/local/onair/

 

 

total 0

 

-rw-r--r--. 1 root root 0 May  4 01:45 a.sh

 

[root@NFS_Client onair]# whoami root

[root@NFS_Client onair]# touch b.sh #拒绝

 

touch: cannot touch `b.sh': Permission denied

 

 

root 用户拒绝写入

 

 

然后创建一个新账号,并加入到 Allentunsgroup 组中测试是否有写入权限

 

 

[root@NFS_Client ~]# groupadd -g 500 Allentunsgroup

 

 

[root@NFS_Client ~]# cat /etc/group |grep Allentunsgroup

 

 

Allentunsgroup:x:500:

 

 

[root@NFS_Client ~]# useradd -g Allentunsgroup scott

 

 

[root@NFS_Client ~]# id scott

 

 

uid=500(scott) gid=500(Allentunsgroup) groups=500(Allentunsgroup)

 

 

[root@NFS_Client ~]# passwd scott

 

 

Changing password for user scott.

 

 

New password:

 

 

BAD PASSWORD: it is too short

 

 

BAD PASSWORD: is too simple

 

 

Retype new password:

 

passwd: all authentication tokens updated successfully. [root@NFS_Client onair]# su scott

[scott@NFS_Client onair]$ whoami scott

[scott@NFS_Client onair]$ ll total 0

 

 

[scott@NFS_Client onair]$ touch b.sh #写入成功

 

[scott@NFS_Client onair]$ ll total 0

-rw-r--r--. 1 root    root            0 May  4 01:45 a.sh

 

-rw-r--r--. 1 nobody Allentunsgroup 0 May  4  2014 b.sh

 

[ON Server]

 

 

[root@NFS_Server ~]# ll /www/onair/

 

 

total 0

 

 

-rw-r--r--. 1 root       root            0 May  4 01:45 a.sh

 

 

-rw-r--r--. 1 Allentuns Allentunsgroup 0 May  4 02:11 b.sh

 

 

已经同步到 Server 端,并且同步到 server 端的用户是 Allentuns,用户组为 Allentunsgroup

 

 

setfacl 的用法

 

 

setfacl 命令可以用来细分 linux 下的文件权限。

 

 

chmod 命令可以把文件权限分为 u,g,o 三个组,

 

 

而 setfacl 可以对每一个文件或目录设置更精确的文件权限。

 

 

比较常用的用法如下:

 

 

setfacl –m u:apache:rwx file 设置 apache 用户对 file 文件的 rwx 权限

 

 

setfacl –m g:market:rwx file 设置 market 用户组对 file 文件的 rwx 权限

 

 

setfacl –x g:market file  删除 market 组对 file 文件的所有权限

 

 

getfacl file 查看 file 文件的权限

 

Error1

 

[root@NFS_Server onair]# service rpcbind stop

 

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

chdir: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

 

 

解决办法

 

退出当前目录,重新执行此命令

 

---End---

 

posted @ 2019-08-09 15:43  樊伟胜  阅读(219)  评论(0编辑  收藏  举报