Я пытаюсь понять, id -r
будет ли выводиться UID или имя пользователя, вошедшего в систему, несмотря на любые su
' или sudo
'. Мне интересно сделать это, чтобы я мог немного повысить ответственность людей и соответствующим образом настроить работу скрипта (т. е. они запускают sudo для скрипта, и он извлекает информацию из домашнего каталога вошедшего в систему пользователя).
Я понимаю, sudo
что есть наборы SUDO_USER
, но не хочу на них полагаться, потому что это переменная, которую может изменить пользователь, и она просто содержит имя пользователя, выполнившего последнюю команду sudo (т. е. sudo -i ; sudo -iu randomUser ; echo $SUDO_USER
выводит «root» вместо фактического пользователя).
Ничто в справочных страницах или в том, что я смог найти в Интернете, не указывает на правильное использование этой команды, а очевидные перестановки не работают:
[root@ditirlns03 ~]# id -r
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r jadavis6
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r root
id: cannot print only names or real IDs in default format
На данный момент я все еще не уверен, id -r
что он распечатает то, что мне нужно, в основном потому, что я не могу понять, как заставить его вообще что-либо распечатать.
решение1
-r
необходимо использовать вместе с другой опцией. Например:
$ id -Gr
1000 4 24 27 30 46 109 124
Цитирую страницу руководства:
-r, --real
print the real ID instead of the effective ID, with -ugG
решение2
Программа и документы отклоняются от стандартных практик:
Если -ugG
это действительно означает -u|g|G[modifier]
(что, по-видимому, так и есть), то это должно быть задокументировано таким образом. Авторы, похоже, не считали, что это стоит усилий. Однако, когда пользователь делает то же самое (как вполне разумно пытался сделать г-н Дэвис):
-ru
, законное, интуитивное предположение, возвращает ошибку.
По поводу этого совета:
stat -c "%U" $(tty)
Вероятно, было бы полезно упомянуть, что это зависит от оболочки.
решение3
- Печать идентификатора пользователя:
id -u
- Печать имени пользователя:
id -u -n
Постарайтесь man id
больше наклоняться.