On Tue, Jun 13, 2006 at 07:30:11PM +0400, Alexey Tourbin wrote: > В общем есть типовая задача: рут хочет запускать скрипты > с пониженными привилегями (от псевдопользователя), но с некоторыми > рутовыми capabilities. > suexeccap -u $uid -g $gid -c $cap -- qa-robot -m root@localhost psec /lib /usr/lib Нарисовал то, что хотел нарисовать. Странное дело -- не работает! Я кажется плохо понял, как при exec'е наследуются capabilities. Кто-нибудь может объяснить? $ gcc -Wall suexeccap.c -o suexeccap -lcap $ gcc -Wall test_cap.c -o test_cap -lcap $ sudo ./suexeccap -u nobody -g nobody -c cap_dac_read_search=eip ./test_cap = cap_dac_read_search+i $ То есть я прошу у него "eip", а после exec'а остается только "i". Если я правильно понимаю, то именно из-за этого не работает повышение прав на файловую систему: $ sudo ./suexeccap -u nobody -g nobody -c cap_dac_read_search=eip find /lib |head find: /lib/modules: Permission denied find: /lib: Permission denied /lib /lib/i686 /lib/i686/tls /lib/modules /lib/tls /lib/ld-linux.so.2 /lib/libnss1_dns.so.1 /lib/terminfo /lib/terminfo/E /lib/terminfo/E/Eterm $ sudo ./suexeccap -u nobody -g nobody -c cap_dac_read_search=eip id uid=99(nobody) gid=99(nobody) $ И сразу вопрос ребром: типовая задача, описанная в начале этого письма, может быть решена в принципе?