Как создать пользователя без пароля?


22

В OS X можно иметь пользователей без паролей. Если вы осмотрите их сdscl их паролем, отображаются как *. Это используется для системных пользователей , таких как пользователи для баз данных , таких как mysql, и pgsqlт.д. Что приятно об этом заключается в том , что эти пользователи не отображается на экране входа в систему, и вы не можете войти в них без и sudoт.д.

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

Как вы создаете такого пользователя?


В Linux вы передаете флаг --disabled-password в adduser. Может быть, OS X имеет нечто подобное в своем репертуаре командной строки?
BR

Вы имеете в виду; пользователь может войти без пароля или вообще не может войти, потому что пароль не установлен?
Крис Хуан-Ливер

1
Я заметил, что вы не приняли ответ ... одно требование, чтобы не входить в различные списки xdm, - это иметь очень низкий ИД пользователя. на многих системах useraddначинается добавление идентификаторов на 1000, и менеджеры входа в систему не будут показывать идентификаторы пользователей ниже этого, но все выше. так что, хотя это не ответ на этот вопрос, это может быть решением проблемы. обратите внимание, что 1000 является произвольным и может быть ниже или выше в вашем дистрибутиве. Чтобы исправить это, просто измените пользовательскую запись, /etc/passwdчтобы иметь более низкий uid. Теперь мне нужно задать аналогичный вопрос.
ксенотеррацид

@xenoterracide: когда я заново создал пользователя, я дал ему старый идентификатор, это был пользователь pgsql, которого я удалил с идентификатором на единицу выше, чем у mysql, поэтому я уверен, что это не оказало никакого влияния в этом случае но спасибо за информацию в любом случае.
googletorp

Ответы:


6

Вы можете запустить passwd --delete <username>после создания пользователя с adduser. После этого вы сможете войти без ввода пароля.


4
Я думаю, что это полная противоположность тому, что здесь просят.
Шадур

Сначала я думал, что это был правильный (или лучший) ответ, пока я не перечитал вопрос ОП, который упоминает «системный пользователь» и не отображается на «экране входа». Этот метод будет отображаться на экране входа в систему, и вы можете использовать sudo.
HidekiAI

3

Пользователь в / etc / passwd с домашним каталогом / dev / null и оболочкой / sbin / nologin, может использоваться для выполнения команд sudo, но на самом деле он не может войти в систему, например;

из моего / etc / passwd

tcpdump:x:104:441:added by portage for tcpdump:/dev/null:/sbin/nologin

Я наполовину помню, что это заставит его исчезнуть с экрана входа в XDM, но я больше не использую XDM, так что это предположение :-)


Это правильный ответ, потому что ОП запросил учетную запись, которую вы не можете «sudo» или показать на «экране входа», установив «/ sbin / nologin» для оболочки. Следует отметить одну вещь: поскольку операционная система запрашивала «системного пользователя», следует также упомянуть, что «useradd --system» следует использовать для создания UID с небольшим числом (как это делает portage / ebuild)
HidekiAI

3

Вы можете использовать usermod, который будет отключать пароль, используя !вместо *.

usermod -L <username>

Со страницы руководства на usermod:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.

2

Использование dsclдало бы

dscl . -passwd /Users/myuser ""

Это, в отличие от большинства ответов выше ... на самом деле работает для меня.
GroovyCakes

1

Я не могу быть уверен в OSX, но во FreeBSD вы можете использовать:

pw add user mymuser -g mygroup -s /nonexistent -h -

значение, -переданное -hпараметру, указывает pwустановить поле пароля в master.passwd *, создавая таким образом учетную запись без регистрации. Установка оболочки не является строго необходимой, но избегает проверки оболочки из /etc/pw.conf.




-1

В Linux я использую:

sudo useradd -r -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Следующая альтернатива должна быть более кроссплатформенной (если -rопция недоступна):

sudo useradd -K UID_MIN=100 -K UID_MAX=499 -K GID_MIN=100 -K GID_MAX=499 -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Вот:

  • пароль в / etc / shadow будет установлен на *. Без -p \*этого будет!

  • Оболочка будет /sbin/nologin(вы можете использовать /bin/falseтоже, но я думаю, что /binможет быть установлен слишком поздно на некоторых системах). Пользователь не может войти

  • -d устанавливает домашний каталог пользователя

ВАЖНАЯ ЗАМЕТКА

Здесь -rсоздается системный пользователь:

Этот флаг используется для создания системной учетной записи. То есть, пользователь со значением, UIDменьшим, чем значение, UID_MINопределенное в /etc/login.defs, и пароль которого не имеет срока действия. Обратите внимание, что useradd не создаст домашний каталог для такого пользователя, независимо от значения по умолчанию в /etc/login.defs . Вы должны указать -mопцию, если вы хотите создать домашний каталог для системной учетной записи. Это опция, добавленная Red Hat .

Опция -rможет отсутствовать в вашей системе. Поэтому для создания системного пользователя, который не отображается на экране входа в систему, я думаю, вы можете использовать -Kопцию. Что - то вроде: -K UID_MIN=100 -K UID_MAX=499. Вы можете попробовать вариант как:

-K UID_MAX=$(cat /etc/login.defs | grep ^UID_MIN | awk '{print $2}')

чтобы автоматически определить вас UID_MAX, но я не тестировал на OS X. Вам нужно использовать SYS_UID_MAXдля, UID_MINесли это не комментируется в /etc/login.defs

То же самое для GID_MAXи GID_MINдля системного идентификатора группы. (См. GID_MINИ если раскомментировано SYS_GID_MAXв /etc/login.defs использовать как GID_MAX)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.