Estou tentando aprender scripts bash. Estou trabalhando em um problema prático e, a certa altura, preciso adicionar uma linha a um arquivo que requer root
permissão para escrever.
O código fica assim:
# some code
echo "add this line to the code" >> fileName
# some code
É possível, de alguma maneira, fazer com que o script solicite a senha root, valide a senha e, na autenticação bem-sucedida, modifique o arquivo? O script deve retornar ao modo de usuário e continuar a execução do comando.
fonte
sudo
, as senhas não parecem ser armazenadas em cachesu
.Você poderia usar
tee
comsudo
:echo
A saída de é redirecionada com|
( canal ) parasudo tee
.tee
lê da entrada padrão e grava na saída padrão qualquer arquivo, nesse casofilename
.-a
(ou--append
)tee
anexa aos arquivos, sem ele os arquivos seriam substituídos. Comotee
é executado,sudo
ele abre arquivos com permissões de root. Finalmente,> /dev/null
suprimetee
a saída para saída padrão .Uma vantagem de usar, em
tee
vez de apenas iniciar o comando inteiro, incluindo o redirecionamento comsu -c
orsudo sh -c
is, é que você não precisa alterar a citação do comando inicial de nenhuma maneira (as linhas de citação que já contêm aspas podem ficar feias às vezes).fonte
Tente isto Este comando está disponível no Unix e Linux.
sudo sh -c "echo 'add this line to the code' >> fileName"
fonte
Faria o truque:
fonte
ssh
? Você não precisasu
comsudo
e nem você precisa especificarroot
como é o padrão. Em suma, um pouco mais de explicações seria bom, pois o OP queria aprender algo e não apenas um problema resolvido.