文檔課題:實作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備份