Как узнать uid пользователя

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

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

Как узнать id пользователя в Linux

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

Первым выводится именно id пользовтеля. Если вам нужно узнать информацию о другом пользователе, вы можете передать его имя в параметры утилиты:

Когда необходимо вывести только id пользователя:

id -u имя_пользовтеля

Если вам надо узнать только id группы определенного пользователя, то используйте опцию -g:

id -g имя_пользователя

Есть ещё несколько способов посмотреть id. Например, для текущего пользователя его можно найти в переменной окружения UID:

Ещё один вариант — утилита getent:

getent passwd имя_пользователя

Или смотрим содержимое файла /etc/passwd с помощью команды grep:

grep имя_пользователя /etc/passwd

Здесь первый цифровой параметр — это сам id, а второй, который расположен за двоеточием, — это GID.

Выводы

В этой небольшой статье мы рассмотрели, как узнать id пользователя Linux. Если у вас остались вопросы, спрашивайте в комментариях!

В среде Windows каждому доменному и локальному пользователю, группе и другим объектам безопасности, присваивается уникальный идентификатор — Security Identifier или SID. Именно SID, а не имя пользователя используется для контроля доступа к различным ресурсам: сетевым папкам, ключам реестра, объектам файловой системы, принтерам и т.д. В этой статье мы покажем несколько простых способов узнать SID пользователя или группы (локальных или из Active Directory), и обратную процедуру – определение имени пользователя или группы Windows по известному SID.

Получение учетки по SID:

На мой взгляд, проще всего для преобразования SID -> Username и Username -> SID проще всего воспользоваться командами командной строки или несложными командлетами PowerShell:

Как получить SID локального пользователя?

Чтобы получить SID локальной учетной записи на данном компьютере, можно воспользоваться утилитой wmic, которая позволяет обратится к пространству имен WMI компьютера. Для получения SID локального пользователя test_user можно использовать утилиту WMIC:

wmic useraccount where name=’test_user’ get sid

Команда вернула нам SID указанного пользователя — S-1-5-21-1175651296-1316126944-203051354-1005.

Если нужно узнать SID текущего пользователя (под которым выполняется команда), используйте такую команду:

wmic useraccount where name=’%username%’ get sid

С помощью двух .NET классов System.Security.Principal.SecurityIdentifier и System.Security.Principal.NTAccount вы можете получить SID пользователя с помощью PowerShell:

$objUser = New-Object System.Security.Principal.NTAccount("LOCAL_USER_NAME")
$strS >$strSID.Value

Узнать SID пользователя или группы в домене AD по имени

Вы можете узнать SID текущей доменной учетной записи командой:

Узнать SID доменного пользователя можно с помощью WMIC. В этом случае в команде нужно указать имя домена:

wmic useraccount where (name=’jjsmith’ and domain=′corp.winitpro.ru′) get sid

Для получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell. Получим SID для аккаунта jjsmith:

Get-ADUser -Identity ‘jjsmith’ | select SID

Вы можете получить SID группы AD с помощью другого командлета — Get-ADGroup:

Get-ADGroup -Filter | Select SID

Если на вашем компьютере не установлен модуль AD для PowerShell, вы можете получить SID пользователя с помощью упомянутых ранее классов .Net:

$objUser = New-Object System.Security.Principal.NTAccount("corp.wintpro.ru","jjsmith")
$strS >$strSID.Value

Эта же команда PowerShell в одну строку:

(new-object security.principal.ntaccount “jjsmith").translate([security.principal.securityidentifier])

Как узнать имя учетной записи пользователя или группы по SID?

Чтобы узнать имя учетной записи пользователя по SID (обратная процедура), можно воспользоваться одной из следующих команд:

wmic useraccount where s get name

На PowerShell получить имя пользователя по его SID можно с помощью модуля AD для PowerShell:

Get-ADUser -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

Чтобы найти имя доменной группы по известному SID используйте команду:

Get-ADGroup -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

Также можно узнать SD группу и пользователя с помощью встроенных классов PowerShell (без дополнительных модулей):

$objS )
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

Поиск объектов в Active Directory по SID

Если вы не знаете к какому типу объекта AD относится некий SID и какой точно командлет использовать для его поиска (Get-AdUser, Get-ADComputer или Get-ADGroup), вы можете использовать универсальный метод поиска объектов в Active Directory по SID с помощью командлета Get-ADObject.

$s >Get-ADObject –IncludeDeletedObjects -Filter "objectSid -eq ‘$sid’" | Select-Object name, objectClass

В нашем случае объект AD, который имеет данный SID, является компьютером (objectClass).

В некоторых случаях может возникнуть необходимость узнать идентификатор пользователя (UID, User identifier) в ОС семейства Linux. Вариантов, как можно это сделать — много, в этой мини-статье мы рассмотрим лишь несколько наиболее простых.

Вариант 1

С использованием команды id:

username — это имя пользователя, UID которого необходимо узнать. Пример работы команды:

Вариант 2

Если, нужно узнать UID текущего пользователя (под которым мы находимся в системе в момент выполнения команды), то его можно посмотреть с помощью следующей команды:

Оцените статью
Добавить комментарий