[20170705]理解linux su命令.txt
--//我一般在維護時經常使用root用戶登入,然後su - oracle 轉到其他用戶操作
--//一般都加入- 參數.這已經成了條件反射...^_^.
# man su
Change the effective user id and group id to that of USER.
- , -l, --login
make the shell a login shell
--//也就是使用login裡面的shell,設定好對應的環境.
--//如果執行沒有-,也就是僅僅run a shell with substitute user and group IDs,不替換裡面的環境變數或相關參數.
1.測試1:
--//目前以root使用者登入:
# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk) ,10(wheel)
# echo $ORACLE_HOME
# export aaa=test
# echo $aaa
test
# su - oracle
$ id
uid =1001(oracle) gid=1001(oinstall) groups=101(fuse),1001(oinstall),1002(dba),1003(racoper),1004(asmdba)
# echo $aaa
##--//無顯示.
$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0.4/dbhome_1
2.如果執行不加參數- 呢?
$ echo $ORACLE_HOME
--//環境變數ORACLE_HOME沒有設定,而root設定的環境變數aaa呢?
$ echo $aaa
test
--//可以發現可以顯示環境變數aaa.
3.這樣看來應該很少使用-參數.
--//實際上rac的管理oracle引入許多東西,建立grid用戶.透過一些特殊例子來說明問題:
--//以grid用戶登入:
[grid@dm01dbadm02 ~ ]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 62120
Used space (kbytes) : 3852
ID : 2101855892
ice DBFS_DG
地 Device/File not configured
所/File not configured
Cluster registry inteity# Cluster registry inteity# Cluster registry inteity
Logical corruption check bypassed due to non-privileged user
--//OK.如果你加入參數:
$ ocrcheck -local
--//OK.如果你加入參數:
$ ocrcheck -local
#PROTL-602: Failed to retrieve data from the#PROTL-602: Failed to retrieve data the# local registry
PROCL-26: Error while accessing the physical storage Operating System error [Permission denied] [13]
#--//追蹤看看:
$ strace -f -o /tmp /b1.txt ocrcheck -local
PROTL-602: Failed to retrieve data from the local registry
PROCL-26: Error while accessing the physical storage Operating System error [Permission denied] [13]
#####################> #$ grep 'Permission denied' /tmp/b1.txt###14849 open("/u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr", O_RDONLY|O_SYNC) = -1 EACCESed ######--//要開啟檔案/u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr.######$ ls -l /u01/app/11.2.0.4/grid /cdata/dm01dbadm02.olr###-rw------- 1 root oinstall 272756736 2017-07-05 09:45:15 /u01/app/11.2.0.4/grid/cdata/dm01badm02. #--//注意看使用者,群組是root,oinstall,grid使用者根本沒有權限打開這個檔案.######--//要解決這個問題一些dba採用把root使用者裡面加入grid的許多環境變數.以root使用者執行,不過這樣我認為不是很好!!###--//其實很簡單的方法就是切換到root使用者執行,注意這個時候不能加入- 參數,因為這樣grid的環境參數就遺失了,實際上這樣就以###--//root用戶執行,而使用的環境還是grid用戶的.######$ su root###Password:####### id###uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10( wheel)#### echo $PATH###/usr/local/bin:/bin:/usr/bin:/u01/app/11.2.0.4/grid/bin:.:/u01/app/11.2.0.4 /grid/bin####### echo $ORACLE_HOME###/u01/app/11.2.0.4/grid######--//你可以發現grid的環境參數還在.這個使用以root用戶執行如下:#### ocrcheck -local###Status of Oracle Local Registry is as follows :### Version Total space (kbytes) : 空間 (kbytes) : 262120### Used space (kbytes) 記憶### Available space (kbytes) : ### Device/File Name Device/File integrity check succeeded# ##Local registry integrity check succeeded
Logical corruption check succeeded
--//當然還可以以另外的方式,就是使用sudo指令. sudo ocrcheck -local##--/
##--# etc/sudoers,加入:
grid ALL=(ALL) ALL
$ sudo ocrcheck -local
[sudo] password for grid:
Status of Oracle Local Registry is as follows :
Version : 62120
Used space (kbytes) : 2800
ID : 1632195400
ice u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr
Local registry integrity check succeeded
Logical corruption check succeeded
以上是[20170705]理解linux su指令.txt的詳細內容。更多資訊請關注PHP中文網其他相關文章!