Как я могу сопоставить UID с именами пользователей, используя функции библиотеки Perl? - PullRequest
4 голосов
/ 24 мая 2010

Я ищу способ сопоставления uid (уникального числа, представляющего пользователя системы) с именем пользователя, используя Perl.

Пожалуйста, не предлагайте grep ing / etc / passwd:)

Редактировать

Как пояснение, я не искал решения, которое включало бы чтение / etc / passwd явно . Я понимаю, что любое решение могло бы в конечном итоге сделать это, но я искал библиотечную функцию, чтобы сделать это для меня.

Ответы [ 3 ]

8 голосов
/ 24 мая 2010

Стандартная функция getpwuid, как и та же функция C, получает информацию о пользователе на основе своего идентификатора. Нет use s необходимо:

my ($name) = getpwuid(1000);
print $name,"\n";

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

1 голос
/ 24 мая 2010

Чтение / etc / passwd и хэширование UID для имени входа.

Редактировать:

$uid   = getpwnam($name);
$name  = getpwuid($num);
$name  = getpwent();
$gid   = getgrnam($name);
$name  = getgrgid($num;
$name  = getgrent();

Как вы можете видеть, независимо от того, какой из них вы выбрали, системный вызов читает из/ etc / passwd (см. this для справки)

0 голосов
/ 24 мая 2010

На самом деле я бы предложил создать хеш на основе / etc / passwd :-) Это должно работать хорошо, поскольку идентификаторы пользователей должны быть уникальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...