Як я можу створити користувача без входу?


134

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

useradd subversion

Однак не знаєте, як уникнути створення домашнього режиму. Крім того, я не хочу, щоб це був користувач, який може входити в систему.

Основна мета - просто забезпечити власника для сховища SVN.


Ви дійсно переглянули сторінку man у користуванні useradd і не знайшли -M (не створюйте ДОМАШНУ папку)?
inemanja

Відповіді:


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 -s /bin/bash usernameта обійти.
Джон Т

11
дякую, що знайшли час для обговорення, ви, звичайно, правильні; але мені болить бачити користувачів, які не входять в систему, із визначеними оболонками, це вважає мене ледачим, і, якщо хтось не знайомий із системою, приємно, що вони не можуть випадково зробити щось ненавмисне; хакери - це інша порода, якщо вони вже отримали снаряд на машині, я думаю, що в основному це закінчено
Лі Хемблі

11
Ці коментарі стосувалися саме тих речей, які я сподівався дізнатися, дякую @Beaks && Джон Т
Ріксіус

220

useradd -r subversion

за man useradd:

-r, --system create a system account

Прапор -r створить користувача системи - такого, у якого немає пароля, домашнього dir та не може увійти.


1
ця команда навіть створить групу для користувача, який називається той самий. Тож користувач "підрив" опиниться у групі "підривної".
Чудово підходить,

49
тільки з -r ми все одно можемо увійти в систему. нам потрібно -s / bin / false для відключення оболонки користувача.
c4il

8
@ c4il Але єдиний, хто може увійти в них - це root, правда? Я маю на увазі, що у них немає пароля, тому я б очікував, що тільки root зможе увійти до них.
Каміло Мартін

але ми можемо призначити їм паролі в будь-якому випадку, я намагався passwd subversion.
Шаян

@rynop Як я можу перевірити, чи є користувачем на моїй машині користувач системи? чи є спосіб? Я думаю, що вони для початку не входять до групи судоєрів.
Шаян

22

Ще одне рішення для створення системного користувача, використовуючи adduser :

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

Ви можете видалити, --groupякщо вам не потрібне групове ім’я користувача, а --no-create-homeякщо вам потрібен дім для цього користувача.

Як згадує py4on в коментарях, в деяких системах може знадобитися використовувати --disabled-loginпараметр для того, щоб відключити вхід для цього користувача. Схоже, це поведінка за умовчанням у Debian.

Слідкуйте, що числовий ідентифікатор користувача матиме системний обліковий запис. Ви можете виправити uid, скориставшись --uidопцією.

Нарешті, зауважте, що в деяких системах (наприклад, Fedora) adduserє символьним посиланням на useradd, у цьому випадку ця відповідь не вірна.


3
На адресу "Я не хочу, щоб це був користувач, який може увійти" додайте прапор --disabled-loginтакож (раніше yourusername)
toxefa

@ py4on: Хоча ця опція задокументована у маніпуляції, вона, мабуть, є стандартною умовою в Debian.
Skippy le Grand Gourou

15

Найчистіша відповідь на початкове запитання - запустити команду:

adduser subversion --shell=/bin/false

І якщо ви також не хочете домашнього каталогу:

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

або, якщо ви хочете ще більше заблокованого користувача системи (як правило, це не створить домашній каталог - повідомлялося, що він все одно створить домашній каталог у монетному дворі Linux, згідно коментаря нижче)

adduser subversion --system --group

Усі ці команди створять групу з тим самим іменем, що і користувач


Остання команда на монетному дворі, безумовно, створює домашній dir:Creating home directory '/home/nodejs' ...
jcollum

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. Я думаю, ти мав на увазі усерад.
фельдшер

@felwithe ні, кожну відповідь, яку я записую, я завжди перевіряю перед публікацією. Я перевірив, і цей перемикач показує в системі CentOS 6.x.
slm

Ось пастабін результату . Я на Ubuntu 16 LTS. Я не знаю, яка версія adduser встановлена, але я ніколи не уявляла, що вона сильно зміниться з часом або від системи до системи. Потім я спробував це із прапором --system, який створив homedir для користувача (я не хотів його). Нарешті я просто зробив це з useradd замість аддудера, і це спрацювало, як було заплановано. Тож я просто припустив, що ви помилково введете його як прихильник, коли він повинен був бути використаний.
Felwit

@felwithe Так, я не сумнівався в тобі, просто дав знати, що я спробував це 8-). Я мод на веб-сайті Unix та Linux, і ці cmds, як відомо, не відрізняються між собою. ОП в запитанні згадує RHEL, отже чому я відповів на це так, але вони не позначили це як специфічний червоний капелюх, що є частиною плутанини в цьому ІМО з питань запитання.
slm

1

На машині CentOS 7

  • якщо користувача не існує:
    useradd testuser --shell=/sbin/nologin

  • якщо ви хочете змінити наявного користувача:
    usermod testuser --shell=/sbin/nologin


0

Почніть з генерування зашифрованого пароля для користувача із довжиною не більше 8 символів, виконуючи такі дії:

openssl passwd -crypt new_password_less_than_eight_chars_long

Тоді ви робите:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username

0

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

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

Якщо ваша nologinпрограма входить /sbin/nologin, будь ласка, змініть її відповідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.