Вт, 26.11.2024, 08:28
Приветствую Вас Гость | RSS
Главная | Странно работает cron в unix z/os - Форум | Регистрация | Вход
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Странно работает cron в unix z/os
fogerДата: Сб, 04.05.2013, 08:59 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Здравствуйте.

IBM Z9/BC, Z/OS v 1.10.

Обнаружил следующую проблему - при перезагрузке z/os демон cron в unix-подсистеме запускается, но не выполняет заданий от обычных пользователей.
Вот что пишет в лог (/usr/spool/cron/log):
> CMD: /u/orabay/ora/orastat.sh
>  ORABAY 83886336 c Sun Jan 27 22:00:00 2013
setuid failed: uid=4: EDC5139I Operation not permitted.
<  ORABAY 83886336 c Sun Jan 27 22:00:00 2013 rc=127


orabay - это имя пользователя.

Захожу в telnet под юзером ibmuser, делаю kill процессу cron, снова запускаю:
/usr/sbin/cron &
и после этого все работает, как надо:
> CMD: /u/orabay/ora/orastat.sh
>  ORABAY 83886384 c Sun Feb  3 22:00:01 2013
<  ORABAY 83886384 c Mon Feb  4 06:36:09 2013 rc=0


Вот конец скрипта /etc/rc, в который добавлен запуск cron:
# Start the INET daemon for remote login activity
BPX_JOBNAME='INETD' /usr/sbin/inetd /etc/inetd.conf &
_BPX_JOBNAME=CROND /usr/sbin/cron &
sleep 5
echo /etc/rc script executed, `date`


В чем может быть проблема?
 
XOpenДата: Сб, 04.05.2013, 13:44 | Сообщение # 2
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
посмотреть под кем реально запускается cron при старте системы. Возможно это не ibmuser.

А также посмотреть у какого юзера UID=4. У ibmuser есть OMVS сегмент? Какие пермишины стоят на скрипте и запускаемых файлах? Есть ли где setUID bit?

По описанию процесс зачем-то попытался изменить права запускаемого процесса. (например если UID поменять с 4 на 0, то все заработает. Можно проверить, но оставлять так конечно не надо. Лучше понять что происходит.)
 
fogerДата: Сб, 04.05.2013, 18:17 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Цитата (XOpen)
посмотреть под кем реально запускается cron при старте системы. Возможно это не ibmuser.
А как посмотреть?

Цитата (XOpen)
А также посмотреть у какого юзера UID=4.
Это orabay, от имени которого я запускаю задание.

Цитата (XOpen)
По описанию процесс зачем-то попытался изменить права запускаемого процесса. (например если UID поменять с 4 на 0, то все заработает.
От ibmuser задания при таком старте запускает. Проверял через at.

Цитата (XOpen)
Какие пермишины стоят на скрипте и запускаемых файлах? Есть ли где setUID bit?

Код
ls -alF
-rwsr-sr-x   1 ORABAY   SYS1         233 Apr 27  2012 orastat.sh*
 
GregoryДата: Пн, 06.05.2013, 11:26 | Сообщение # 4
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
Цитата (foger)
Какие пермишины стоят на скрипте и запускаемых файлах? Есть ли где setUID bit?
ls -alF-rwsr-sr-x 1 ORABAY SYS1 233 Apr 27 2012 orastat.sh*
-rwsr-sr-x
И SetUID бит, и SetGID бит установлены... Сергей - экстрасенс biggrin hands


Сообщение отредактировал Gregory - Пн, 06.05.2013, 12:19
 
fogerДата: Пн, 06.05.2013, 12:35 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Цитата (Gregory)
И SetUID бит, и SetGID бит установлены...
Т.е. их нужно убрать?
Я не помню, зачем они были установлены...
 
GregoryДата: Вт, 07.05.2013, 23:42 | Сообщение # 6
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
Цитата (foger)
Т.е. их нужно убрать?Я не помню, зачем они были установлены...
т.е. это работает именно так, как и должно работать  biggrin
setUID бит вызывает изменение эффективного UID на UID владельца файла (т.е. ORABAY) при запуске этого файла. А UID, с которым запускается сам CRON, у Вас, похоже, не 0, и потому процесс не может сменить UID.
Если нужно, чтобы скрипт выполнялся именно с UID ORABAY, то простейшим способом это можно сделать так:  разрешить процессу cron SetUID root (RACF BPX.SUPERUSER в классе FACILITY), владельцем скрипта сделать root а в начале скрипта выполнять su orabay, или выполнять его su orabay orastat.sh, а s-бит, естественно, убрать. Однако, должен отметить, что все это создает дырень в безопасности... Так что Вы сначала все же определитесь, с какими правами должен выполняться orastat.sh. Возможно, лучше будет выполнять этот скрипт в пакетном задании (EXEC PGM=BPXBATCH) с нужным USER= в JOB, а само это задание запускать из CRON...


Сообщение отредактировал Gregory - Ср, 08.05.2013, 01:00
 
fogerДата: Ср, 08.05.2013, 09:02 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Спасибо, мы подумаем.
А где можно посмотреть, как загружается Unix подсистема? В частности, от имени кого запускается содержимое /etc/rc?

Добавлено (08.05.2013, 09:02)
---------------------------------------------
Судя по ps -Af, системные процессы запускаются от юзера DFS. Я так понимаю, это аналог root на этой платформе? Если зайти как ibmuser и сделать "su -", получится именно DFS.

 
XOpenДата: Ср, 08.05.2013, 13:26 | Сообщение # 8
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Имя не всегда правда. Используется UID из OMVS сегмента, а имя первого найденного пользователя. Если у вас несколько пользователей имеют UID=0, то рисуется тот что в алфавите первый.

Хочется знать uid DFS? (лучше в RACF посмотреть) Заодно UID ibmuser на всякий случай.
 
XOpenДата: Ср, 08.05.2013, 16:53 | Сообщение # 9
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Наверно еще хочется знать как вы cron запускаете? Где вы его прописали? Перед убийством cron посмотрите под кем он запущен.

Есть десяток способов дать права, мне кажется стоит посмотреть в RACF кто прописан в FACILITY BPX.DAEMON

The additional control that BPX.DAEMON provides involves the use of kernel services such 
as setuid() that change a caller's z/OS user identity. Any user can issue a setuid() which 
follows a successful __passwd() call to the same target user ID. However, a user with 
daemon authority can issue setuid() without knowing the target user's password.
 
GregoryДата: Ср, 08.05.2013, 17:07 | Сообщение # 10
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
Цитата (XOpen)
Есть десяток способов дать права, мне кажется стоит посмотреть в RACF кто прописан в FACILITY BPX.DAEMON

я думаю, что это хороший (если не лучший) способ. ПисАл пост #6 поздно вечером и как-то забыл про BPX.DAEMON.

Цитата (XOpen)
Имя не всегда правда.
Конечно. Имя в USS, как и в UNIX, не имеет значения, значение имеет только UID. Superuser это не root, а UID 0 :-) В USS связь USERID - UID в RACF, в UNIXах - в /etc/passwd (/etc/security/passwd).
 
XOpenДата: Ср, 08.05.2013, 17:10 | Сообщение # 11
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Вот нашел почти тоже самое в кроностроении:

z/OS UNIX System Services Planning
15.6.4.3 Steps for customizing the cron daemon

When you are done, the cron daemon has been customized and can be started.
 
   It must be started by a userid with READ permission to the BPX.DAEMON resource 
    profile in the FACILITY class. (For more information about BPX.DAEMON, see "Setting 
    up the BPX.* FACILITY class profiles" in topic 4.9 and "Establishing the correct level of 
    security for daemons" in topic 15.3.)
 
fogerДата: Ср, 08.05.2013, 20:04 | Сообщение # 12
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Всем спасибо.
В понедельник еще подробнее посмотрю.
Задание запланировано на вечер воскресенья, посмотрим, как оно выполнится без SetUID и SetGID.
 
XOpenДата: Ср, 08.05.2013, 20:40 | Сообщение # 13
Генерал-майор
Группа: Администраторы
Сообщений: 325
Репутация: 4
Статус: Offline
Без SetUID orabay получит другие права и либо сам не сможет в свои же файлы зайти, либо сможет зайти в туда куда ему не положено. Думаю вызовут кого-то в воскресенье ночью все разгребать...
 
fogerДата: Вт, 13.08.2013, 08:31 | Сообщение # 14
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Ничего страшного. Это не настолько важное задание ;-)

Добавлено (15.05.2013, 13:18)
---------------------------------------------
Кстати, забыл написать - задание нормально сработало и без SetUID и SetGID.
Теперь надо подождать перезагрузки z/os, чтобы убедиться в том, что и после нее все будет хорошо.
Правда, когда будем перезагружать, неизвестно. Может, через год  smile

Добавлено (13.08.2013, 08:31)
---------------------------------------------
Здравствуйте.
Вот произошла перезагрузка мэйнфрейма.
Но записи в логе те же самые sad

 

Код
*** cron started *** pid = 33554436 Mon Aug  5 03:20:45 2013
> CMD: /u/orabay/ora/orastat.sh
>  ORABAY 67109714 c Sun Aug 11 22:00:01 2013
setuid failed: uid=4: EDC5139I Operation not permitted.
<  ORABAY 67109714 c Sun Aug 11 22:00:01 2013 rc=127

Код
cat /usr/spool/cron/crontabs/ORABAY
0 22 * * 0  /u/orabay/ora/orastat.sh

Код
ls -alF /u/orabay/ora/orastat.sh
-rwxr-xr-x   1 ORABAY   SYS1         233 Apr 27  2012 orastat.sh*


Код
cat /u/orabay/ora/orastat.sh                     
#!/bin/sh                    
export ORACLE_HOME=/ora/v10                            
export LIBPATH=$LIBPATH:/ora/v10/lib                   
export LD_LIBRARY_PATH=/ora/v10/lib                    
export ORACLE_HOSTNAME=sys1.baikal.net                 
export ORACLE_SID=ORCL                    
/ora/v10/bin/sqlplus /nolog @/u/orabay/ora/orastat.sql
exit


Код
ls -alF /ora/v10/bin/sqlplus
-rwxrwxr-x   1 ORABAY   SYS1     2830336 Jul 18  2007 sqlplus*


Код
ls -alF /u/orabay/ora/orastat.sql
-rw-r--r--   1 ORABAY   SYS1       14363 Dec 21  2012 orastat.sql

Как видно, setuid бита нигде не установлено.
Пойду читать про BPX.DAEMON, как советовали выше...
 
  • Страница 1 из 1
  • 1
Поиск: