Como sair do super usuário do meio do shell script?

2

Eu tenho um script de shell no qual a maioria dos comandos precisa ser executada em sesu user e, em seguida, preciso executar alguns comandos como usuário atual. Você pode por favor me ajudar nisso?

    
por user3171821 08.01.2014 / 08:20

4 respostas

1

Se você não quiser especificar a senha toda vez, adicione sesu ao sudoers group e execute o comando que você deseja desta forma:

sudo su -c "command string"

Desta forma, command string é executado como superusuário (root, etc).

    
por 08.01.2014 / 10:57
1

O comando

    exit

fecha o shell atual. Se você estava executando um shell como o usuário X , então mudou para um usuário Y , sair fecha o shell no qual você estava Y e você volta a ser X

    
por 08.01.2014 / 11:55
0

Você pode usar su para alternar para outro usuário e o -c opção para executar o comando, por exemplo

 su anotherUser -c "ls /"

Verifique se você tem sudo e considere se pode usá-lo no seu caso. O exemplo acima irá pedir a senha de anotherUser, e isso pode ser chato.

    
por 08.01.2014 / 08:30
0

Eu tenho estado em uma situação semelhante recentemente. Aqui está o que eu fiz para ir para o nível de superusuário imediatamente quando um script é chamado e, subseqüentemente, executar tarefas de usuário regular. Acho que isso pode ajudar você a descobrir uma maneira de chegar à solução desejada:

#!/bin/bash

# generic_sudo.sh
# Tool that demonstrates in-then-out of sudo
# This demo is pointless if called with 'sudo generic_sudo.sh'

# Need root priviledges for some superuser work
if (( EUID != 0 )); then # If the user is not "root":
# In general one should use ((..)) for testing numbers and integer variables, and [[..]] for testing strings and files.
    sudo $0                         # Relaunch it as "root".
    EXITCODE=$?
    printf "su mode OFF.\n"         # If we got here, we left superuser mode
    printf "EUID is: %d\n" $EUID
    printf "Exit code %d\n" $EXITCODE
    exit $EXITCODE                  # Once it finishes, exit gracefully.
else
  printf "su mode ON.\n"
fi                              # End if.

printf "EUID is: %d\n" $EUID

# Some superuser work

printf "Some superuser work was done.\n"
exit 0
    
por 03.03.2016 / 01:20

Tags