Как найти имя пользователя linux

Обновлено: 03.07.2024

Операционная система Linux сделала все очень простым. Это не привязывает пользователя к одному подходу, поскольку одна функция может выполняться несколькими способами. Хотите ли вы использовать встроенные команды или предпочитаете установить какой-либо инструмент, выбор за вами!

Точно так же в этом руководстве мы увидим множество способов найти идентификатор пользователя с помощью различных команд. Но вопрос в том, зачем вам нужно получать удостоверение, поскольку в большинстве случаев администратор является единственным пользователем.

Необходимо найти свой идентификатор, когда вы предоставляете доступ другим людям. В этом случае один компьютер имеет несколько учетных записей, с которых пользователи входили в систему. Другой случай может возникнуть, если пользователь удаленно подключен к серверу и ему требуется быстрый ответ, чтобы получить сведения об имени пользователя, вошедшего в систему.

Как найти идентификатор пользователя в Linux

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

Идентификатор команды

Команда id — это самый простой способ отобразить список реальных и действующих пользователей, а также идентификаторы групп.

Вы можете либо просто ввести «id» в терминале, либо использовать имя пользователя с командой «id», как указано ниже:


получить команду

Команда «getent» в UNIX и Linux-подобных системах используется для извлечения записей из системной базы данных, поддерживаемой библиотеками NSS (переключатель службы имен). Сведения о пользователе хранятся в базах данных паролей и групп.

Чтобы получить сведения о пользователе с помощью команды getent, следуйте следующему синтаксису:

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


Команда lslogins

Командная утилита lslogins в Linux должна получать все доступные сведения из системных файлов только о конкретных пользователях.

Флаг "-u" в команде "lslogins" используется для отображения учетных записей пользователей:


Команда w

Команда «w» помогает отобразить текущих пользователей, вошедших в систему, и действия, которые они выполнили в системе:


кто командует

Командная утилита who используется для печати имени пользователя, вошедшего в систему, и сведений о терминале с указанием даты и времени. Вы можете просто ввести «кто» или использовать его с флагом «-u» в терминале:


команда whoami

Чтобы отобразить единственное имя пользователя текущей учетной записи, вошедшей в систему, введите:


команда grep

Команда grep считается мощным инструментом Linux для поиска определенного шаблона. Это помогает искать данные (текст или строки) из заданных и отображать их. Чтобы отобразить сведения о пользователе из файла /etc/passwd, выполните команду:


пользователи и команда echo $USER

Команда «users» используется для отображения списка всех пользователей, вошедших в систему, тогда как «echo $USER» является альтернативой команде «whoami». Он отображает однострочный ответ.


последняя команда

Используя команду last, пользователь может распечатать список последних пользователей, выполнивших вход в операционную систему:


команда пальцем

Если вы хотите установить инструмент командной строки для поиска информации о пользователе, нет ничего лучше команды «finger».

Утилита командной строки «finger» в Linux используется для печати информации о пользователе в терминале. Это не встроенный инструмент в большинстве дистрибутивов Linux. Итак, чтобы получить его, сначала установите его:


Теперь, чтобы отобразить необходимую информацию о пользователе, включая его настоящее имя, информацию о каталоге, оболочку и т. д., введите:


Заключение

В этой статье мы узнали о нескольких способах поиска удостоверения пользователя в системе Linux.В системе Linux появилось множество утилит командной строки для отображения идентификатора пользователя. Кроме того, если вы хотите установить инструмент для получения информации, мы упомянули инструмент командной строки «finger» для печати всех необходимых сведений о пользователе.

Об авторе

Варда Батул

Я дипломированный инженер-программист и целеустремленный писатель Linux. Я также люблю читать последние книги по Linux. Кроме того, в свободное время я люблю читать книги по личностному развитию.


Дэйв Маккей


Дэйв Маккей
Писатель

Если Linux что-то и значит, так это выбор. Даже такую ​​простую задачу, как идентификация текущего пользователя, можно решить разными способами. В этом руководстве показано, как использовать некоторые из самых быстрых и простых методов.

Зачем вам нужно находить личность текущего пользователя? Во многих случаях владелец компьютера является единственным пользователем, и, если не вдаваться в подробности, он, вероятно, знает себя. Возможно, но люди также часто создают дополнительные учетные записи пользователей, чтобы позволить членам семьи иметь доступ к компьютеру. И, если вы где-то подключены к удаленной оболочке на сервере, вам может понадобиться быстрое напоминание имени пользователя, под которым вы вошли в систему. Если вы видите сеанс, вошедший в систему, в котором никого нет, как вы идентифицируете текущего пользователя из командной строки?

Сначала попробуем самый простой вариант. Все, что нам нужно сделать, это посмотреть на командную строку. По умолчанию дистрибутивы Linux имеют имя пользователя в приглашении. Простой. Нам даже не пришлось ничего вводить.

Имя пользователя, отображаемое в командной строке

Если пользователь изменил свое приглашение на другой формат, нам нужно попробовать что-то другое. Команда who даст нам информацию, которую мы ищем.

Вывод команды who

Вывод от того, кто дает вам имя текущего пользователя, терминал, на котором они вошли в систему, дату и время, когда они вошли в систему. Если это удаленный сеанс, он также сообщает нам, откуда они вошли в систему. .

Для сравнения, команда whoami дает очень содержательный ответ:

Вывод команды whoami

Тот же ответ, состоящий из одного слова, можно получить, выведя на экран переменную окружения $USER.

Использование эха для отображения переменной среды пользователя

Однобуквенная команда w требует меньше ввода и предоставляет больше информации.

Вывод команды w

Команда w предоставляет нам имя пользователя, которое мы хотели, и дополнительный набор данных для этого пользователя. Обратите внимание, что если в систему Linux вошли несколько пользователей, команда w отобразит их всех. Вам нужно знать, на каком терминале вошел интересующий вас пользователь. Если они вошли непосредственно на сам компьютер Linux, это будет pts/o, поэтому ищите :0 в выводе w .

Команда w предоставляет время загрузки, время безотказной работы и среднюю нагрузку за предыдущие пять, десять и пятнадцать минут, а также следующую информацию о текущем пользователе.

  • ПОЛЬЗОВАТЕЛЬ: имя пользователя.
  • TTY: Тип терминала, на котором они вошли в систему. Обычно это pts (псевдотелетайп). :0 означает физическую клавиатуру и экран, подключенные к этому компьютеру.
  • FROM: имя удаленного хоста, если это удаленное подключение.
  • LOGIN@: время входа пользователя в систему.
  • IDLE: время простоя. Это показывает? xdm? на снимке экрана, потому что мы работаем под X-windows Display Manager, который не предоставляет эту информацию.
  • JCPU: совместное время ЦП, это время ЦП, используемое всеми процессами, которые были подключены к этому tty. Другими словами, общее время ЦП этого пользователя в этом сеансе, вошедшем в систему.
  • PCPU: время ЦП процесса, это время ЦП, используемое текущим процессом.Имя текущего процесса указано в столбце ЧТО.
  • ЧТО: Командная строка текущего процесса этого пользователя.

Теперь, когда мы знаем, кто этот пользователь, мы можем получить о нем дополнительную информацию. Команда id — хорошее место для начала. Введите id , пробел, имя пользователя и нажмите Enter.

Вывод команды id

Это дает нам их идентификатор пользователя (uid), идентификатор группы (gid) и группы, в которых они состоят. Менее загроможденное отображение групп можно получить с помощью команды groups.

Вывод из команды групп

Отличное резюме дает команда finger. Используйте apt-get для установки этого пакета в вашу систему, если вы используете Ubuntu или другой дистрибутив на основе Debian. В других дистрибутивах Linux вместо этого используйте инструмент управления пакетами вашего дистрибутива Linux.

После того как вы установили палец, вы можете использовать его для отображения некоторой информации о рассматриваемом пользователе.

Вывод команды

В большинстве систем Linux некоторые из этих полей будут пустыми. Офис, полное имя и номера телефонов по умолчанию не заполняются. Поле «Нет плана» относится к старой схеме, где вы могли оставить несколько заметок для всех, кто интересовался, о том, над чем вы работали или планировали сделать. Если вы отредактируете файл .plan в своей домашней папке, содержимое этого файла будет добавлено к выходным данным finger .

Чтобы быстро узнать имя вошедшего в систему пользователя с рабочего стола GNOME, используемого в Ubuntu и многих других дистрибутивах Linux, щелкните системное меню в правом верхнем углу экрана. Нижняя запись в раскрывающемся меню — это имя пользователя. В других средах рабочего стола Linux ваше имя пользователя должно отображаться в таком же легком для поиска меню.

Системное меню с именем пользователя

Это было легко, всего один клик. Но что в этом интересного?

Вы не почувствуете себя цифровым детективом, как при использовании оболочки Bash.

< /tbody>
Команды Linux
Файлы tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm
Процессы alias · screen · top · nice · renice · прогресс · strace · systemd · tmux · chsh · история · at · пакетное · бесплатное · которое · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · стена · yes · kill · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · date · bg · fg
Сеть netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · копать · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw
  • › Легко понять использование оперативной памяти Linux с помощью Smem
  • › Что такое обратное туннелирование SSH? (и как его использовать)
  • › Как использовать последнюю команду в Linux
  • › Что такое телетайп в Linux? (и как использовать команду tty)
  • › Как использовать «Здесь документы» в Bash в Linux
  • › 37 важных команд Linux, которые вы должны знать
  • › Что такое root в Linux?
  • › Почему не было Windows 9?

Я пишу программу на Bash, которой нужно получить имя пользователя.

Я слышал о штуке whoami , но понятия не имею, что она делает и как ею пользоваться.

Какую команду использовать для получения текущего имени пользователя?


Кажется, ни один из предложенных методов не работает без использования $USER или вызова отдельного процесса. Нет ли встроенной функции bash для получения имени пользователя без вызова отдельного процесса?

Если вы услышали команду, но не знаете, как ее использовать, проверка man whoami обычно является хорошей первой остановкой для проверки документации.

14 ответов 14

В командной строке введите

Чтобы сохранить эти значения в переменной, выполните

Конечно, вам не нужно создавать переменную, поскольку для этого предназначена переменная $USER.

Небольшое замечание: $USER и whoami возвращают разные значения, если вы запускаете команду через ssh от имени другого пользователя. whoami возвращает пользователя ОС, а $USER возвращает пользователя ssh.

@SethMMorton Я понимаю, что изложил проблему хуже, чем обычно. Однако, чтобы ответить на вопрос, использование whoami (как вы предложили) полностью устраняет проблему, предполагая, что переопределенные переменные среды являются потенциальной проблемой в вашем контексте.

Альтернативой whoami является id -u -n .

id -u возвращает идентификатор пользователя (например, 0 для root).


Если я не ошибаюсь, это будет правильным решением, если переносимость является проблемой, поскольку команда id и флаги -u и -n являются частью posix

Это действительно должен быть принятый ответ. «$» и whoami зависят от того, как вы входите в систему. В частности, оболочки входа и sudo будут устанавливать $USER, а whoami просматривает пользователя, подключенного к стандартному вводу. Однако, если вы запускаете пакетное задание из cron или запускаете сценарий запуска от имени пользователя, отличного от root, то они либо выводят неверного пользователя (root), либо вообще ничего. Этот ответ вернет правильное значение независимо от идентификатора пользователя процесса.

Если вы попробуете эту команду перед добавлением ложных комментариев, вы увидите, что аргумент -n печатает имя пользователя, как и в исходном вопросе. см. следующее: id -u -n печатает бретт - даже на Дарвине.

Используйте стандартное имя журнала команды Unix/Linux/BSD/MacOS для получения вошедшего в систему пользователя. Это игнорирует среду, а также sudo, так как это ненадежные репортеры. Он всегда будет печатать имя вошедшего в систему пользователя, а затем выходить. Эта команда существует примерно с 1981 года.


Это было особенно полезно для меня по сравнению с whoami или $USER, поскольку я использую sudo для запуска от имени другого пользователя, но хочу, чтобы исходный пользователь не был пользователем sudo.

Кстати, это лучший ответ не только для меня лично, но и для цели вопроса ОП.

Хак, который я использовал в Solaris 9 и Linux и который отлично работает для них обоих:

Этот фрагмент выводит имя пользователя с текущим EUID.

ПРИМЕЧАНИЕ: здесь вам понадобится Bash в качестве интерпретатора.

В Solaris у вас возникают проблемы с методами, описанными выше:

  • id не принимает параметры -u и -n (поэтому вам придется анализировать вывод) не существует (по умолчанию)
  • кто я печатает владельца текущего терминала (игнорирует EUID)
  • Переменная $USER устанавливается правильно только после чтения файлов профиля (например, /etc/profile )


Зачем вам нужен bash в качестве интерпретатора? Ничто в показанной командной строке не относится к какой-либо оболочке. Собственно, зачем вообще включать трубу через awk? Насколько я могу судить, ваша команда ps — это все, что требуется для отображения владельца pid текущей оболочки.

Для нас, людей, естественно игнорировать лишнюю информацию. Часть awk изолирует нужные данные — для переменных или вообще для компьютера, который пока не может делать предположения на лету на этом рудиментарном уровне.

В Solaris используйте команду -p id (из оболочки POSIX) или /usr/xpg4/bin/id . В более общем смысле, в Solaris вы захотите изменить свою среду, чтобы поместить себя в среду POSIX (с чем-то вроде PATH= getconf PATH` и обязательно запустить /usr/xpg4/bin/sh ), чтобы не застрять с командами из 70-х/80-х годов.

id печатает идентификатор пользователя вместе с группами. Формат: uid=номер_пользователя(имя пользователя) .

whoami дает текущее имя пользователя



$whoami недоступна как переменная в bash. Вам нужно либо $(whoami), либо `whoami`, чтобы фактически выполнить команду whoami!

Когда требуются права root (sudo), что обычно составляет 90%+ при использовании скриптов, методы из предыдущих ответов всегда дают вам root в качестве ответа.

Получить текущего "вошедшего в систему" пользователя так же просто, но для этого требуется доступ к другим переменным: $SUDO_UID и $SUDO_USER .

Их можно повторить:

Или назначено, например:


В ОС Solaris я использовал эту команду:

В Linux. Кто-то уже ответил на этот вопрос в комментариях.



Эти две команды отображают две разные информации. Просто войдите в систему как пользователь root, используйте "su - xxx" и убедитесь сами.

Имя пользователя текущего пользователя можно получить в чистом Bash с помощью расширения параметра $ (появившегося в Bash 4.4):

Встроенный : (синоним true ) используется вместо временной переменной путем установки последнего аргумента, который хранится в $_ . Затем мы расширяем его ( \u ), как если бы это была строка приглашения с оператором P.

Это лучше, чем использование $USER , поскольку $USER – это обычная переменная окружения; его можно изменить, сбросить и т. д. Даже если он не был преднамеренно изменен, распространенный случай, когда он все еще неверен, - это когда пользователь переключается без запуска оболочки входа (по умолчанию su).

Эта статья покажет вам одиннадцать полезных способов поиска информации о пользователях в системе Linux. Здесь мы опишем команды для получения сведений об учетной записи пользователя, отображения данных для входа, а также того, что пользователи делают в системе.

Если вы хотите добавить пользователей в Linux, используйте утилиту useradd, а для модификации или изменения каких-либо атрибутов уже созданной учетной записи пользователя используйте usermod через командную строку, как описано в следующих руководствах:

Мы начнем с изучения команд для поиска информации об учетной записи пользователя, а затем перейдем к объяснению команд для просмотра данных для входа.

1. идентификатор команды

id — это простая утилита командной строки для отображения реальных и эффективных идентификаторов пользователей и групп следующим образом.

2. группы Команда

команда groups используется для отображения всех групп, к которым принадлежит пользователь.

3. Команда пальца

Команда

finger используется для поиска информации о пользователе в Linux. Во многих системах Linux он не устанавливается отдельно.

Чтобы установить его в своей системе, запустите эту команду в терминале.

Он показывает настоящее имя пользователя; домашний каталог; оболочка; логин: имя, время; и многое другое, как показано ниже.

4. получить команду

getent — это утилита командной строки для извлечения записей из библиотек переключателей службы имен (NSS) из определенной системной базы данных.

Чтобы получить сведения об учетной записи пользователя, используйте базу данных passwd и имя пользователя следующим образом.

5. Команда grep

Команда grep — это мощный инструмент поиска шаблонов, доступный в большинстве, если не во всех системах Linux. Вы можете использовать его для поиска информации о конкретном пользователе в файле системных учетных записей: /etc/passwd, как показано ниже.

6. Команда lslogins

Команда lslogins показывает информацию об известных пользователях в системе, флаг -u отображает только учетные записи пользователей.

7. Команда пользователей

Команда

users показывает имена всех пользователей, которые в данный момент вошли в систему таким образом.

8. кто командует

команда who используется для отображения пользователей, вошедших в систему, включая терминалы, с которых они подключаются.

9. w Команда

Команда w показывает всех пользователей, вошедших в систему, и то, что они делают.

10. последняя или последняяb команды

Команды last/lastb отображают список последних пользователей, выполнивших вход в систему.

Чтобы показать всех пользователей, которые присутствовали в указанное время, используйте параметр -p следующим образом.

11. Команда lastlog

Команда lastlog используется для поиска сведений о недавнем входе в систему всех пользователей или данного пользователя следующим образом.

Вот оно! Если вы знаете какой-либо другой трюк или команду командной строки для просмотра сведений об учетной записи пользователя, поделитесь с нами.

Вы найдете эти статьи по теме очень полезными:

В этой статье мы объяснили различные способы поиска информации о пользователях и данных для входа в систему Linux. Вы можете задать любые вопросы или поделиться своими мыслями через форму обратной связи ниже.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Поддержите нас

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

 Отключить Su Access для пользователя

Переместить домашний каталог в новый раздел

Система Linux Команды администратора

 Как скачать файлы в Linux

Примеры Linux Cron

Linux Vmstat и команды Iostat

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

Читайте также: