Я хочу заблокировать всех, кто запускает su без опции входа.

Они могут запускать su - <user> , su -l <user> , su --login <user> . Но su <user> будет заблокирован.

Как этого добиться?

1 ответ1

0

Вы можете написать скрипт, который проверяет аргументы CLI и передает их в su . Если параметры - , -l или --login не указаны, пользователь выведет предупреждение об использовании этих параметров.

*** Обратите внимание, это не будет "блокировать" их использование su поскольку они могут вызывать двоичный файл напрямую.

Пример сценария 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

Вместо этого сделайте для этого скрипта псевдоним в файле .bashrc вашего пользователя, например, псевдоним su=/usr/bin/su.sh Таким образом, каждый раз, когда вы вызываете date, этот скрипт запускается, и он сообщает вам, что вы установили флаг команды set date, и запрашивает подтверждение.

Вы также можете избежать использования псевдонима, просто заменив команду su , как показано ниже, но также измените имя двоичного файла su в скрипте с /usr/bin/su на /usr/bin/su_cmd

mv /usr/bin/su /usr/bin/su_cmd 
mv /usr/bin/su.sh /usr/bin/su

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .