Команда для переліку всіх користувачів? І як додавати, видаляти, змінювати користувачів?


855

Мені потрібна команда, щоб перелічити всіх користувачів у терміналі. І як додавати, видаляти, змінювати користувачів з терміналу.

Це може допомогти легко керувати своїми рахунками терміналом.


3
sed відповідьsed 's/:.*//' /etc/passwd
Avinash Raj

2
список користувачів:awk -F: '{ print $1 }' /etc/passwd
saviour123

Відповіді:


1142

До списку

Щоб перелічити всіх місцевих користувачів, якими ви можете скористатися:

cut -d: -f1 /etc/passwd

Щоб перерахувати всіх користувачів, здатних до автентичності (певним чином), включаючи немісцеві, дивіться цю відповідь .

Ще кілька корисних команд управління користувачем (також обмежено для місцевих користувачів):

Додати

Щоб додати нового користувача, ви можете використовувати:

sudo adduser new_username

або:

sudo useradd new_username

Дивіться також: Яка різниця між прихильником і useradd?

Щоб видалити / видалити

Щоб видалити / видалити користувача, спочатку можна скористатися:

sudo userdel username

Потім ви можете видалити домашній каталог для видаленого облікового запису користувача:

sudo rm -r / home / ім'я користувача

Будь ласка, використовуйте обережно вищевказану команду!

Для модифікації

Щоб змінити ім’я користувача користувача:

usermod -l new_username old_username

Щоб змінити пароль для користувача:

sudo passwd username

Щоб змінити оболонку для користувача:

sudo chsh username

Щоб змінити реквізити користувача (наприклад, справжнє ім’я):

sudo chfn username

Щоб додати користувача до sudoгрупи:

adduser username sudo

або

usermod -aG sudo username

І, звичайно ж , дивись також: man adduser, man useradd, man userdel... і так далі.


12
Раду забув згадати, sudo chfn <username>що змінює реквізити користувача (наприклад, справжнє ім’я). Я спробував додати це як коментар, але у мене з’явилася помилка, сказавши, що я повинен мати +50 репутацію для цього.
Мікаела

2
Я думаю, що слід підкреслити, що правильна відповідь на пов’язане питання - askubuntu.com/a/381646/16395 --- в іншому випадку ви повинні врахувати політику Gbu / UID Ubuntu вручну. Прийнята відповідь не така однозначна.
Рмано

sudo userdel DOMAIN \\ johndoe видає мені помилку: "userdel: не може видалити запис" DOMAIN \ johndoe "з / etc / passwd - я заглянув у / etc / passwd, і вони навіть не є там, швидше за все, це" домен "акаунт?
00fruX

1
@ 00fruX Так ... Якщо ви використовуєте централізовану базу даних користувачів, вам доведеться безпосередньо з цим боротися.
Олі


87

Просто натисніть клавішу Ctrl+ Alt+ Tна клавіатурі, щоб відкрити термінал. Коли він відкриється, запустіть команди (и) нижче:

cat /etc/passwd

АБО

less /etc/passwd
more /etc/passwd

Ви також можете використовувати awk: awk

awk -F':' '{ print $1}' /etc/passwd

як додати користувачів командою?
nux

Можна використовувати команду useradd .
Мітч

@nux Трохи запізнюючись на партію, але adduserзамість використання командного рядка useraddслід обмежитися сценаріями, де автор дійсно знає, що робить.
flindeberg

64

Найпростіший спосіб отримати цю інформацію getent- перегляньте команду сторінки для getentкомандиПіктограма manpage . Хоча ця команда дає той самий вихід, cat /etc/passwdякий корисно запам’ятати, оскільки він надасть вам списки кількох елементів в ОС.

Щоб отримати список усіх введених користувачів (як перелічені користувачі /etc/passwd)

getent passwd

Для додавання користувача NEWUSER до системи ви друкуєте

sudo adduser newuser

створити користувача, у якому застосовано всі параметри за замовчуванням.

Бонус: додати будь-якого користувача (наприклад, anyuser ) до групи (наприклад, cdrom )

sudo adduser anyuser cdrom

Ви видаляєте користувача (наприклад, застарілого ) за допомогою

sudo deluser obsolete

Якщо ви хочете видалити його домашній каталог / пошту, ви також введете

sudo deluser --remove-home obsolete

І

sudo deluser --remove-all-files obsolete

видалить користувача та всі файли, що належать цьому користувачеві, у всій системі.


8
Корисно пам’ятати, що getent не просто друкує вихід користувачів у / etc / passwd, але всіх користувачів у всіх налаштованих файлах Userdb у певній системі, будь то / etc / passwd або LDAP тощо.
Marcin Kaminski

@MarcinKaminski правий, він також друкує налаштування користувачів у системах SSO, які мають доступ до сервера. ця відповідь найкраща, з getent passwdправильною командою
ulkas

@MarcinKaminski від всіх перелічуваних userdb движків
jrw32982


27

У більшості звичайних ситуацій це має отримати всіх звичайних (несистемних, не дивних тощо) користувачів:

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

Це працює:

  • читання в з /etc/passwd
  • використовуючи :як роздільник
  • якщо третє поле (номер ідентифікатора користувача) більше 1000, а не 65534, друкується перше поле (ім’я користувача).

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

Ідентифікатор користувача (UID) - це унікальне додатне ціле число, присвоєне Unix-подібній операційній системі кожному користувачеві. Кожен користувач ідентифікує систему за своїм UID, а імена користувачів, як правило, використовуються лише як інтерфейс для людей.

UID-файли зберігаються разом із відповідними іменами користувачів та іншою специфічною для користувача інформацією у файлі / etc / passwd ...

Третє поле містить UID, а четверте поле містить ідентифікатор групи (GID), який за замовчуванням дорівнює UID для всіх звичайних користувачів.

У ядрах Linux 2.4 і вище UID є непідписаними 32-бітовими цілими числами, які можуть представляти значення від нуля до 4,294,967,296. Однак доцільно використовувати значення лише до 65,534, щоб підтримувати сумісність із системами, що використовують старіші ядра або файлові системи, здатні вмістити лише 16-бітні UID.

UID 0 має особливу роль: це завжди кореневий обліковий запис (тобто всемогутній адміністративний користувач). Хоча ім’я користувача можна змінити в цьому обліковому записі та створити додаткові облікові записи з тим самим UID, жодна дія не є розумною з точки зору безпеки.

UID 65534 зазвичай зарезервований для нікого, користувача, який не має системних привілеїв, на відміну від звичайного (тобто непривілейованого) користувача. Цей UID часто використовується для осіб, які отримують доступ до системи віддалено через FTP (протокол передачі файлів) або HTTP (протокол передачі гіпертексту).

UID з 1 по 99 традиційно зарезервовані для спеціальних користувачів системи (іноді їх називають псевдокористувачами), таких як колесо, демон, lp, оператор, новини, пошта тощо. Ці користувачі - адміністратори, які не потребують загальних повноважень root, але які виконують деякі адміністративні завдання і тому потребують більше привілеїв, ніж ті, які надаються звичайним користувачам.

Деякі дистрибутиви Linux (тобто версії) починають UID для непривілейованих користувачів на 100. Інші, наприклад Red Hat, починають їх з 500, а інші, такі як Debian, починають їх з 1000. Через різницю між дистрибутивами посібник втручання може бути необхідним, якщо в мережі використовується декілька розповсюджень.

Крім того, може бути зручно резервувати блок UID-кодів для місцевих користувачів, таких як 1000 - 9999, та інший блок для віддалених користувачів (тобто користувачів в інших мережах), таких як 10000 - 65534. Важливим є рішення за схемою і дотримуватися її.

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

Всупереч поширеній думці, не обов'язково кожен запис у полі UID бути унікальним. Однак не унікальні UID можуть спричинити проблеми із безпекою, і, таким чином, UID повинні залишатися унікальними для всієї організації. Так само слід уникати переробки UID від колишніх користувачів якомога довше.


1
Майже ідеальна відповідь, але ІМО чистіше використовувати getentзамість читання прямо з /etc/passwdта пошуку UID_MIN/ UID_MAXзамість жорсткого кодування значень: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}"
Макс Трукса

17

список усіх користувачів, які можуть ввійти (таких системних користувачів, як: bin, deamon, mail, sys тощо)

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

додати нового користувача

sudo adduser new_username

або

sudo useradd new_username

видалити / видалити ім'я користувача

sudo userdel username

Якщо ви хочете видалити домашній каталог (за замовчуванням каталог / home / username)

sudo deluser --remove-home username

або

sudo rm -r /path/to/user_home_dir

Якщо ви хочете видалити всі файли з системи від цього користувача (не тільки домашній каталог)

sudo deluser --remove-all-files

1
Можливо, вам слід пояснити різницю між adduserі useradd. Також додайте sudo-префікс до першої команди. Файл тіньового пароля можна читати лише як root.
s3lph

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowпоказав мені всіх користувачів, включаючи бін, демон і т. д. і кинув це попередження: послідовність втечі \$' treated as plain $ 'Я знайшов це повідомлення stackoverflow.com/a/25867768/847954 і додав ще одну зворотну косу рису, і вона спрацювала нормально:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
Джефф Муск

8

Ось ось хитрість, яка допоможе вам розібратися в цьому. Термінал має автоматичне завершення, якщо ви введете користувача та натисніть клавішу Tab двічі, він перелічить усі команди, які існують у користувача, як перші 4 символи.

user (tab tab)

дає мені як можливі варіанти useradd userdel usermod користувачів users-admin,
якщо ви хочете дізнатися більше про команду google it або тип man man useradd дає useradd - створити нового користувача або оновити нову інформацію про користувача за замовчуванням ... ...

Щоб перерахувати користувачів, вам слід піти з тим, що сказав Мітч.

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


6

Щоб дізнатися користувачів, які мають домашні каталоги в папці / home на папці, виконайте наступні команди

cd /home
ls 

Потім можна побачити користувачів, які мають авторизацію входу на сервер. Якщо ми хочемо вивчити файли будь-яких користувачів, ви повинні бути користувачем root.


8
Це показує лише зміст /home. Хоча Ubuntu за замовчуванням розміщує там каталоги користувачів, це ні в якому разі не є обов'язковим.
Девід Фоерстер

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