Perintah untuk mendaftar semua pengguna? Dan bagaimana cara menambah, menghapus, memodifikasi pengguna?

856

Saya perlu perintah untuk mendaftar semua pengguna di terminal. Dan cara menambah, menghapus, memodifikasi pengguna dari terminal.

Itu bisa membantu dalam administrasi akun Anda dengan mudah melalui terminal.

nux
sumber
3
sed jawabansed 's/:.*//' /etc/passwd
Avinash Raj
2
daftar pengguna:awk -F: '{ print $1 }' /etc/passwd
saviour123

Jawaban:

1143

Daftar

Untuk membuat daftar semua pengguna lokal yang dapat Anda gunakan:

cut -d: -f1 /etc/passwd

Untuk daftar semua pengguna yang dapat diautentikasi (dalam beberapa cara), termasuk non-lokal, lihat balasan ini .

Beberapa perintah manajemen pengguna yang lebih berguna (juga terbatas untuk pengguna lokal ):

Menambahkan

Untuk menambahkan pengguna baru, Anda dapat menggunakan:

sudo adduser new_username

atau:

sudo useradd new_username

Lihat juga: Apa perbedaan antara adduser dan useradd?

Untuk menghapus / menghapus

Untuk menghapus / menghapus pengguna, pertama-tama Anda dapat menggunakan:

sudo userdel username

Maka Anda mungkin ingin menghapus direktori home untuk akun pengguna yang dihapus:

sudo rm -r / home / nama pengguna

Silakan gunakan dengan hati-hati perintah di atas!

Untuk mengubah

Untuk mengubah nama pengguna pengguna:

usermod -l new_username old_username

Untuk mengubah kata sandi bagi pengguna:

sudo passwd username

Untuk mengubah shell untuk pengguna:

sudo chsh username

Untuk mengubah detail pengguna (misalnya nama asli):

sudo chfn username

Untuk menambahkan pengguna ke sudogrup:

adduser username sudo

atau

usermod -aG sudo username

Dan, tentu saja, lihat juga: man adduser, man useradd, man userdel... dan seterusnya.

Radu Rădeanu
sumber
12
Radu lupa menyebutkan sudo chfn <username>yang mengubah detail pengguna (misalnya nama asli). Saya mencoba menambahkan ini sebagai komentar, tetapi saya mendapat kesalahan dengan memberi tahu saya bahwa saya harus memiliki +50 reputasi untuk melakukannya.
Mikaela
2
Saya pikir harus digarisbawahi bahwa jawaban yang benar untuk pertanyaan yang ditautkan adalah askubuntu.com/a/381646/16395 --- jika tidak, Anda harus memperhitungkan kebijakan Ubuntu GID / UID secara manual. Jawaban yang diterima tidak begitu jelas.
Rmano
sudo userdel DOMAIN \\ johndoe memberi saya kesalahan: "userdel: tidak dapat menghapus entri 'DOMAIN \ johndoe' dari / etc / passwd - Saya mencari di / etc / passwd dan mereka bahkan tidak ada di sana, kemungkinan karena itu adalah" domain "akun?
00fruX
1
@ 00fruX Ya ... Jika Anda menggunakan basis data pengguna terpusat, Anda harus menghadapinya secara langsung.
Oli
87

Cukup tekan Ctrl+ Alt+ Tdi keyboard Anda untuk membuka Terminal. Saat terbuka, jalankan perintah di bawah ini:

cat /etc/passwd

ATAU

less /etc/passwd
more /etc/passwd

Anda juga dapat menggunakan awk: awk

awk -F':' '{ print $1}' /etc/passwd
Mitch
sumber
bagaimana cara menambahkan pengguna dengan perintah?
nux
Anda dapat menggunakan perintah useradd .
Mitch
@ Neux Sedikit terlambat ke pesta, tetapi dari penggunaan baris perintah adduser, useraddharus dibatasi untuk skrip di mana penulis benar-benar tahu apa yang dia lakukan.
flindeberg
64

Cara termudah untuk mendapatkan informasi semacam ini adalah getent- lihat manual untuk getentperintahnyaIkon halaman manual . Sementara perintah itu memberikan output yang sama seperti cat /etc/passwdberguna untuk diingat karena itu akan memberi Anda daftar beberapa elemen di OS.

Untuk mendapatkan daftar semua pengguna yang Anda ketikkan (saat pengguna terdaftar /etc/passwd)

getent passwd

Untuk menambahkan pengguna newuser ke sistem Anda akan ketik

sudo adduser newuser

untuk membuat pengguna yang menerapkan semua pengaturan default.

Bonus: Untuk menambahkan pengguna (misalnya anyuser ) ke grup (misalnya cdrom ) ketik

sudo adduser anyuser cdrom

Anda menghapus pengguna (misalnya usang ) dengan

sudo deluser obsolete

Jika Anda ingin menghapus direktori home / mail-nya juga Anda ketikkan

sudo deluser --remove-home obsolete

Dan

sudo deluser --remove-all-files obsolete

akan menghapus pengguna dan semua file yang dimiliki oleh pengguna ini di seluruh sistem.

Guntbert
sumber
8
Penting untuk diingat bahwa getent tidak hanya mencetak output dari pengguna di / etc / passwd tetapi semua pengguna di semua backend userdb yang dikonfigurasikan pada sistem yang diberikan, apakah itu / etc / passwd atau LDAP, dll.
Marcin Kaminski
@MarcinKaminski benar, ia juga mencetak pengaturan pengguna dalam sistem SSO yang memiliki akses ke server. jawaban ini adalah yang terbaik, dengan getent passwdmenjadi perintah yang tepat
ulkas
@MarcinKaminski dari semua backend
userdb
43

Anda juga dapat menggunakan compgen GNU bash built-in :

compgen -u

Akan mencantumkan semua pengguna.

Ravexina
sumber
2
Terpendek dan bekerja! Seharusnya yang diterima menurut saya.
Nam G VU
27

Ini akan membuat, dalam sebagian besar situasi normal , semua pengguna normal (non-sistem, tidak aneh, dll):

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

Ini bekerja dengan:

  • membaca dari /etc/passwd
  • gunakan :sebagai pembatas
  • jika bidang ketiga (nomor ID Pengguna) lebih besar dari 1000 dan bukan 65534, bidang pertama (nama pengguna pengguna) dicetak.

Ini karena pada banyak sistem linux, nama pengguna di atas 1000 dicadangkan untuk pengguna yang tidak mampu (bisa dikatakan normal). Beberapa info tentang ini di sini :

ID pengguna (UID) adalah bilangan bulat positif unik yang ditetapkan oleh sistem operasi mirip-Unix untuk setiap pengguna. Setiap pengguna diidentifikasi ke sistem dengan UID-nya, dan nama pengguna umumnya hanya digunakan sebagai antarmuka untuk manusia.

UID disimpan, bersama dengan nama pengguna terkait dan informasi khusus pengguna lainnya, di file / etc / passwd ...

Bidang ketiga berisi UID, dan bidang keempat berisi ID grup (GID), yang secara default sama dengan UID untuk semua pengguna biasa.

Di kernel Linux 2.4 dan di atasnya, UID adalah bilangan bulat 32-bit yang tidak ditandatangani yang dapat mewakili nilai dari nol hingga 4.294.967.296. Namun, disarankan untuk menggunakan nilai hanya hingga 65.534 untuk menjaga kompatibilitas dengan sistem yang menggunakan kernel atau sistem file yang lebih lama yang hanya dapat menampung UID 16-bit.

UID 0 memiliki peran khusus: selalu merupakan akun root (yaitu, pengguna administratif mahakuasa). Meskipun nama pengguna dapat diubah pada akun ini dan akun tambahan dapat dibuat dengan UID yang sama, tidak ada tindakan yang bijaksana dari sudut pandang keamanan.

UID 65534 biasanya dicadangkan untuk siapa pun, pengguna yang tidak memiliki hak sistem, sebagai lawan dari pengguna biasa (yaitu, yang tidak memiliki hak istimewa). UID ini sering digunakan untuk individu yang mengakses sistem dari jarak jauh melalui FTP (protokol transfer file) atau HTTP (protokol transfer hiperteks).

UID 1 hingga 99 secara tradisional disediakan untuk pengguna sistem khusus (kadang-kadang disebut pengguna semu), seperti roda, daemon, lp, operator, berita, surat, dll. Pengguna ini adalah administrator yang tidak memerlukan kekuatan root total, tetapi yang melakukan beberapa tugas administratif dan karenanya membutuhkan lebih banyak hak istimewa daripada yang diberikan kepada pengguna biasa.

Beberapa distribusi Linux (yaitu, versi) memulai UID untuk pengguna non-privilege di 100. Lainnya, seperti Red Hat, mulai mereka di 500, dan yang lain, seperti Debian, mulai mereka di 1000. Karena perbedaan antara distribusi, manual intervensi dapat diperlukan jika beberapa distribusi digunakan dalam jaringan dalam suatu organisasi.

Juga, akan lebih mudah untuk memesan satu blok UID untuk pengguna lokal, seperti 1000 hingga 9999, dan blok lain untuk pengguna jarak jauh (yaitu, pengguna di tempat lain di jaringan), seperti 10.000 hingga 65534. Yang penting adalah memutuskan pada skema dan patuhi itu.

Di antara kelebihan praktik pencadangan blok angka untuk tipe pengguna tertentu ini adalah membuatnya lebih mudah untuk mencari melalui log sistem untuk aktivitas pengguna yang mencurigakan.

Bertentangan dengan kepercayaan umum, tidak perlu setiap entri dalam bidang UID menjadi unik. Namun, UID yang tidak unik dapat menyebabkan masalah keamanan, dan karenanya UID harus tetap unik di seluruh organisasi. Demikian juga, daur ulang UID dari mantan pengguna harus dihindari selama mungkin.

Wilf
sumber
1
Hampir merupakan jawaban yang sempurna, tetapi IMO lebih bersih untuk digunakan getentdaripada membaca langsung dari /etc/passwddan mencari UID_MIN/ UID_MAXbukannya mengkodekan nilai:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
Max Truxa
17

daftar semua pengguna yang dapat masuk (tidak ada pengguna sistem seperti: bin, deamon, mail, sys, dll.)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

tambahkan pengguna baru

sudo adduser new_username

atau

sudo useradd new_username

hapus / hapus nama pengguna

sudo userdel username

Jika Anda ingin menghapus direktori home (default direktori / home / username)

sudo deluser --remove-home username

atau

sudo rm -r /path/to/user_home_dir

Jika Anda ingin menghapus semua file dari sistem dari pengguna ini (tidak hanya direktori home)

sudo deluser --remove-all-files
Penghuni Donovan
sumber
1
Mungkin Anda harus menjelaskan perbedaan antara adduserdan useradd. Juga tambahkan sudo-prefix ke perintah pertama. File shadow kata sandi hanya dapat dibaca sebagai root.
s3lph
1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowmenunjukkan kepada saya semua pengguna termasuk bin, daemon, dll. dan melemparkan peringatan ini: escape sequence \$' treated as plain $ 'Saya menemukan posting ini stackoverflow.com/a/25867768/847954 dan menambahkan satu backslash lagi dan bekerja dengan baik:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff musk
8

Ok di sini ada trik yang akan membantu Anda menyortir ini. Terminal memiliki penyelesaian otomatis jika Anda mengetik pengguna dan menekan tombol Tab dua kali akan mencantumkan semua perintah yang ada dengan pengguna sebagai 4 karakter pertama.

user (tab tab)

memberi saya pilihan yang memungkinkan useradd userdel usermod pengguna pengguna-admin
jika Anda ingin tahu lebih banyak tentang perintah google atau tipe man man useradd memberikan useradd - buat pengguna baru atau perbarui informasi pengguna baru default ... ...

untuk daftar pengguna Anda harus pergi dengan apa yang dikatakan Mitch.

Harapan yang membantu saya suka penyelesaian tab di bash menyelamatkan saya dari mengingat sesuatu.

pengguna239243
sumber
6

Untuk mengetahui pengguna yang memiliki direktori home di folder / home pada mesin, jalankan perintah berikut

cd /home
ls 

Anda kemudian dapat melihat pengguna yang memiliki otorisasi untuk masuk ke server. Jika kami ingin melihat file pengguna mana pun, Anda harus menjadi pengguna root.

anvesh
sumber
8
Ini hanya menunjukkan konten /home. Sementara Ubuntu menempatkan direktori pengguna di sana secara default, itu tidak wajib.
David Foerster
ls /homemungkin juga berisi direktori pengguna dari pengguna yang dihapus.
Suraj