Como 'criar uma cópia setuid' de algum comando?

0

Estou lendo o livro How Linux Works e há algo que não entendo:

On normal Linux systems, most processes have the same effective user ID and real user ID. By default, ps and other system diagnostic programs show the effective user ID. To view both the effective and real user IDs on your system, try this, but don’t be surprised if you find that the two user ID columns are identical for all processes on your system:

$ ps -eo pid,euser,ruser,comm

To create an exception just so that you can see different values in the columns, try experimenting by creating a setuid copy of the sleep command, running the copy for a few seconds, and then running the preceding ps command in another window before the copy terminates.

O autor disse: try experimenting by creating a setuid copy of ... , mas como criar uma cópia setuid do comando sleep ? Obrigado.

    
por cmal 01.05.2018 / 08:41

1 resposta

1

Primeiro, crie uma cópia em um local a partir do qual você possa executá-la (por exemplo, sistemas de arquivos montados com noexec não qualificam). Isso é /tmp/ no meu exemplo.

sudo cp /bin/sleep /tmp/

(usei sudo para garantir que a cópia pertença a root desde o início; isso me salvará sudo chown … depois). O seguinte comando define o bit setuid para o arquivo :

sudo chmod u+s /tmp/sleep

Agora, execute-o em segundo plano como um usuário comum:

/tmp/sleep 300 &

Em seguida, verifique a saída de ps :

ps -eo pid,euser,ruser,comm | grep sleep

O resultado é euser aponta para o proprietário do arquivo, ruser aponta para o usuário que é executado.

Observação: ao jogar com o setuid, lembre-se ele não funciona com scripts .

    
por 01.05.2018 / 10:50

Tags