Vipolnenie skripta dlya root obichnim userom
#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
И снова двойка. Потому что со скриптом это работать не будет.
sudo
+1 осталось тока объяснить человеку, что это такое, и как настроить чтобы для конкретного приложения работало не спрашивая пароль
man sudo
имя_пользователя ALL=NOPASSWD: ALL
это если для запуска всего как от root'a
там вроде можно разные ограничения устанавливать.. я с этим не заморачивался - man sudo
ps а еще вроде можно (но это наверное неправильно?) изменить права доступа/владельца скрипта ..
Spasibo vsem. Seychas poprobuyu sdelat'
В ppp_start.pl - всё, что нам нужно, и он уже будет от root исполняться...
//////// a.c
#include <stdio.h>
int main(void)
{
return execve("ppp_start.pl",NULL,NULL);
}
///////////
#chmod 4711 a.out
#chmod 700 ppp_start.pl
Да, так получится. Только вот без полного пути к скрипту такой бинарник - это большая дыра. Но даже если его написаь без ошибки, всё равно некрасивое решение. Мне кажется sudo лучше.
P.S. Кстати, конкретно в случае скрипта на перле прямое решение есть - suidperl. В случае других языков проще воспользоваться sudo.
> там вроде можно разные ограничения устанавливать.. я с этим не заморачивался - man sudo
А зачем такое надо? Не проще ли под рутом тогда сидеть?
не проще
Оставить комментарий
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'.