Я использую su, когда мне часто нужно установить правильные разрешения при копировании файлов и т. Д., Но забываю, использовал ли я su для этого, например:
root@host> su bob
bob@host> copy folderA folderB
Но иногда я забываю, вошел ли я в систему как bob или был ли я root и сделал su'd, чтобы стать bob, сделать с тех пор? Итак, полный пример:
bob@host> su
....
root@host> su bob
bob@host> cp folderA folderB
....
bob@host> ????????
Теперь, когда я забываю, вошел ли я в компьютер напрямую или если я попал в систему, я могу нажать CTRL-D, что скажет мне, был ли я root, но если нет, я выхожу из системы.
Я понимаю, что sudo - это хорошо и безопасно, но мне любопытно, есть ли способ сделать это, не избегая использования su.
У кого-нибудь есть идеи?
Ты можешь использовать whoami
чтобы сообщить вам эффективный идентификатор пользователя, и вы можете использовать who am i
чтобы сообщить вам, под кем вы вошли, например
$ who am i
iain pts/0 2011-09-15 17:33 (192.168.1.104)
$ whoami
iain
$ su -
# whoami
root
# who am i
iain pts/0 2011-09-15 17:33 (192.168.1.104)
# su - user1
$ whoami
user1
$ who am i
iain pts/0 2011-09-15 17:33 (192.168.1.104)
Вы можете сделать это, посмотрев на запущенные процессы в дереве.
ps axjf
Просмотрите длинный вывод, пока не найдете что-то вроде этого:
1 2426 2426 2426 ? -1 S<s 0 3:35 /usr/sbin/sshd
2426 7024 7024 7024 ? -1 S<s 0 0:00 \_ sshd: user1 [priv]
7024 7029 7024 7024 ? -1 S< 1002 0:00 \_ sshd: user1@pts/0
7029 7030 7030 7030 pts/0 29857 S<s 1002 0:00 \_ -bash
7030 29831 29831 7030 pts/0 29857 S< 0 0:00 \_ su
29831 29833 29833 7030 pts/0 29857 S< 0 0:00 \_ bash
29833 29845 29845 7030 pts/0 29857 S< 1017 0:00 \_ su user2
29845 29846 29846 7030 pts/0 29857 S< 1017 0:00 \_ bash
29846 29857 29857 7030 pts/0 29857 R<+ 1017 0:00 \_ ps axjf
Вы можете видеть, что я вошел в систему как user1, а затем su'd для root, а затем su'd для user2
У меня эта команда отлично работала на debian. Если вы используете другую версию Linux, и она не работает, просто проверьте страницу руководства для ps и найдите слово 'tree'
Последняя команда может отображать последнего вошедшего в систему пользователя.