天天看点

实现NFS共享目录非root用户的读写

文档课题:实现NFS共享目录非root用户的读写.

系统:CentOS 7.9

服务器端:IP 192.168.133.190 + 主机名 prometheus

客户端:IP 192.168.133.191 + 主机名 dbserver1、用户读写

1.1、异常演示

[oracle@dbserver

data]$ mkdir oracle

mkdir:

cannot create directory ‘oracle’: Permission denied

[oracle@dbserver

data]$ df -h

Filesystem               Size  Used Avail Use% Mounted on

devtmpfs                 4.7G     0 

4.7G   0% /dev

tmpfs                    4.7G     0 

4.7G   0% /dev/shm

tmpfs                    4.7G   13M 

4.7G   1% /run

tmpfs                    4.7G     0 

4.7G   0% /sys/fs/cgroup

/dev/mapper/centos-root   89G 

9.2G   80G  11% /

/dev/sda1               1014M  185M 

830M  19% /boot

192.168.133.195:/data     20G  

32M   20G   1% /nfs/data

tmpfs                    959M   12K 

959M   1% /run/user/42

tmpfs                    959M     0  959M   0% /run/user/0

[oracle@dbserver

data]$ pwd

/nfs/data

如上所示:oracle用户在共享目录下无法写,以下实现客户端NFS挂载的目录非root用户也能读写.

1.2、所有用户

如果需要允许所有用户具有读写权限,服务器端修改共享目录的基础权限为777即可.

服务器端

[root@prometheus

/]# mkdir /backup/

[root@prometheus

/]# chmod 777 /backup/

[root@prometheus

backup]# vi /etc/exports

/backup

192.168.133.191/24(rw,sync)

[root@prometheus

/]# exportfs -r

客户端

[root@dbserver

mnt]# mount 192.168.133.190:/backup /mnt/backup

说明:经测试rman备份可以存放在此目录中.

1.3、唯一用户

说明:客户端root挂载,使用user1用户(uid

:1000)访问,在NFS服务端识别uid为1000

的用户访问,如果服务器端有对应的uid,则映射为对应用户,即:如果服务端uid

1000对应为testuser1,则最后客户端user1所对应的权限实际为服务端testuser1的权限.

1.3.1、客户端用户

客户端创建与服务器端相同UID的用户.

服务器端

[root@prometheus

/]# cat /etc/exports

/rmanbak

192.168.133.191/24(rw,sync)

[root@prometheus

/]# exportfs -r

[root@prometheus

/]# chown -R oracle:oinstall /rmanbak

[root@prometheus

/]# id oracle

uid=1001(oracle)

gid=1001(oinstall) groups=1001(oinstall),1002(dba),1003(oper)

客户端

[root@dbserver

mnt]# mkdir /mnt/rmanbak

[root@dbserver

mnt]# mount 192.168.133.190:/rmanbak /mnt/rmanbak

[root@dbserver

mnt]# df -h

Filesystem                Size  Used Avail Use% Mounted on

devtmpfs                  4.7G     0 

4.7G   0% /dev

tmpfs                     4.7G     0 

4.7G   0% /dev/shm

tmpfs                     4.7G   13M 

4.7G   1% /run

tmpfs                     4.7G     0 

4.7G   0% /sys/fs/cgroup

/dev/mapper/centos-root    89G  

30G   60G  33% /

/dev/sda1                1014M  185M 

830M  19% /boot

tmpfs                     959M     0 

959M   0% /run/user/1100

tmpfs                     959M   12K 

959M   1% /run/user/42

tmpfs                     959M     0 

959M   0% /run/user/0

tmpfs                     959M     0 

959M   0% /run/user/1101

192.168.133.190:/rmanbak  119G  

24G   96G  20% /mnt/rmanbak

注意:此时在客户端创建一个uid为1001的用户

[root@dbserver

home]# useradd -u 1001 -g oinstall -G dba,oper,asmdba leo

[root@dbserver

home]# su - leo

[leo@dbserver

~]$ cd /mnt/rmanbak

[leo@dbserver

rmanbak]$ touch hello.txt

[leo@dbserver

rmanbak]$ ll

total 0

-rw-r--r--

1 leo oinstall 0 Aug 29 15:11 hello.txt

[leo@dbserver

rmanbak]$ id leo

uid=1001(leo)

gid=1030(oinstall) groups=1030(oinstall),1031(dba),1032(oper),1021(asmdba)

[grid@dbserver

rmanbak]$ touch hello1.txt

touch:

cannot touch ‘hello1.txt’: Permission denied

结论:用户leo可以在共享目录写,而grid用户不能.

1.3.2、服务端用户

现在实现在服务器端创建与客户端oracle相同uid的用户liujun,到时建立一个目录划分给用户liujun用于客户端的rman备份.

服务器端

[root@prometheus

home]# useradd -u 1101 -g oinstall -G dba,oper liujun

[root@prometheus

home]# chown -R liujun:oinstall /rmanbak

[root@prometheus

home]# vi /etc/exports

[root@prometheus

home]# cat /etc/exports

/rmanbak

192.168.133.191/24(rw,sync)

[root@prometheus

home]# exportfs -r

客户端

[root@dbserver

home]# mkdir -p /mnt/rmanbak

[root@dbserver

home]# mount 192.168.133.190:/rmanbak /mnt/rmanbak

[oracle@dbserver

rmanbak]$ touch hello.txt

[oracle@dbserver

rmanbak]$ ll

total 0

-rw-r--r--

1 oracle oinstall 0 Aug 29 15:19 hello.txt

现在执行rman备份