我有一台运行 Oracle 数据库的 Solaris 11.1 服务器。我想以 oracle 用户身份读取正在运行的 oracle 进程的环境,如下所示:
$ id
uid=100(oracle) gid=100(oinstall)
$ ps -fuoracle | grep pmon
oracle 1651 1 0 10:25:37 ? 0:01 ora_pmon_TESTDB
$ pargs -e 1651
pargs: cannot examine 1651: permission denied
$ ls -ld /proc/1651
dr-x--x--x 5 oracle oinstall 864 Nov 23 10:25 /proc/1651
我如何授予 Oracle 读取其已拥有的进程的权限?
回答 Iain 的问题,PID 目录下的文件具有不同的权限,但仍然归 oracle:oinstall 所有,如下所示:
dr-x------ 2 oracle oinstall 32 Nov 23 10:25 contracts
-r-------- 1 oracle oinstall 36 Nov 23 10:25 cred
--w------- 1 oracle oinstall 0 Nov 23 10:25 ctl
lr-x------ 1 oracle oinstall 0 Nov 23 10:25 cwd ->
dr-x------ 2 oracle oinstall 528 Nov 23 10:25 fd
-r-------- 1 oracle oinstall 0 Nov 23 10:25 ldt
-r--r--r-- 1 oracle oinstall 120 Nov 23 10:25 lpsinfo
-r-------- 1 oracle oinstall 816 Nov 23 10:25 lstatus
-r--r--r-- 1 oracle oinstall 536 Nov 23 10:25 lusage
dr-xr-xr-x 3 oracle oinstall 64 Nov 23 10:25 lwp
-r-------- 1 oracle oinstall 9504 Nov 23 10:30 map
dr-x------ 2 oracle oinstall 1824 Nov 23 10:25 object
-r-------- 1 oracle oinstall 258800 Nov 23 10:25 pagedata
dr-x------ 2 oracle oinstall 2352 Nov 23 10:25 path
-r-------- 1 oracle oinstall 72 Nov 23 10:25 priv
-r--r--r-- 1 oracle oinstall 336 Nov 23 10:25 psinfo
-r-------- 1 oracle oinstall 9504 Nov 23 10:25 rmap
lr-x------ 1 oracle oinstall 0 Nov 23 10:25 root ->
-r-------- 1 oracle oinstall 2304 Nov 23 10:25 sigact
-r-------- 1 oracle oinstall 1136 Nov 23 10:25 status
-r--r--r-- 1 oracle oinstall 256 Nov 23 10:25 usage
-r-------- 1 oracle oinstall 0 Nov 23 10:25 watch
-r-------- 1 oracle oinstall 119016 Nov 23 10:25 xmap
答案1
Solaris 现在使用权限集(请参阅:'man 权限' na 'man ppriv')。 pargs 命令可能继承了比所检查的进程 1651 更少的权限(来自 shell)。实际上,它导致拒绝权限。
要检查进程权限,可以使用 ppriv 命令:
ppriv -v ...
设置:
ppriv-s ... ...
列出所有权限及其描述:
私有-lv
要了解问题原因,您可以使用:
ppriv -D -e pargs -e 1651
答案2
您需要检查 /proc/1651 目录中文件的权限。我认为信息系统文件包含相关信息,因此请检查其权限。