On Tue, Jun 13, 2006 at 07:04:18PM +0400, Alexey Tourbin wrote: > On Tue, Jun 13, 2006 at 04:13:33PM +0400, Dmitry V. Levin wrote: > > On Tue, Jun 13, 2006 at 02:06:48PM +0400, Alexey Tourbin wrote: > > > Из cron.daily нужно запускать программу на шелле (примерно как osec), > > > при этом желательно выполнять программу от псевдопользователя и > > > сбросить все права, кроме CAP_DAC_READ_SEARCH (которые должны быть как у > > > рута). Как это сделать с помощью libcap-utils? > > > > > > # sucap at at ls > > > Caps: =ep cap_setpcap-ep > > > > Без setpcap с помощью sucap никак не сделать. > > А как с setpcap сделать? > > # su -l nobody -s /bin/sh -c 'sleep 999999' & > [1] 14437 > # /sbin/setpcaps -q cap_dac_read_search=eip $! > [caps set to: > = cap_dac_read_search+eip > ] > Failed to set cap's on process `14437': (Operation not permitted) В общем есть типовая задача: рут хочет запускать скрипты с пониженными привилегями (от псевдопользователя), но с некоторыми рутовыми capabilities. At some point, I decided I'd like to run a certain program non-root with certain capabilities only. I looked at the above two programs and stupidly thought they'd actually allow me to do this. http://www.uwsg.iu.edu/hypermail/linux/kernel/0503.1/2540.html Оказывается, что приемлемого решения этой типовой задачи нет. Что нужно, вроде ясно: suexeccap -u $uid -g $gid -c $cap -- qa-robot -m root@localhost psec /lib /usr/lib