I think I want to create a virtual tty connected to an interactive shell
Bem, claro, você pode fazer isso - mas como você vai se conectar a este tty? Se você tiver uma conexão serial no dispositivo, poderá executar um shell interativo:
sh </dev/ttyS0 >/dev/ttyS0 2>/dev/ttyS0
Não há login envolvido, você conecta um cabo serial e obtém um shell de root. Se você está se conectando através do SSH, isso é menos fácil, porque o SSH não foi projetado para ignorar o log in. É claro que você pode definir uma senha em branco para a conta root e configurar o SSH para autorizar logins root.
Mas isso é o que você deseja é permitir que qualquer pessoa que possa se conectar ao dispositivo execute comandos como root. Se você quiser permitir que o usuário administrador eleve os privilégios ao root, então, envolver um terminal não faz sentido.
A maneira mais direta seria definir uma senha para a conta raiz que você conhece. Como alternativa, instale o sudo no dispositivo e adicione a seguinte linha ao arquivo /etc/sudoers
:
admin ALL=(ALL:ALL) ALL
Em seguida, você pode executar comandos como root na conta admin executando sudo mycommand
( sudo -s
para obter um shell). Se você não quiser digitar a senha da conta admin
quando executar sudo
, adicione NOPASSWD:
após o parêntese de fechamento.
Se o sistema de arquivos raiz for somente leitura, você poderá instalar sudo
em outro lugar. O binário deve estar em um sistema de arquivos que é montado sem as opções noexec
ou nosuid
.