Обеспечение существования пользователя в системе Debian GNU / Linux - PullRequest
3 голосов
/ 24 августа 2009

В настоящее время я работаю над пакетом Debian для собственной программы. В рамках этого пакета мне нужно создать пользователя, от которого будет работать большинство функций программы. Я делаю это в сценарии postinst. Сценарий postinst можно запустить несколько раз (например, при обновлении), поэтому важно убедиться, что я не буду пытаться каждый раз создавать пользователя.

Итак, как я могу гарантировать, что пользователь создается только при первом запуске сценария, не затрагивая его при последующих запусках сценария?

Ответы [ 3 ]

9 голосов
/ 24 августа 2009

Попробуйте:

[aiden@dev ~]$ id aiden
uid=500(aiden) gid=500(aiden) groups=500(aiden)
[aiden@dev ~]$ id foomonkey
id: foomonkey: No such user
[aiden@dev ~]$ 

Первый $? равен 0, второй - 1.

2 голосов
/ 24 августа 2009

Вам не нужно знать, существует ли пользователь или нет. adduser (8) не вернет ошибку, если пользователь уже существует с такими же параметрами. Со страницы руководства:

EXIT VALUES
       0      The  user  exists as specified. This can have 2 causes: The user
              was created by adduser or the user was already  present  on  the
              system  before  adduser  was  invoked. Invoking adduser a second
              time with the same parameters as before also returns 0.
1 голос
/ 30 августа 2009

, как уже упоминалось, прежде чем вы сможете использовать команду 'id', если вы хотите получить всех пользователей в системе, которую вы можете использовать:

getent passwd

, который выведет список всех пользователей в системе (даже если они находятся в удаленной базе данных, такой как ldap или nis и т. Д ...)

...