LINUX.ORG.RU

узнать предыдущего пользователя

 


0

2

положим в системе есть user1 и user2, оба они могут сделать sudo su и стать рутом, нужно в /root/.bashrc понять кто стал рутом бывший user1 или бывший user2 и соответственно сделать те ли иные действия.

кто предложит наиболее элегантное решение?

★★★★

Вообще, если в htop дерево процессов посмотреть, то можно узнать. Из .bashrc - нужно думать.

Но ИМХО ты делаешь что-то не так. Какая конечная задача?

Я бы сделал нескольких пользователей с id=0; тогда для каждого «рута» можно задать свой пароль и ЕМНИП свой хомяк, а там и свой .bashrc.

Kroz ★★★★★ ()

я не совсем понял. тебе это надо для скрипта? тогда первый вариант.

если ты сказал своему младшему брату пароль от рута, и хочешь узнать, не логинился ли он без твоего ведома, то смотри /var/log/auth

Apr 22 20:48:05 g3258 su[5968]: FAILED su for root by spoofing
Apr 22 20:48:05 g3258 su[5968]: - /dev/pts/4 spoofing:root
Apr 22 20:48:09 g3258 su[5969]: Successful su for root by spoofing
Apr 22 20:48:09 g3258 su[5969]: + /dev/pts/4 spoofing:root

здесь все логины сохраняются.

Spoofing ★★★★★ ()

команда logname
например
export HISTFILE=/root/.bash_hist-$(logname)

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

echo $SUDO_USER

спасибо это самое элегантное решение! очень странно ибо первое что я сделал прежде чем сюда написать это env | grep ИМЯ_ПОЛЬЗОВАТЕЛЯ и ничего не увидев начал уже думать

quest ★★★★ ()
Ответ на: комментарий от Spoofing

$ env OLDUSER=$USER su
Password:
# echo $OLDUSER
spoofing

С нормальным вариантом — /bin/su - — не прокатит.

Stil ★★★★★ ()
Ответ на: комментарий от Kroz

Я бы сделал нескольких пользователей с id=0; тогда для каждого «рута» можно задать свой пароль и ЕМНИП свой хомяк, а там и свой .bashrc.

Это гениально! Подводных камней нет?

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

Подводных камней нет?

Ну, матчинг uid->name будет по первому совпадению. То есть, если ты залогинен как root2 и сделаешь touch file, то ls покажет что файл принадлежит root (а не root2). но root2 все равно будет иметь к нему доступ (UID ж тот же). Ну, думаю это естественно. Других вроде нет.

Способ хорош когда нужно получить специфическое окружение из /etc/passwd (и /etc/shadow), например свой shell, свой пароль и т. п.

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

В нормальных ОС, как Солярис или винда, такие штуки через rbac реализованы. Тащемта в лиеуксе оно тоже есть, только у среднего админа мозгов на освоение selinux, или на худойь конец man privileges, не хватает.

cherry-pick ()
Ответ на: комментарий от cherry-pick

Просто админы обычно следуют правилу «не усложняй когда можно реализовать более простыми инструментами».

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

Просто админы обычно следуют правилу «не усложняй когда можно реализовать более простыми костылями».

Можешь не благодарить :)

EvgGad_303 ★★★★★ ()
Ответ на: комментарий от quest

sudo su - это почти-что su -c 'su' и также бесполезно. Советую переучиться на sudo -i.

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