Come posso creare un utente senza accesso?


134

Vorrei creare un utente e un gruppo entrambi chiamati subversionsu un sistema RHEL 5. Ho guardato la pagina man per useradde immagino che il comando sarebbe solo ...

useradd subversion

Tuttavia, non so come evitare di creare una home directory. Inoltre, non voglio che sia un utente che può accedere al sistema.

Lo scopo principale è solo quello di fornire un proprietario per un repository SVN.


Hai davvero guardato la pagina man di useradd e non hai trovato -M (non creare la directory HOME)?
Inemanja,

Risposte:


76

Puoi usare l' -Mopzione (assicurati che sia un capitale) per assicurarti che non venga creata alcuna home directory:

useradd -M subversion

quindi bloccare l'account per impedire l'accesso:

usermod -L subversion

59
Questa non è una risposta particolarmente forte, l'utente creato in questo modo ha ancora una shell. E non hai nemmeno avvertito l'OP che questo era il caso. Retrospettivamente che sarebbe usermod -s /bin/false subversion, o con --shell /bin/falsealuseradd
Lee Hambley

7
@beak l'account è bloccato, avere una shell è un punto controverso.
John T,

15
@beak in realtà solo l'utente root sarebbe in grado di fare l'account bloccato, ma perché preoccuparsi se la persona ha già ottenuto l'accesso root? E l'impostazione della shell non fa molto quando un utente può eseguirlo su -s /bin/bash usernamee bypassarlo.
John T,

11
grazie per aver dedicato del tempo alla discussione, ovviamente hai ragione; ma mi fa male vedere gli utenti senza login con shell definite, mi sembra pigro e nel caso qualcuno non abbia familiarità con il sistema, è bello che non possano fare accidentalmente qualcosa di involontario; gli hacker sono di una razza diversa, se hanno già un guscio sulla macchina, penso che sia fondamentalmente game over
Lee Hambley

11
Questi commenti riguardavano esattamente le cose che speravo di imparare, grazie @Beaks && John T
Rixius

220

useradd -r subversion

per man useradd:

-r, --system create a system account

Il flag -r creerà un utente di sistema - uno che non ha una password, una home directory e non è in grado di accedere.


1
questo comando creerà anche un gruppo per l'utente chiamato lo stesso. Quindi l'utente "sovversione" sarà nel gruppo "sovversione". Ottimo per quando in seguito vuoi fare "sudo chown -R sovversione: sovversione / percorso / in / cartella"
s3v1

49
solo con -r possiamo comunque effettuare il login. abbiamo bisogno di -s / bin / false per disabilitare la shell dell'utente.
c4il,

8
@ c4il Ma l'unico che può accedervi è root, giusto? Voglio dire, non hanno una password, quindi mi aspetto che solo root sia in grado di accedervi.
Camilo Martin,

ma possiamo comunque assegnare loro le password passwd subversion.
Shayan,

@rynop Come posso verificare se un utente sul mio computer è un utente di sistema? c'è un modo? Penso che non facciano parte del gruppo dei sudoer per cominciare.
Shayan,

22

Un'altra soluzione per creare un utente di sistema, usando adduser :

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

Puoi rimuovere --groupse non hai bisogno di raggruppare il tuo nome utente e --no-create-homese hai bisogno di una casa per questo utente.

Come menzionato da py4on nei commenti, su alcuni sistemi potrebbe essere necessario utilizzare l' --disabled-loginopzione per disabilitare il login per questo utente. Tuttavia, sembra essere il comportamento predefinito in Debian.

Attenzione che l'ID numerico dell'utente sarà di un account di sistema. --uidTuttavia, puoi correggere l'UID usando l' opzione.

Infine, nota che su alcuni sistemi (ad esempio Fedora) adduserè un link simbolico a useradd, nel qual caso questa risposta non è valida.


3
Per indirizzare "Non voglio che sia un utente che può accedere" aggiungi anche il flag --disabled-login(prima yourusername)
toxefa

@ py4on: Sebbene questa opzione sia documentata nella manpage, almeno sembra essere quella predefinita in Debian.
Skippy le Grand Gourou,

15

La risposta più chiara alla domanda originale è eseguire il comando:

adduser subversion --shell=/bin/false

E se non vuoi nemmeno la home directory:

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

o, se si desidera un utente di sistema ancora più bloccato (normalmente questo non creerà una home directory - è stato segnalato che creerà comunque una home directory in Linux Mint come da commento sotto)

adduser subversion --system --group

Tutti questi comandi creeranno un gruppo con lo stesso nome dell'utente


Su Mint l'ultimo comando crea sicuramente una home Creating home directory '/home/nodejs' ...
directory

11

La forma più sicura per farlo sarebbe usare in questo addusermodo:

$ adduser -r -s /bin/nologin subversion

NOTA: assicurarsi di includere -s /sbin/nologinper disabilitare la disponibilità di qualsiasi shell di accesso all'account.

Conferma della configurazione

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

Tuttavia non esiste una directory:

$ ll /home | grep subversion
$

Conferma che l'account è altrimenti utilizzabile:

$ sudo -u subversion whoami
subversion

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

Rimozione

Se è necessario rimuovere questo account:

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

E confermare:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$

1
adduser non riconosce l'opzione -r. Penso che intendevi useradd.
Felwithe,

@felwithe no, ogni risposta che scrivo provo sempre prima di postare. Ho controllato e quell'interruttore mostra su un sistema CentOS 6.x.
slm,

Ecco un pasticcio del risultato . Sono su Ubuntu 16 LTS. Non so quale versione di adduser sia installata ma non avrei mai immaginato che sarebbe cambiata molto nel tempo o da sistema a sistema. L'ho provato con un flag --system, che ha creato un homedir per l'utente (non ne volevo uno). Alla fine l'ho appena fatto con useradd invece di adduser e ha funzionato come previsto. Quindi ho solo pensato che lo avresti digitato male come adduser quando doveva essere useradd.
felwithe il

@felwithe sì, non avevo dubbi su di te, solo per farti sapere che l'ho provato Cool. Sono una mod sul sito Unix e Linux e questi cmd sono notoriamente diversi distro b / n. L'OP menziona RHEL nella domanda, quindi perché ho risposto in questo modo, ma non l'hanno etichettato come specifico cappello rosso, il che fa parte della confusione su questo IMO di domande e risposte.
slm,

1

Su una macchina CentOS 7

  • se l'utente non esiste:
    useradd testuser --shell=/sbin/nologin

  • se si desidera modificare un utente esistente:
    usermod testuser --shell=/sbin/nologin


0

Inizia generando una password crittografata per l'utente con un massimo di 8 caratteri facendo:

openssl passwd -crypt new_password_less_than_eight_chars_long

Quindi fai:

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

0

In Debian, puoi creare un utente di sistema (senza home directory) e shell di login:

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

Se il tuo nologinprogramma è /sbin/nologinattivo, ti preghiamo di cambiare di conseguenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.