LINUX.ORG.RU

Отлов сессии su/sudo

 , ,


3

4

Вот мне интересно стало, можно ли из bash скрипта отловить факт того, что пользователь уже раз заходил в систему и теперь меняет пользователя? Меня не привилегии интересуют, а именно факт того, что текущая интерактивная сессия открыта через

su или sudo -i?

(Ну я имею ввиду более человеческий способ, чем парсить выхлоп ps axf.)

★★★★★

Ответ на: комментарий от evilface

С GNU sed можно использовать код возврата:

 ps -o comm=$$ | sed -nr '/^su(do)?/q1'

Вернёт 1 если есть su или sudo, иначе 0.

evilface ★★
()
Последнее исправление: evilface (всего исправлений: 1)

grep sudo:session /var/log/auth.log? Правда это так с pam работает.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

Читаем ОП:

текущая интерактивная сессия

anonymous
()

Всем спасибо. :)

atrus ★★★★★
() автор топика
Ответ на: комментарий от bl

Очень неплохо. Но я всё-таки решил воспользоваться вариантом с ps. Оказалась есть забавная ситуация, root может тоже набрать sudo -i и фокус не удастся. :)

Не то, чтобы это было фатально, но уж хотелось аккуратно всё сделать.

atrus ★★★★★
() автор топика

Можно добавить отладочный код с записью в журнал в исходный код su.

u0atgKIRznY5
()
Ответ на: комментарий от Pinkbyte

Я имел ввиду что «в себя» прыгнуть может не только рут. (sudo -u someuser -i).

В принципе совсем надёжный способ - это парсить audit.log, потому что там прямо написано кто и как вошёл и pid процесса указан. Но этот лог на чтение доступен только root. :)

atrus ★★★★★
() автор топика
Ответ на: комментарий от Pinkbyte

Мне не запретить, мне чтобы код это отлавливал и не отрабатывал. Но это уже было решено способом @evilface.

atrus ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.