天天看點

實作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備份