#bash #unix
#bash #unix
Вопрос:
Есть ли способ получить имя пользователя Windows пользователя, который подключается к определенной среде Unix, используя всегда одни и те же учетные данные сервера, непосредственно в Bash?
Некоторая предыстория
Существует совокупность из N пользователей, которые могут подключаться к M различным средам Unix, всегда используя одни и те же учетные данные в Unix: someusername, без пароля. В основном,
- У пользователя Windows «Matteo» открыт сеанс Windows на компьютере «
PMatteo.fr.company.com
«. - Этот пользователь открывает
SSH
сеанс на компьютере с LinuxlinuxMachine
, используя Putty. - Вход в систему всегда выполняется с использованием одних и тех же «поддельных» учетных данных:
someusername
, без пароля, и пользователь находится внутри.
Внутри среды Unix, следовательно, используя команду bash, я хотел бы получить имя пользователя Windows «Matteo».
Мои исследования до сих пор
Следующая команда:
echo $(who am i) | cut -d "(" -f2 | cut -d ")" -f1
показывает мне два вида выходов, в зависимости от машины, к которой я подключен:
- Иногда он показывает непосредственно имя машины
PMatteo.fr.company.com
- В некоторых других случаях он показывает только IP-адрес (например
45.32.4.19
, ), но это нормально, потому что я могу найти имя компьютера с помощью командыnslookup 45.32.4.19
.
Мой вопрос
Есть ли какой-либо способ, используя скрипт Bash, перейти непосредственно к имени пользователя Windows? Я могу (довольно) легко найти имя компьютера, поэтому я считаю, что имя пользователя Windows может где-то храниться, я просто не знаю как, и я не могу найти его нигде в Интернете. У кого-нибудь есть какие-либо подсказки? Моя версия bash — 4.1.2 (1).
Цель
Исходя из имени пользователя Windows, я всегда могу восстановить почтовый адрес пользователя. Иногда пользователь запускает команду, которая может повлиять на других пользователей, но поскольку они подключаются (на языке Unix) всегда с одним и тем же именем пользователя, никто не знает, кто на самом деле выполняет команду. Было бы неплохо иметь возможность связаться с ними по электронной почте на случай, если кто-то еще захочет попросить прекратить то, что они делают.
Комментарии:
1.
echo $(who am i)
… вы имели в видуwhoami
или простоwho
?2. В моей системе Windows 10
whoami
в оболочке Ubuntu Bash указывается мое имя для входа в Windows 10. Это та самая оболочка bash, о которой ты говоришь? Это не совсем ясно.3. @lurker Я думаю, что
whoami
печать вашего имени пользователя Windows — это просто совпадение. Внутри WSL может быть несколько пользователей, и у них могут быть разные имена, чем у пользователя Windows.4. @Socowi я имею в виду
who am i
, с пробелами. Он печатает что-то вроде этого :unix_user pts/3 Apr 17 09:46 (IP address)
. Может быть, это внутренний псевдоним, и я подумал, что это встроенный в unix?5. @lurker да, я думаю, что это совпадение, для меня это не так (вместо этого я получаю имя пользователя unix).
Ответ №1:
Простой ответ — нет.
Вы не передаете эту информацию на свой сервер Unix / Linux, потому что вы всегда входите в систему с учетными someuser
данными .
Поскольку вы можете получить имя пользователя из имени хоста вашего компьютера, вы можете получить имя пользователя Windows, но это имеет ряд недостатков:
- кто-то другой, кто (ab) использует компьютер, сопоставляется с владельцем этого компьютера, даже если он входит в систему со своей собственной учетной записью.
- если кто-то подключает к сети чужой компьютер, имя пользователя может не быть производным от его имени хоста. ‘
Что вы можете попробовать, так это получить доступ к клиенту Windows из окна Linux. Но для этого требуется, чтобы все клиенты были доступны из Linux (rdp, telnet, powers hell, ssh-сервер или что-то в этом роде, и, конечно, авторизация в Windows). Затем вы можете посмотреть, кто вошел в систему в это время (и надеюсь, что это только один пользователь).
Комментарии:
1. Спасибо за ваш ответ, я понимаю вашу точку зрения, я думаю, мне придется фактически признать, что нет никакого способа: (
Ответ №2:
В Putty перейдите в раздел Подключение-> SSH-> Удаленная команда и добавьте это,
env WINUSER=yourname bash
затем подключитесь. Это должно установить переменную среды WINUSER
в среде удаленной оболочки.
Это предполагает надежную среду, поскольку любой может подделать настройку при входе в систему.
(Это может быть перенесено на https://superuser.com )
Комментарии:
1. Большое спасибо, однако для этого потребуется перенастроить каждый клиент Putty, а это что-то невыполнимое на моем уровне для стольких людей 🙂 В любом случае спасибо за ссылку!
2. Все еще думая о вашей проблеме,
echo $SSH_CONNECTION | cut -d" " -f1
следует последовательно возвращать IP-адрес клиента (иногда не возвращая имя). Вам все равно придется вручную настроить сопоставление ip: name. Для этого я бы, наверное, написал скрипт на Python.