LINUX.ORG.RU

> но sh не хочет с правами root запускаться, он всё равно запускается с правами пользователя.

Это как? Если запускать sh программой с рутовыми правами, то процесс sh должен по идее уначледовать права.

Я относительно недавно написал влосипед для генерации SUID'ных бинарников для запуска скриптов, может подойдёт:

http://www.linux.org.ru/view-message.jsp?msgid=3729779
http://exec-wrapper.googlecode.com/files/exec-wrapper-1.0.1.tar.bz2

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

Ссылки пока не смотрел, но вообще вот:
#!/bin/sh
mkdir /home/dim/lalala
mkdir /lalala
___________________________
#include <unistd.h>
int main(int argc,char *argv[]){
execl("/bin/sh","/bin/sh","/home/dim/Desktop/test/sh",0);
}
________________________-
первая команда выполнилась, а вторая нет

ferrum2688
() автор топика

Я в программировании на сях под линух не силен, но могу посоветовать использовать аналог su, т.е. явно задать, что дочерний процесс ты запускаешь от рута.

nnz ★★★★
()
Ответ на: комментарий от dimon555

написать си обёртку, это значит переделать скрипт sh в си?

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

Я полагаю, скрипт с suid правами может запускать процессы от имени любого пользователя. Ведь в рутовом шелле su и sudo пароль не просят :)

nnz ★★★★
()
Ответ на: комментарий от ferrum2688

> suid

да не нужно тебе это, не нужно! sudo можно и нужно запускать от пользователя, оно само поднимет привелегии запускаемого процесса до рутовых.

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

да, лучше даже вот так :

denis@laptop:~$ chmod 755 test.sh
denis@laptop:~$ sudo ./test.sh
root

isden ★★★★★
()

#!/bin/sh -p
так начинается твой скрипт


man bash (т.к. в линуксе /bin/sh это линк на /bin/bash)

If the shell is started with the effective user (group) id not equal to
the real user (group) id, and the -p option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
the SHELLOPTS variable, if it appears in the environment, is ignored,
and the effective user id is set to the real user id. If the -p option
is supplied at invocation, the startup behavior is the same, but the
effective user id is not reset.

sdio ★★★★★
()
Ответ на: комментарий от isden

>скрипт с suid
Я имел в виду "программа с suid-правами". И это было просто предположение.

>а потом нубы ноют про "мифы о безопасности линупса".

Это к чему?

nnz ★★★★
()
Ответ на: комментарий от ferrum2688

Начинаю понимать как работает судо, похоже это то что нужно.

ferrum2688
() автор топика
Ответ на: комментарий от nnz

> Это к чему?

к тому что не есть хорошо раскидывать suid налево и направо. я в свое время наоборот оставлял этот бит только там где это действительно нужно было.

isden ★★★★★
()
Ответ на: комментарий от sdio

Шо-то как-то оно не воркает.

[nnz@imp art]$ ls -al /usr/bin/rndcread
-rwsr-xr-x 1 root root 67 2009-06-29 12:41 /usr/bin/rndcread*
[nnz@imp art]$ cat /usr/bin/rndcread
#!/bin/sh -p
whoami
/usr/sbin/rndc -c /var/lib/named/etc/rndc.conf status
[nnz@imp art]$ rndcread
nnz
rndc: error: none:0: open: /var/lib/named/etc/rndc.conf: permission denied
rndc: could not load rndc configuration

nnz ★★★★
()
Ответ на: комментарий от ferrum2688

От обычного пользователя не прокатывает. А если через su или sudo, то -p нафиг не надо.

nnz ★★★★
()

Нострадамус мод
Следующий вопрос будет, как сделать ldpreload к suid программе

dimon555 ★★★★★
()
Ответ на: комментарий от true_admin

Как страшно жить... :)

Спасибо, это был непростительный пробел в моем образовании.

nnz ★★★★
()
Ответ на: комментарий от ferrum2688

вам в коде своем нужно еще сделать setuid(0); - от одного euid=0 толку мало...

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