LINUX.ORG.RU

Как разрешить запускать прогу только с опр. параметром?


0

0

САБЖ!
Пример:
Cmnd_Alias PROG = /sbin/prog
user ALL = NOPASSWD: PROG
Юзер может запустить и sudo /sbin/prog -bla1 и
sudo /sbin/prog -bla5, а нужно только первое...
P.S. Если в алиасе проставляешь параметр, то:
1) visudo ругаеться
2) Никто не мешает юзеру ввести /sbin/prog -bla1 -bla5...

anonymous

Чтобы предотвратить подмену PATH и других переменных юзером, делай так:

$launch=/usr/local/bin/launch.sh
echo '#!/bin/sh'                   > $launch
echo "su - -c '/sbin/prog -bla1'" >> $launch
chmod 4755 $launch

suser
()
Ответ на: комментарий от suser

Есть более спортивное решение: пишем

#include <unistd.h>

int main() {
    execl("/path/to/program","/path/to/program","paramater&
quot;,null);
}

# gcc -o proga_wrapper proga_wrapper.c
# mv proga_wrapper /usr/bin

# chown root:somegroup /usr/bin/proga_wrapper
# chmod 755 /usr/bin/proga_wrapper
# chmod g+s /usr/bin/proga_wrapper

# chown root:somegroup /path/to/program
# chmod 750 /path/to/program

Но сначала читать man про chmod и chown.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Без su - вроде ведь будет передаваться куча перменных, например PATH, VISUAL, EDITOR и т. д., так что вместо выскочившего "less /var/log/prog.log" может произойти "rm -rf / /var/log/prog.log". Или эта программа на C не импортирует и экспортирует переменные?

suser
()

Странно, что ругается, насколько я помню, в мане по sudoers сказано, что если команда написана с аргументом, то только с таким аргументом её и можно будет запускать. Попробуй просто отредактировать каким-нибудь редактором (не через visudo), и посмотреть, что будет. Или, может быть, попробуй обрамить запятыми (то есть поместить эту команду между двумя другими командами в этом Cmnd_Alias'е.

У меня, кстати, eject -t, mount'ы разные, все с аргументами, и ничего.

Laz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.