Jak mogę utworzyć użytkownika niezalogowanego?

134

Chciałbym utworzyć użytkownika i grupę wywoływaną subversionw systemie RHEL 5. Spojrzałem na stronę useraddpodręcznika użytkownika i wydaje mi się, że polecenie będzie po prostu ...

useradd subversion

Nie wiem jednak, jak uniknąć tworzenia katalogu domowego. Nie chcę też, aby był to użytkownik, który może zalogować się do systemu.

Głównym celem jest po prostu zapewnienie właściciela repozytorium SVN.

Ethan
źródło
Czy naprawdę spojrzałeś na stronę man userdd i nie znalazłeś -M (nie twórz katalogu HOME)?
inemanja

Odpowiedzi:

76

Możesz użyć -Mprzełącznika (upewnij się, że jest to stolica), aby upewnić się, że nie zostanie utworzony katalog domowy:

useradd -M subversion

następnie zablokuj konto, aby uniemożliwić logowanie:

usermod -L subversion
John T.
źródło
59
To nie jest szczególnie silna odpowiedź, użytkownik utworzony w ten sposób wciąż ma powłokę. I nawet nie ostrzegłeś PO, że tak jest. Retrospektywnie, że będzie usermod -s /bin/false subversion, albo --shell /bin/falsedouseradd
Lee Hambley
7
@beak konto jest zablokowane, posiadanie powłoki to kwestia sporna.
John T
15
@beak w rzeczywistości tylko użytkownik root byłby w stanie zalogować się na zablokowane konto, ale po co zawracać sobie głowę tą osobą, która już uzyskała dostęp do konta root? A ustawienie powłoki niewiele robi, gdy użytkownik może to uruchomić su -s /bin/bash usernamei ominąć.
John T
11
dzięki za poświęcenie czasu na dyskusję, oczywiście masz rację; ale boli mnie widok nie zalogowanych użytkowników ze zdefiniowanymi powłokami, wydaje mi się leniwy, a jeśli ktoś nie jest obeznany z systemem, fajnie, że nie mogą przypadkowo zrobić czegoś niezamierzonego; hakerzy są inną rasą, jeśli mają już powłokę na maszynie, myślę, że to po prostu koniec gry
Lee Hambley
11
Te komentarze dotyczyły dokładnie tego, czego chciałem się nauczyć, dzięki @Beaks && John T
Rixius
220

useradd -r subversion

na man useradd:

-r, --system create a system account

Flaga -r utworzy użytkownika systemu - takiego, który nie ma hasła, katalogu domowego i nie może się zalogować.

rynop
źródło
1
to polecenie utworzy nawet grupę dla użytkownika o nazwie to samo. Zatem użytkownik „subversion” będzie w grupie „subversion”. Idealne, gdy później chcesz zrobić „sudo chown -R subversion: subversion / path / to / folder”
s3v1
49
z opcją -r nadal możemy się zalogować. potrzebujemy -s / bin / false, aby wyłączyć powłokę użytkownika.
c4il 25.10.13
8
@ c4il Ale jedynym, który może się do nich zalogować, jest root, prawda? To znaczy, nie mają hasła, więc spodziewałbym się, że tylko root będzie mógł się do nich zalogować.
Camilo Martin
ale i tak możemy przypisać im hasła, próbowałem passwd subversion.
Shayan
@rynop Jak mogę sprawdzić, czy użytkownik na moim komputerze jest użytkownikiem systemu? czy jest jakiś sposób? Myślę, że na początek nie ma ich w grupie sudo'ers.
Shayan
22

Kolejne rozwiązanie do stworzenia użytkownika systemu przy użyciu adduser :

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

Możesz usunąć, --groupjeśli nie potrzebujesz grupować swojej nazwy użytkownika i --no-create-homejeśli potrzebujesz domu dla tego użytkownika.

Jak wspomniano w py4on w komentarzach, w niektórych systemach może być konieczne użycie tej --disabled-loginopcji, aby, no cóż, wyłączyć logowanie dla tego użytkownika. Wygląda jednak na domyślne zachowanie w Debianie.

Uwaga: numeryczny identyfikator użytkownika będzie oznaczał konto systemowe. Możesz jednak naprawić identyfikator użytkownika za pomocą tej --uidopcji.

Na koniec zauważ, że w niektórych systemach (np. Fedora) adduserjest dowiązaniem symbolicznym useradd, w którym to przypadku odpowiedź jest nieprawidłowa.

Skippy le Grand Gourou
źródło
3
Aby odpowiedzieć „Nie chcę, aby to był użytkownik, który może się zalogować”, dodaj także flagę --disabled-login(wcześniej yourusername)
toksefa
@ py4on: Chociaż ta opcja jest udokumentowana na stronie podręcznika, wydaje się, że jest ona domyślna przynajmniej w Debianie.
Skippy le Grand Gourou
15

Najczystszą odpowiedzią na pierwotne pytanie jest uruchomienie polecenia:

adduser subversion --shell=/bin/false

A jeśli nie chcesz katalogu domowego:

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

lub, jeśli chcesz jeszcze bardziej zablokowanego użytkownika systemu (normalnie nie utworzy to katalogu domowego - zgłoszono, że nadal będzie tworzył katalog domowy w Linuksie miętowym, zgodnie z komentarzem poniżej)

adduser subversion --system --group

Wszystkie te polecenia utworzą grupę o tej samej nazwie co użytkownik

TimmyGee
źródło
Na mennicy ostatnie polecenie zdecydowanie tworzy Creating home directory '/home/nodejs' ...
katalog
11

Najbezpieczniejszą formą zrobienia tego byłoby użycie addusertakiego:

$ adduser -r -s /bin/nologin subversion

UWAGA: Pamiętaj, aby dołączyć, -s /sbin/nologinaby wyłączyć udostępnianie powłoki do konta.

Potwierdzenie konfiguracji

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

Jednak nie ma katalogu:

$ ll /home | grep subversion
$

Potwierdź, że z konta można w inny sposób korzystać:

$ sudo -u subversion whoami
subversion

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

Usuwanie

Jeśli musisz usunąć to konto:

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

I potwierdź:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$
slm
źródło
1
adduser nie rozpoznaje opcji -r. Myślę, że miałeś na myśli userdd.
felwithe
@ czuję nie, każdą odpowiedź, którą piszę, zawsze testuję przed wysłaniem. Sprawdziłem i ten przełącznik pokazuje się w systemie CentOS 6.x.
slm
Oto skrót wyniku . Jestem na Ubuntu 16 LTS. Nie wiem, która wersja dodatku jest zainstalowana, ale nigdy nie wyobrażałam sobie, że zmieniłaby się znacznie z czasem lub z systemu na system. Następnie wypróbowałem to z flagą --system, która utworzyła homedir dla użytkownika (nie chciałam). Wreszcie zrobiłem to z useradd zamiast adduser i działało zgodnie z planem. Więc po prostu założyłem, że pomyliłeś go jako adduser, gdy miał być dodany przez użytkownika.
felwithe
@felwithe yeah Nie wątpiłem w ciebie, po prostu informując cię, że próbowałem 8-). Jestem modem na stronie Uniksa i Linuksa, a te cmd to notorycznie różne dystrybucje czarno-białe. OP wspomina RHEL w pytaniu, dlatego tak odpowiedziałem, ale nie oznaczono go jako specyficznego dla red hat, co jest częścią zamieszania na temat tego pytania i odpowiedzi IMO.
slm
1

Na maszynie CentOS 7

  • jeśli użytkownik nie istnieje:
    useradd testuser --shell=/sbin/nologin

  • jeśli chcesz zmodyfikować istniejącego użytkownika:
    usermod testuser --shell=/sbin/nologin

lauc.exon.nod
źródło
0

Zacznij od wygenerowania zaszyfrowanego hasła dla użytkownika o maksymalnej długości 8 znaków, wykonując:

openssl passwd -crypt new_password_less_than_eight_chars_long

Następnie wykonujesz:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username
użytkownik1047344
źródło
0

W Debianie możesz utworzyć użytkownika systemowego (bez katalogu domowego) i zalogować się do powłoki:

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

Jeśli Twój nologinprogram jest /sbin/nologinwłączony, zmień go odpowiednio.

yoonghm
źródło