Bagaimana saya bisa membuat pengguna non-login?

134

Saya ingin membuat pengguna dan grup yang keduanya memanggil subversionsistem RHEL 5. Saya melihat halaman manual useradddan saya kira perintahnya adalah ...

useradd subversion

Namun, tidak yakin bagaimana cara menghindari membuat dir home. Juga, saya tidak ingin menjadi pengguna yang dapat masuk ke sistem.

Tujuan utamanya adalah hanya untuk menyediakan pemilik untuk repositori SVN.

Ethan
sumber
Apakah Anda benar-benar melihat halaman manual useradd dan tidak menemukan -M (jangan membuat direktori HOME)?
inemanja

Jawaban:

76

Anda dapat menggunakan -Msakelar (pastikan itu adalah modal) untuk memastikan tidak ada direktori home yang akan dibuat:

useradd -M subversion

lalu kunci akun untuk mencegah masuk:

usermod -L subversion
John T
sumber
59
Ini bukan jawaban yang sangat kuat, pengguna yang dibuat dengan ini masih memiliki shell. Dan Anda bahkan tidak memperingatkan OP bahwa ini adalah masalahnya. Retrospektif yang akan usermod -s /bin/false subversion, atau dengan --shell /bin/falsekeuseradd
Lee Hambley
7
@beak akun dikunci, memiliki shell adalah titik diperdebatkan.
John T
15
@beak sebenarnya hanya pengguna root yang bisa su ke akun yang terkunci, tetapi mengapa repot-repot jika orang tersebut sudah mendapatkan akses root? Dan pengaturan shell tidak banyak membantu ketika pengguna dapat menjalankan su -s /bin/bash usernamedan memotongnya.
John T
11
terima kasih telah meluangkan waktu untuk berdiskusi, tentu saja Anda benar; tapi itu menyakitkan saya untuk melihat pengguna non-login dengan shell didefinisikan, itu menurut saya malas, dan memetikan seseorang tidak terbiasa dengan sistem, itu bagus bahwa mereka tidak dapat secara tidak sengaja melakukan sesuatu yang tidak disengaja; peretas adalah jenis yang berbeda, jika mereka sudah memiliki cangkang di mesin, saya pikir itu pada dasarnya permainan berakhir
Lee Hambley
11
Komentar-komentar ini mencakup hal-hal yang saya harap ingin pelajari, terima kasih @Beaks && John T
Rixius
220

useradd -r subversion

per man useradd:

-r, --system create a system account

Bendera -r akan membuat pengguna sistem - yang tidak memiliki kata sandi, direktori home dan tidak dapat login.

rynop
sumber
1
perintah ini bahkan akan membuat grup untuk pengguna yang disebut sama. Jadi pengguna "subversi" akan berada di grup "subversi". Bagus untuk ketika nanti Anda ingin melakukan "sudo chown -R subversi: subversi / path / ke / folder"
s3v1
49
dengan -r saja kita masih bisa login. kita perlu -s / bin / false untuk menonaktifkan shell pengguna.
c4il
8
@ c4il Tapi satu-satunya yang bisa login ke mereka adalah root, kan? Maksud saya, mereka tidak memiliki kata sandi, jadi saya berharap hanya root yang bisa login ke mereka.
Camilo Martin
tetapi kami dapat menetapkan kata sandi untuk mereka, saya mencoba passwd subversion.
Shayan
@rynop Bagaimana saya bisa memeriksa apakah pengguna di komputer saya, adalah pengguna sistem? apakah ada cara Saya pikir mereka tidak dalam kelompok sudoer untuk pemula.
Shayan
22

Solusi lain untuk membuat pengguna sistem, menggunakan adduser :

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

Anda dapat menghapus --groupjika Anda tidak perlu mengelompokkan nama pengguna Anda, dan --no-create-homejika Anda memang membutuhkan rumah untuk pengguna ini.

Seperti disebutkan oleh py4on dalam komentar, pada beberapa sistem seseorang mungkin perlu menggunakan --disabled-loginopsi untuk, dengan baik, menonaktifkan login untuk pengguna ini. Tampaknya menjadi perilaku default di bawah Debian.

Berhati-hatilah bahwa ID numerik pengguna adalah akun sistem. Anda dapat memperbaiki uid menggunakan --uidopsi.

Akhirnya, perhatikan bahwa pada beberapa sistem (misalnya Fedora) adduseradalah symlink ke useradd, dalam hal ini jawaban ini tidak valid.

Skippy le Grand Gourou
sumber
3
Untuk mengatasi "Saya tidak ingin menjadi pengguna yang bisa masuk" tambahkan bendera --disabled-loginjuga (sebelumnya yourusername)
toxefa
@ py4on: Meskipun opsi ini didokumentasikan dalam manual, tampaknya ini adalah default di bawah setidaknya Debian.
Skippy le Grand Gourou
15

Jawaban terbersih untuk pertanyaan awal adalah menjalankan perintah:

adduser subversion --shell=/bin/false

Dan jika Anda tidak menginginkan direktori home juga:

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

atau, jika Anda ingin pengguna sistem yang lebih terkunci (Biasanya ini tidak akan membuat direktori home - telah dilaporkan bahwa ia masih akan membuat direktori home di linux mint seperti komentar di bawah)

adduser subversion --system --group

Semua perintah ini akan membuat grup dengan nama yang sama dengan pengguna

TimmyGee
sumber
Pada Mint, perintah terakhir pasti menciptakan dir home:Creating home directory '/home/nodejs' ...
jcollum
11

Bentuk paling aman untuk melakukan ini adalah menggunakan adduserseperti:

$ adduser -r -s /bin/nologin subversion

CATATAN: Pastikan untuk memasukkan -s /sbin/nologinuntuk menonaktifkan shell login agar tidak tersedia untuk akun.

Konfirmasi pengaturan

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

Namun tidak ada direktori:

$ ll /home | grep subversion
$

Konfirmasikan bahwa akun dapat digunakan sebaliknya:

$ sudo -u subversion whoami
subversion

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

Pemindahan

Jika Anda perlu menghapus akun ini:

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

Dan konfirmasikan:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$
slm
sumber
1
adduser tidak mengenali opsi -r. Saya pikir Anda maksud useradd.
felwithe
@felwithe tidak, setiap jawaban yang saya tulis saya selalu menguji sebelum posting. Saya memeriksa dan saklar itu menunjukkan pada sistem CentOS 6.x.
slm
Berikut adalah pastebin dari hasilnya . Saya menggunakan Ubuntu 16 LTS. Saya tidak tahu versi adduser apa yang diinstal tetapi saya tidak pernah membayangkan itu akan banyak berubah dari waktu ke waktu atau sistem ke sistem. Saya kemudian mencobanya dengan flag --sistem sebagai gantinya, yang menciptakan homedir untuk pengguna (saya tidak menginginkannya). Akhirnya saya hanya melakukannya dengan useradd, bukan adduser dan bekerja sesuai rencana. Jadi saya hanya berasumsi bahwa Anda salah mengetik sebagai adduser ketika seharusnya useradd.
felwithe
@felwithe ya saya tidak meragukan Anda, hanya membiarkan Anda tahu bahwa saya mencobanya 8-). Saya seorang mod di situs Unix dan Linux dan cmds ini terkenal berbeda b / w distro. OP menyebutkan RHEL dalam pertanyaan itu mengapa saya menjawabnya seperti itu, tetapi mereka tidak menandainya sebagai topi merah khusus, yang merupakan bagian dari kebingungan pada Q&A IMO ini.
slm
1

Pada mesin CentOS 7

  • jika pengguna tidak ada:
    useradd testuser --shell=/sbin/nologin

  • jika Anda ingin memodifikasi pengguna yang ada:
    usermod testuser --shell=/sbin/nologin

lauc.exon.nod
sumber
0

Mulailah dengan membuat kata sandi terenkripsi untuk pengguna dengan maksimum 8 karakter dengan melakukan:

openssl passwd -crypt new_password_less_than_eight_chars_long

Maka Anda melakukannya:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username
pengguna1047344
sumber
0

Di Debian, Anda bisa membuat pengguna sistem (tanpa direktori home) dan shell login:

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

Jika nologinprogram Anda ada /sbin/nologin, silakan ubah sesuai.

yoonghm
sumber