Vipolnenie skripta dlya root obichnim userom

zmei777

Est' skript, kotoriy mozhet zapuskat' tol'ko root, nado sdelat' chtom ego mogli zapuskat' obichnie pol'zovateli. Kak napisat' skript, kotoriy bi zapuskal nuzhniy s pravami roota i mozhno li eto? Konkretno skript adsl-start (pppoe soedinenie v debian).
P.S. Sorry za translit, po drugomu nemogu poka pisat'.

alexkravchuk

setuid

#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
int main(void)
{
printf("uids started:[%d] real:[%d]\r\n",getuidgeteuid;
return 0;
}

#chmod +s a.out

sergey_m

И снова двойка. Потому что со скриптом это работать не будет.

evgen5555

sudo

gsharov

+1 осталось тока объяснить человеку, что это такое, и как настроить чтобы для конкретного приложения работало не спрашивая пароль

katrin2201

sudo
man sudo

SVS111

в файл /etc/sudoers вписываешь строчку
имя_пользователя ALL=NOPASSWD: ALL
это если для запуска всего как от root'a
там вроде можно разные ограничения устанавливать.. я с этим не заморачивался - man sudo
ps а еще вроде можно (но это наверное неправильно?) изменить права доступа/владельца скрипта ..

iClondike

Spasibo vsem. Seychas poprobuyu sdelat'

alexkravchuk

Попытка N2

//////// a.c
#include <stdio.h>
int main(void)
{
return execve("ppp_start.pl",NULL,NULL);
}
///////////
#chmod 4711 a.out
#chmod 700 ppp_start.pl
В ppp_start.pl - всё, что нам нужно, и он уже будет от root исполняться...

sergey_m

> return execve("ppp_start.pl",NULL,NULL);
Да, так получится. Только вот без полного пути к скрипту такой бинарник - это большая дыра. Но даже если его написаь без ошибки, всё равно некрасивое решение. Мне кажется sudo лучше.
P.S. Кстати, конкретно в случае скрипта на перле прямое решение есть - suidperl. В случае других языков проще воспользоваться sudo.

ava3443

> это если для запуска всего как от root'a
> там вроде можно разные ограничения устанавливать.. я с этим не заморачивался - man sudo
А зачем такое надо? Не проще ли под рутом тогда сидеть?

SVS111

не проще
Оставить комментарий
Имя или ник:
Комментарий: