Câu hỏi Một lệnh để liệt kê tất cả người dùng? Và cách thêm, xóa, sửa đổi người dùng?


Tôi cần một lệnh để liệt kê tất cả người dùng trong terminal. Và cách thêm, xóa, sửa đổi người dùng từ thiết bị đầu cuối.

Điều đó có thể giúp quản trị tài khoản của bạn dễ dàng bằng thiết bị đầu cuối.


702
2018-01-24 20:23


gốc


câu trả lời sed 's/:.*//' /etc/passwd - Avinash Raj
liệt kê người dùng: awk -F: '{ print $1 }' /etc/passwd - saviour123


Các câu trả lời:


Để liệt kê tất cả địa phương người dùng bạn có thể sử dụng:

cut -d: -f1 /etc/passwd

Để liệt kê tất cả người dùng có khả năng xác thực (theo một cách nào đó), bao gồm cả không phải địa phương, hãy xem trả lời này: https://askubuntu.com/a/414561/571941

Một số lệnh quản lý người dùng hữu ích hơn (cũng bị giới hạn ở địa phương người dùng):

Để thêm người dùng mới, bạn có thể sử dụng:

sudo adduser tên đăng nhập mới

hoặc là:

sudo useradd tên đăng nhập mới

Xem thêm: Sự khác nhau giữa adduser và useradd là gì?

Để xóa / xóa người dùng, trước tiên bạn có thể sử dụng:

sudo userdel tên người dùng

Sau đó, bạn có thể muốn xóa thư mục chính cho tài khoản người dùng đã bị xóa:

sudo rm -r / home /tên người dùng

(Vui lòng sử dụng cẩn thận lệnh trên!)

Để sửa đổi tên người dùng của người dùng:

usermod -l tên đăng nhập mới Tên đăng nhập cũ

Để thay đổi mật khẩu cho người dùng:

sudo passwd tên người dùng

Để thay đổi shell cho người dùng:

sudo chsh tên người dùng

Để thay đổi chi tiết cho người dùng (ví dụ tên thật):

sudo chfn tên người dùng

Và, tất nhiên, xem thêm: man adduser, man useradd, man userdel... và vân vân.


940
2018-01-24 19:28



Radu quên đề cập đến sudo chfn <username> thay đổi chi tiết người dùng (ví dụ như tên thật). Tôi đã cố gắng để thêm này như là một bình luận, nhưng tôi có lỗi nói với tôi rằng tôi phải có 50 danh tiếng để làm như vậy. - Mikaela
Tôi nghĩ rằng cần nhấn mạnh rằng câu trả lời đúng cho câu hỏi được liên kết là askubuntu.com/a/381646/16395 --- nếu không bạn phải tính đến các chính sách Ubuntu GID / UID bằng tay. Câu trả lời được chấp nhận không rõ ràng. - Rmano
sudo userdel DOMAIN \\ johndoe cho tôi lỗi: "userdel: không thể xóa mục nhập 'DOMAIN \ johndoe' khỏi / etc / passwd - tôi đã xem / etc / passwd và chúng không ở trong đó, có thể vì đó là" miền "tài khoản? - 00fruX
@ 00fruX Yeah ... Nếu bạn đang sử dụng một cơ sở dữ liệu người dùng tập trung, bạn sẽ cần phải đối phó trực tiếp với nó. - Oli♦
+1 cho Sự khác nhau giữa adduser và useradd là gì? - sonlexqt


Chỉ cần nhấn Ctrl+Alt+T trên bàn phím để mở Terminal. Khi nó mở ra, hãy chạy (các) lệnh dưới đây:

cat /etc/passwd

HOẶC LÀ

less /etc/passwd
more /etc/passwd

Bạn cũng có thể sử dụng awk:lúng túng

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

73
2018-01-24 19:38



làm thế nào để thêm người dùng bằng lệnh? - nux
Bạn có thể dùng useradd chỉ huy. - Mitch♦
@nux Một chút muộn cho bữa tiệc, nhưng từ việc sử dụng dòng lệnh adduser thay thế, useradd nên được giới hạn trong các kịch bản mà tác giả thực sự thực sự biết mình đang làm gì. - flindeberg


Cách dễ nhất để có được loại thông tin này là getent - xem manpage cho getent chỉ huy Manpage icon. Trong khi lệnh đó cho kết quả tương tự như cat /etc/passwd nó rất hữu ích để nhớ vì nó sẽ cung cấp cho bạn danh sách của một số yếu tố trong hệ điều hành.

Để có danh sách tất cả người dùng bạn nhập (khi người dùng được liệt kê trong /etc/passwd)

getent passwd

Để thêm người dùng người dùng mới với hệ thống bạn sẽ nhập

sudo adduser newuser

để tạo người dùng có tất cả các cài đặt mặc định được áp dụng.

Tiền thưởng: Để thêm bất kỳ người dùng nào (ví dụ: anyuser) cho một nhóm (ví dụ) Ổ đĩa CD) kiểu

sudo adduser anyuser cdrom

Bạn xóa một người dùng (ví dụ lỗi thời) với

sudo deluser obsolete

Nếu bạn muốn xóa thư mục / thư mục chính của mình, bạn nhập

sudo deluser --remove-home obsolete

sudo deluser --remove-all-files obsolete

sẽ xóa người dùng  tất cả các tệp do người dùng này sở hữu trên toàn bộ hệ thống.


52



Thật hữu ích khi nhớ rằng getent không chỉ in đầu ra của người dùng trong / etc / passwd mà là tất cả người dùng trong tất cả các backend backend được cấu hình trên một hệ thống đã cho, cho dù đó là / etc / passwd hoặc LDAP, v.v. - Marcin Kaminski


Điều này sẽ nhận được, trong hầu hết các tình huống bình thường, tất cả người dùng bình thường (không phải hệ thống, không lạ, v.v.):

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

Điều này hoạt động bằng cách:

  • đọc từ /etc/passwd
  • sử dụng : như một dấu phân tách
  • nếu trường thứ ba (số ID người dùng) lớn hơn 1000 và không 65534, trường đầu tiên (tên người dùng của người dùng) được in.

Điều này là do trên nhiều hệ thống Linux, tên người dùng trên 1000 được dành riêng cho người dùng không có đặc quyền (bạn có thể nói bình thường). Một số thông tin về điều này đây:

ID người dùng (UID) là một số nguyên dương duy nhất được gán bởi một kiểu Unix   hệ điều hành cho mỗi người dùng. Mỗi người dùng được xác định vào hệ thống   bởi UID của nó và tên người dùng thường chỉ được sử dụng làm giao diện cho   con người.

UID được lưu trữ cùng với tên người dùng tương ứng và các tên người dùng khác   thông tin người dùng cụ thể, trong tệp / etc / passwd ...

Trường thứ ba chứa UID và trường thứ tư chứa   ID nhóm (GID), theo mặc định bằng UID cho tất cả thông thường   người dùng.

Trong hạt nhân Linux 2.4 trở lên, UID là số nguyên 32 bit không dấu   có thể biểu thị các giá trị từ 0 đến 4,294,967,296. Tuy nhiên nó là   khuyến khích chỉ sử dụng giá trị lên đến 65.534 để duy trì   tương thích với các hệ thống sử dụng kernel cũ hoặc hệ thống tập tin có thể   chỉ chứa UID 16 bit.

UID của 0 có vai trò đặc biệt: nó luôn là tài khoản gốc (tức là,   người dùng quản trị toàn năng). Mặc dù tên người dùng có thể là   đã thay đổi trên tài khoản này và các tài khoản bổ sung có thể được tạo bằng   cùng một UID, không phải hành động nào là khôn ngoan từ quan điểm bảo mật.

UID 65534 thường được dành riêng cho không ai, người dùng không có hệ thống   đặc quyền, trái ngược với người dùng bình thường (tức là, không có đặc quyền).   UID này thường được sử dụng cho các cá nhân truy cập vào hệ thống từ xa   qua FTP (giao thức truyền tệp) hoặc HTTP (truyền siêu văn bản)   giao thức).

UID từ 1 đến 99 được dành riêng cho người dùng hệ thống đặc biệt   (đôi khi được gọi là người dùng giả), chẳng hạn như bánh xe, daemon, lp, toán tử,   tin tức, thư, v.v. Những người dùng này là những quản trị viên không cần tổng số   quyền hạn gốc, nhưng thực hiện một số nhiệm vụ quản trị và do đó cần   nhiều đặc quyền hơn những đặc quyền được cung cấp cho người dùng thông thường.

Một số bản phân phối Linux (tức là, phiên bản) bắt đầu UID cho   người dùng không có đặc quyền tại 100. Những người khác, chẳng hạn như Red Hat, bắt đầu tại   500, và vẫn còn những người khác, Debian như vậy, bắt đầu chúng ở 1000. Vì   sự khác biệt giữa các bản phân phối, can thiệp thủ công có thể cần thiết   nếu nhiều bản phân phối được sử dụng trong một mạng trong một tổ chức.

Ngoài ra, có thể thuận tiện để đặt trước một khối UID cho người dùng cục bộ,   chẳng hạn như 1000 đến 9999 và một khối khác cho người dùng từ xa (tức là   người dùng ở nơi khác trên mạng), chẳng hạn như 10000 đến 65534. Điều quan trọng   là quyết định một kế hoạch và tuân thủ nó.

Trong số những ưu điểm của thực tiễn này là đặt các khối số   đối với một số loại người dùng cụ thể là nó giúp thuận tiện hơn cho   tìm kiếm thông qua nhật ký hệ thống cho hoạt động của người dùng đáng ngờ.

Trái ngược với niềm tin phổ biến, không cần thiết mỗi mục nhập trong   Trường UID là duy nhất. Tuy nhiên, UID không độc đáo có thể gây ra bảo mật   vấn đề, và do đó UID nên được giữ duy nhất trên toàn bộ   cơ quan. Tương tự như vậy, việc tái chế UID từ những người dùng cũ nên   tránh càng lâu càng tốt.


21





Bạn có thể dùng compgen được tích hợp sẵn:

compgen -u

Sẽ liệt kê tất cả người dùng.


21





danh sách của tất cả người dùng có thể đăng nhập (không có người dùng hệ thống nào thích: bin, deamon, mail, sys, v.v.)

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

thêm vào người dùng mới

sudo adduser new_username

hoặc là

sudo useradd new_username

xóa bỏ/ xóa tên người dùng

sudo userdel username

Nếu bạn muốn xóa thư mục chính (mặc định thư mục / home / username)

sudo deluser --remove-home username

hoặc là

sudo rm -r /path/to/user_home_dir

Nếu bạn muốn xóa tất cả các tệp khỏi hệ thống từ người dùng này (không chỉ là mục đích gia đình)

sudo deluser --remove-all-files

15



Có lẽ bạn nên giải thích sự khác biệt giữa adduser và useradd. An cũng thêm sudo-prefix đến lệnh đầu tiên. Tệp bóng tối mật khẩu chỉ có thể được đọc dưới dạng gốc. - s3lph
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow cho tôi thấy tất cả người dùng bao gồm bin, daemon, v.v. và ném cảnh báo này: chuỗi thoát \$' treated as plain $ 'Tôi tìm thấy bài đăng này stackoverflow.com/a/25867768/847954  và thêm một dấu gạch chéo ngược nữa và nó hoạt động tốt: awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow - jeff musk


Ok đây là một mẹo giúp bạn sắp xếp điều này. Các thiết bị đầu cuối có tự động hoàn thành nếu bạn gõ người dùng và nhấn phím Tab hai lần nó sẽ liệt kê tất cả các lệnh tồn tại với người dùng như 4 ký tự đầu tiên.

user (tab tab)

mang lại cho tôi những tùy chọn khả thi     useradd userdel usermod người dùng người dùng-quản trị
nếu bạn muốn biết thêm về lệnh google hoặc gõ man     man useradd cho     useradd - tạo người dùng mới hoặc cập nhật thông tin người dùng mới mặc định     ...     ...

để liệt kê người dùng bạn nên đi với những gì Mitch nói.

Hy vọng rằng tôi sẽ giúp hoàn thành tab trong bash tiết kiệm cho tôi từ những điều ghi nhớ.


7