confirmação antes do sudo su

4

a maioria da pessoa da minha equipe tem acesso ao sudo. Mas eu ainda quero que eles confirmem antes de sudo su. se o usuário pressionar Y, então deixe-o como root e retorne-o ao seu diretório pessoal. Eu tentei o código abaixo, mas quando o usuário pressiona qualquer outra tecla, ele ainda pode se logar como root. Por favor ajude

!/bin/bash

echo -e "You are entering into high security env."

echo -e "If You are still not sure about the purpose, please logout of root user immediately."

echo -e "Contact admin immediately in case of any doubt."

sleep 1
echo -e "Press Y if you still want to enter as a root user"

read ch

case $ch in

    'Y'|'y' )

                echo -e "Risk is all yours. PT team welcome you here."
                ;;

        *)
                bash /root/.bash_logout
                exit
                ;;
esac
    
por anurag 24.01.2016 / 07:29

2 respostas

10

É preocupante, aparentemente, muitos usuários terem acesso ao sudo.

Em vez de reinventar a roda e porque a raiz .profile só é executada ao fazer sudo su - , e também porque um alias para o sudo, além de não ser muito conveniente, ser impresso de antemão, recomendo uma abordagem mais padrão.

A configuração /etc/sudoers tem uma opção para manter sempre o aviso padrão que todo usuário recebe na primeira vez que o usa.

We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

root's password:

Para estar sempre ativado, você cria um arquivo em /etc/sudoers.d/privacy com:

Defaults        lecture = always

Se você quiser experimentá-lo com o usuário atual, terá que sair primeiro.

A mensagem padrão está no código fonte do sudo, se você quiser alterá-lo, você terá que recompilar o sudo. Eu aconselho contra a ideia; Se você insiste, você tem que compilar o pacote do apt-src, e depois fixá-lo / congelá-lo, para que ele não seja atualizado aleatoriamente, mas apenas manualmente.

Como complemento à sua solicitação, eu recomendo que você comece a registrar o que as pessoas fazem, especialmente se elas não tiverem restringido sudo de acesso.

Se você adicionar ao seu /etc/bash.bashrc :

readonly PROMPT_COMMAND='history -a >(logger -t "commandlog $USER[$PWD] $SSH_CONNECTION")'

Isso registrará todos os comandos do usuário no syslog.

Eu configuraria syslog para encaminhar os logs para um servidor syslog central bloqueado, portanto, no caso de hacking ou de um administrador de sistemas nocivo, eles não seriam capazes de adulterar evidências.

    
por 24.01.2016 / 08:03
1

De onde o script é chamado? root.bash_profile ou .bashrc?

Eu não acredito que essa linha desconectará o usuário:

bash /root/.bash_logout

Cria um novo processo bash que executará os comandos no arquivo .bash_logout.

Você pode tentar esta linha:

logout

Atualizar: ou tente:

exit

Supondo que um arquivo de inicialização do shell esteja executando o script de aviso, a "saída" apenas sairá do script de aviso, não do shell.

Se o código bash que executa "exit" estiver no arquivo .bashrc em vez de um script de aviso separado, ele deve sair do shell.

    
por 24.01.2016 / 08:26