У меня есть сервер Solaris 11.1 с базой данных 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 разрешение на чтение процессов, которыми он уже владеет?
Чтобы ответить на вопрос Иана, файлы в каталоге 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
В Solaris теперь используются наборы привилегий (см .: 'man привилегии' на 'man ppriv'). Команда pargs могла унаследовать меньше привилегий (от оболочки), чем проверенный процесс 1651 имел такую же эффективность. Фактически это вызвало отказ в разрешениях.
Для проверки привилегий процесса можно использовать команду ppriv:
ppriv -v ...
Установить:
ppriv -s ... ...
Чтобы перечислить все привилегии с их описанием:
ppriv -lv
Чтобы понять, почему существует проблема, вы можете использовать:
ppriv -D -e паргс -e 1651
Вам необходимо проверить права доступа к файлам в каталоге / proc / 1651. я так думаю psinfo файл содержит соответствующую информацию, поэтому проверьте его разрешения.