LINUX.ORG.RU

suid bash


0

0

sergey@sdio:~$ mkdir aaa
sergey@sdio:~$ cd aaa
sergey@sdio:~/aaa$ sudo cp /bin/bash ./
Password:
sergey@sdio:~/aaa$ ls -l ./bash 
-rwxr-xr-x  1 root root 625228 Feb 28 20:10 ./bash
sergey@sdio:~/aaa$ sudo chmod u+s ./bash 
sergey@sdio:~/aaa$ ls -l ./bash 
-rwsr-xr-x  1 root root 625228 Feb 28 20:10 ./bash
sergey@sdio:~/aaa$ ./bash -c 'touch tttt'
sergey@sdio:~/aaa$ ls -l
total 612
-rwsr-xr-x  1 root   root   625228 Feb 28 20:10 bash
-rw-r--r--  1 sergey sergey      0 Feb 28 20:11 tttt
              ^^^^^^^^^^^^^^ почему не root:root ???
sergey@sdio:~/aaa$ cd ..
sergey@sdio:~$ rm -rf aaa/
sergey@sdio:~$ 

Debian/Sarge, selinux/grsecurity отсутствуют
$ uname -a
Linux sdio 2.6.8-2-686-smp #1 SMP Tue Aug 16 12:08:30 UTC 2005 i686 GNU/Linux
★★★★★

Re: suid bash

А разве файл создаётся не с EUID?

UVV ★★★★★ ()
Ответ на: Re: suid bash от UVV

Re: suid bash

То есть наоборот - он создаётся с UID!
А EUID в данном случае 0.

UVV ★★★★★ ()
Ответ на: Re: suid bash от UVV

Re: suid bash

Да просто если сделать
$ ./bash
a потом дать команду id ???

sdio ★★★★★ ()
Ответ на: Re: suid bash от sdio

Re: suid bash

... то получаем UID пользователя!

UVV ★★★★★ ()
Ответ на: Re: suid bash от UVV

Re: suid bash

$ ./bash -c 'echo $UID'
1000
$ ./bash -c 'echo $EUID'
1000

Почему?

sdio ★★★★★ ()
Ответ на: Re: suid bash от sdio

Re: suid bash

sergey@sdio:~/aaa$ ./bash -c 'head -n1 /etc/shadow'
head: cannot open `/etc/shadow' for reading: Permission denied
sergey@sdio:~/aaa$ 


sergey@sdio:~/aaa$ ls -l ksh
-rwsr-xr-x  1 root root 180812 Feb 28 20:38 ksh
sergey@sdio:~/aaa$ ./ksh -c 'head -n1 /etc/shadow'
root:$1$VRah.HMg$l0zgOfsd7rahU88tqPepL.:13162:0:99999:7:::
sergey@sdio:~/aaa$

sdio ★★★★★ ()
Ответ на: Re: suid bash от sdio

Re: suid bash

Хочешь сказать, что дело в bash ?

UVV ★★★★★ ()
Ответ на: Re: suid bash от UVV

Re: suid bash

uvv% ./zsh -c 'echo $UID'
1000
uvv% ./zsh -c 'echo $EUID'
0
uvv%

UVV ★★★★★ ()
Ответ на: Re: suid bash от UVV

Re: suid bash

uvv% ll
-rwsr-xr-x 1 root root 454748 2005-08-03 09:45 zsh*

uvv% ./zsh -c 'touch tttt'
uvv% ll
-rw-r--r-- 1 root users 0 2006-03-01 01:47 tttt
-rwsr-xr-x 1 root root 454748 2005-08-03 09:45 zsh*
uvv%

UVV ★★★★★ ()

Re: suid bash

man seteuid просветлит твои мысли

anonymous ()
Ответ на: Re: suid bash от anonymous

Re: suid bash

еще точнее setuid(geteuid());

anonymous ()
Ответ на: Re: suid bash от anonymous

Re: suid bash

Меня интересует man bash, а так мало ли какие функции доступны программисту :-)

sdio ★★★★★ ()
Ответ на: Re: suid bash от sdio

Re: suid bash

Что ты хочешь от меня? - я zsh использую! ;-))

UVV ★★★★★ ()
Ответ на: Re: suid bash от sdio

Re: suid bash

ну сделай ты запускалку suid'ную superbash.c
#include <sys/types.h>
#include <unistd.h>
#define RunShell "/bin/bash"

main()
{
setuid(geteuid()); // become suid
setgid(getegid());
execlp(RunShell,RunShell,0);
exit(0);
}

anonymous ()
Ответ на: Re: suid bash от UVV

Re: suid bash

Ты сам отвечать вызвался, чего теперь орешь?

sdio ★★★★★ ()
Ответ на: Re: suid bash от anonymous

Re: suid bash

Вопрос был о поведении suid bash, а не как написать suid wrapper.

sdio ★★★★★ ()
Ответ на: Re: suid bash от sdio

Re: suid bash

Коментарий из исходников баша

/* Non-zero means that this shell is running in `privileged' mode. This is required if the shell is to run setuid. If the `-p' option is not supplied at startup, and the real and effective uids or gids differ, disable_priv_mode is called to relinquish setuid status. */

попробуй `-p'

kosmonavt ()
Ответ на: Re: suid bash от kosmonavt

Re: suid bash

Оно. Спасибо!

И в мане есть, в жизни бы не нашел, так как искал по uid/euid, a они полностью написали "effective user id", а весь ман от корки до корки читать еще то развлечение.

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