кто / w / логин сломан в нескольких терминалах

У меня странная проблема: в сеансе GUI, в зависимости от используемого терминала, появляются следующие две (связанные) проблемы:

  1. who и w не перечисляет активный сеанс пользователя
  2. logname возвращает logname: no login name

Это происходит в следующих терминалах:

  • lxterminal
  • xfce4- терминал
  • rxvt

С другой стороны, в следующих сценариях он работает отлично (кто / w перечисляет функции пользователя и логина):

  • ssh-ing в
  • xterm / lxterm / uxterm
3
задан 21 February 2014 в 20:16

2 ответа

Я нашел ту же проблему в 16.04. У меня было несколько скриптов, использующих логин, и теперь они не работают. Я создал обходной путь. Войдя в систему как я, я помещаю файл в свой домашний каталог с моим логином:

echo $LOGNAME > ~/.logname;

Когда я хочу получить доступ к своему логину, я получаю его таким образом:

g_logname="$(<~/.logname)";

Это работает независимо от того, запускаю ли я скрипт как сам или как root, потому что sudo root поддерживает определение «~» в качестве моего домашнего каталога. Я могу создать файл .logname для каждого пользователя в системе. Этот метод работает, тогда как использование $ USER и $ LOGNAME не при вызове с корневого уровня. Правда, кто-то может взломать его и изменить значение в файле, но меня это не беспокоит. Вы всегда можете изменить права доступа к файлу на 444, а для владельца: group - на root: root, что остановит любого, у кого нет прав root.

0
ответ дан 21 February 2014 в 20:16

Лучший ответ, который я нашел, здесь: https://stackoverflow.com/a/1629628/3196753

т.е.

echo ${SUDO_USER:-${USER}}

Или альтернативно

logname 2>/dev/null || echo ${SUDO_USER:-${USER}}

FWIW, это работает над MacOS 10.8, 10.11 и также еще подтвердило Ubuntu 12.04.

Эти 2> должен подавить logname: no login name ошибка, которая зарегистрируется к консоли, запускающейся с Ubuntu 16.04 из-за восходящая терминальная гномом ошибка .

:-${USER} средства, если $SUDO_USER пробел (в течение многих времен, когда sudo на самом деле не используется), затем замените значением $USER.

0
ответ дан 21 February 2014 в 20:16

Другие вопросы по тегам:

Похожие вопросы: