Назад | Перейти на главную страницу

Каким пользователем был я?

Я использую 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'

Последняя команда может отображать последнего вошедшего в систему пользователя.