Bloquear su sem o '-'

0

Eu quero bloquear todos que estiverem executando su sem a opção de login.

Eles podem executar su - <user> , su -l <user> , su --login <user> . Mas su <user> será bloqueado.

Como conseguir isso?

    
por RatDon 18.12.2017 / 07:25

1 resposta

0

Você pode escrever um script que verifique os argumentos da CLI e os transmita para su . Se as opções - , -l ou --login não forem especificadas, ele imprimirá um aviso para o usuário usar essas opções.

*** Por favor, note que isso não "bloquearia" o uso de su , pois eles poderiam chamar o binário diretamente.

Exemplo de script su.sh :

#!/bin/bash

### script to prompt at su
### counter variable
CNT=0
### evaluate all the CLI arguments passed to "su" and check if the login is specified (also let '-V' version argument work)
for arg in $@

do
        if [[ $arg == - || $arg == -l || $arg == --login || $1 == -V ]]; then
### increment counter if login argument is found
                CNT=$((CNT+1))
        fi
done
### check if login argument is given
if [[ $CNT -ge 1 ]]; then
    /usr/bin/su $@
else
    echo -e '*** Please use "-", "-l" or "--login" with the "su" command ***'
    exit 2
fi

Crie um alias no arquivo .bashrc do usuário para esse script, como alias su=/usr/bin/su.sh . Dessa forma, toda vez que você chama a data de execução desse script, ele informa que você emitiu o sinalizador de comando set date e solicita confirmação.

Você também pode evitar o uso de um alias, simplesmente substituindo o comando su , como abaixo, mas também altere o nome do binário su no script de /usr/bin/su para /usr/bin/su_cmd

mv /usr/bin/su /usr/bin/su_cmd 
mv /usr/bin/su.sh /usr/bin/su
    
por 26.01.2018 / 12:46

Tags