Как я могу создать пользователя без регистрации?

134

Я хотел бы создать пользователя и группу, которые будут вызываться subversionв системе RHEL 5. Я посмотрел на страницу справочника useraddи думаю, что команда будет просто ...

useradd subversion

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

Основная цель - просто предоставить владельца для хранилища SVN.

Итан
источник
Вы действительно просматривали справочную страницу пользователя useradd и не нашли -M (не создавайте каталог HOME)?
Инеманья

Ответы:

76

Вы можете использовать -Mпереключатель (убедитесь, что он прописной), чтобы убедиться, что домашний каталог не будет создан:

useradd -M subversion

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

usermod -L subversion
Джон Т
источник
59
Это не очень сильный ответ, созданный таким образом пользователь все еще имеет оболочку. И вы даже не предупредили ОП, что это так. Ретроспективно , что было бы usermod -s /bin/false subversion, или --shell /bin/falseкuseradd
Ли Hambley
7
@beak учетная запись заблокирована, наличие оболочки является спорным вопросом.
Джон Т
15
@beak на самом деле только root-пользователь сможет использовать su для заблокированной учетной записи, но зачем беспокоиться, если человек уже получил root-доступ? И установка оболочки не имеет большого значения, когда пользователь может запустить su -s /bin/bash usernameи обойти это.
Джон Т
11
спасибо, что нашли время для обсуждения, вы, конечно, правы; но мне больно видеть не входящих в систему пользователей с определенными оболочками, мне кажется, что это лениво, и если кто-то не знаком с системой, приятно, что они не могут случайно сделать что-то непреднамеренное; хакеры другой породы, если они уже получили оболочку на машине, я думаю, что это в основном игра окончена
Ли Хэмбли
11
Эти комментарии касались именно того, чему я надеялся научиться, спасибо @Beaks && John T
Rixius
220

useradd -r subversion

по man useradd:

-r, --system create a system account

Флаг -r создаст системного пользователя, у которого нет пароля, домашнего каталога и который не может войти в систему.

rynop
источник
1
эта команда даже создаст группу для пользователя с таким же именем. Таким образом, пользователь «Subversion» будет в группе «Subversion». Отлично
подходит для тех случаев,
49
только с -r мы можем войти в систему. нам нужен -s / bin / false, чтобы отключить пользовательскую оболочку.
c4il
8
@ c4il Но единственный, кто может войти в них - это root, верно? Я имею в виду, что у них нет пароля, поэтому я ожидаю, что только root сможет войти в них.
Камило Мартин
но мы можем назначить им пароли в любом случае, я пытался passwd subversion.
Шаян
@rynop Как я могу проверить, является ли пользователь на моем компьютере системным пользователем? там в любом случае? Я думаю, что они не в группе sudo'ers для начала.
Шаян
22

Еще одно решение для создания системного пользователя, использующее adduser :

adduser --system --no-create-home --group yourusername

Вы можете удалить, --groupесли вам не нужна группа yourusername, и --no-create-homeесли вам нужен дом для этого пользователя.

Как упомянуто в комментариях py4on, в некоторых системах может потребоваться использовать эту --disabled-loginопцию, чтобы отключить вход для этого пользователя. Похоже, что это поведение по умолчанию в Debian.

Помните, что числовой идентификатор пользователя будет принадлежать системной учетной записи. Вы можете исправить UID, используя --uidопцию, хотя.

Наконец, обратите внимание, что в некоторых системах (например, Fedora) adduserесть символическая ссылка useradd, и в этом случае этот ответ недействителен.

Скиппи ле Гран Гуру
источник
3
Для ответа на вопрос «Я не хочу, чтобы это был пользователь, который может войти в систему», добавьте флаг --disabled-login(до yourusername)
toxefa
@ py4on: Хотя эта опция задокументирована на man-странице, она, по крайней мере, является стандартной по умолчанию в Debian.
Скиппи ле Гран Гуру
15

Самый чистый ответ на исходный вопрос - запустить команду:

adduser subversion --shell=/bin/false

И если вам не нужен домашний каталог:

adduser subversion --shell=/bin/false --no-create-home

или, если вы хотите еще более заблокированного системного пользователя (обычно это не создает домашний каталог - сообщается, что он все равно создаст домашний каталог в linux mint согласно комментарию ниже)

adduser subversion --system --group

Все эти команды создадут группу с тем же именем, что и пользователь

TimmyGee
источник
На Mint последняя команда определенно создает домашний Creating home directory '/home/nodejs' ...
каталог
11

Самая безопасная форма для этого - использовать adduserтак:

$ adduser -r -s /bin/nologin subversion

ПРИМЕЧАНИЕ. Не забудьте включить, -s /sbin/nologinчтобы отключить доступ к любой учетной записи для учетной записи.

Подтверждение настройки

$ grep subversion /etc/passwd /etc/shadow
/etc/passwd:subversion:x:496:496::/home/subversion:/bin/nologin
/etc/shadow:subversion:!!:17232::::::

Однако нет каталога:

$ ll /home | grep subversion
$

Подтвердите, что учетная запись может использоваться в других случаях:

$ sudo -u subversion whoami
subversion

$ sudo -u subversion date
Tue Mar  7 08:58:57 EST 2017

Удаление

Если вам нужно удалить этот аккаунт:

$ userdel subversion -r
userdel: subversion mail spool (/var/spool/mail/subversion) not found
userdel: subversion home directory (/home/subversion) not found
$

И подтвердить:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$
ОДС
источник
1
adduser не распознает опцию -r. Я думаю, что вы имели в виду useradd.
17
@felwithe нет, каждый ответ, который я пишу, я всегда проверяю перед публикацией. Я проверил, и этот переключатель показывает в системе CentOS 6.x.
SLM
Вот пастбище результата . Я на Ubuntu 16 LTS. Я не знаю, какая версия adduser установлена, но я никогда не предполагал, что она сильно изменится со временем или от системы к системе. Затем я попытался сделать это с флагом --system, который создал homedir для пользователя (я не хотел его). Наконец, я просто сделал это с помощью useradd вместо adduser, и все заработало, как и планировалось. Так что я просто предположил, что вы опечатали его как adduser, когда он должен был использоваться.
felwithe
@ Да, я не сомневался в тебе, просто дал тебе знать, что попробовал 8-). Я мод на сайте Unix и Linux, и эти cmds, как известно, разные ч / б дистрибутивы. ОП упоминает RHEL в вопросе, поэтому я и ответил на него так, но они не пометили его как специфический для красной шапки, что является частью путаницы в этом вопросно-ответном IMO.
SLM
1

На машине CentOS 7

  • если пользователь не существует:
    useradd testuser --shell=/sbin/nologin

  • если вы хотите изменить существующего пользователя:
    usermod testuser --shell=/sbin/nologin

lauc.exon.nod
источник
0

Начните с создания зашифрованного пароля для пользователя длиной не более 8 символов, выполнив:

openssl passwd -crypt new_password_less_than_eight_chars_long

Тогда вы делаете:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username
user1047344
источник
0

В Debian вы можете создать системного пользователя (без домашнего каталога) и оболочку входа:

useradd --system --shell=/usr/sbin/nologin <username>

Если ваша nologinпрограмма включена /sbin/nologin, пожалуйста, измените соответствующим образом.

yoonghm
источник