Por que isso não gera um shell de root?

2

Estou no OSX 10.8.

Antes da minha experiência, é assim:

Nathan-der-Graue:~ max$ ls -l /bin/bash
-r-xr-xr-x  1 root  wheel  1333920 17 Feb 15:22 /bin/bash

Então eu corro

Nathan-der-Graue:~ max$ sudo chmod +s /bin/bash

Eu esperava que isso fizesse o bash sempre aparecer como um shell de root, mas parece que isso não mudou nada no comportamento do bash:

Nathan-der-Graue:~ max$ /bin/bash
bash-3.2$ whoami
max

Eu sei que isso não é uma boa ideia. Onde está o meu erro? Acho que entendi mal a sinalização + s.

    
por Max Ried 01.03.2013 / 14:26

2 respostas

3

Ele não funciona porque o bash verifica explicitamente o caso "running setuid" e define seu EUID como o mesmo - em outras palavras, ele descarta todos os privilégios que ele pode ter obtido do bit setuid.

Os processos têm vários UIDs separados - os dois principais são o RUID (UID real, geralmente apenas "UID"), que determina quem é o proprietário do processo e o EUID (UID efetivo), que determina os privilégios que o processo possui.

Quando o EUID é 0 (raiz), o processo pode definir qualquer RUID ou EUID desejado; e se o processo não tiver privilégios de root, ele ainda poderá definir seu RUID como o EUID ou vice-versa.

Quando o bit setuid está definido, ele afeta apenas o novo processo EUID, não o RUID - em outras palavras, ele apenas fornece os privilégios do proprietário do arquivo, não o identidade. Tente novamente com /usr/bin/id .

    
por 01.03.2013 / 14:42
-1

Se você tem sudo privilégios, pode executar

sudo -s

para obter um shell de root.

    
por 01.03.2013 / 16:09

Tags