Блок су без '-'

288
RatDon

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

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

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

0
Изменить источник. Ipor Sircer 6 лет назад 4
По какой-то причине мне не удалось найти совместимый источник su. Мне это нужно для CentOS 5.5. Получил источник для sudo, но не su. Вы можете помочь мне с этим? RatDon 6 лет назад 0
http://vault.centos.org/5.5/os/SRPMS/coreutils-5.97-23.el5_4.2.src.rpm Ipor Sircer 6 лет назад 0
Почему вы это делаете? Кажется, что вы пытаетесь решить другую проблему, используя это, но это может быть не лучшим способом сделать это. mtak 6 лет назад 0
@mtak Для конкретного пользователя я использую rbash вместо bash и ограничиваю некоторые другие команды из `.bash_profile` пользователя. Но когда кто-то делает сувместо "su -" он не использует .bash_profile. Так что я подумал, что если я заблокирую su без «-». RatDon 6 лет назад 0

1 ответ на вопрос

0
AnythingIsFine

Вы можете написать скрипт, который проверяет аргументы 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 
Благодарю. Я продолжил с методом псевдонима. Хотя в нем отсутствует прямая бинарная блокировка, но это самый простой и доступный способ. : D RatDon 6 лет назад 0
Рад слышать! Я только сейчас понял, что вы можете сослаться на тот факт, что вы использовали «rbash», как указано выше, а не тот псевдоним, который я предложил в моем ответе. AnythingIsFine 6 лет назад 0
Как тот, который вы предложили. Но не совсем. Я сделал это месяц назад. RatDon 6 лет назад 0

Похожие вопросы