Linux là một hệ điều hành đa người dùng, vì vậy việc tạo nhiều tài khoản người dùng rất dễ dàng. Theo thời gian, thật dễ dàng để mất theo dõi những tài khoản nào được yêu cầu. Liệt kê các tài khoản người dùng giúp bạn quản lý chúng.
Tài khoản người dùng
Những tiến bộ trong công nghệ thường mang lại những vấn đề mới của riêng họ. Ngay sau khi máy tính có thể hỗ trợ nhiều người dùng, nhu cầu xếp hàng rào và gói gọn công việc của mỗi người khỏi những người khác đã trở nên rõ ràng. Điều này dẫn đến khái niệm tài khoản người dùng. Mỗi người dùng có một ID được đặt tên và một mật khẩu. Đây là những thông tin xác thực cho phép họ đăng nhập vào tài khoản của họ. Các tệp của họ được lưu giữ trong một khu vực riêng tư đối với mỗi người dùng.
Trên một hệ thống bận rộn, bạn rất dễ bị mất tài khoản nào bạn đã tạo và tài khoản nào không còn cần thiết nữa. Từ quan điểm bảo mật, việc giữ các tài khoản người dùng mà bạn không cần phải định cấu hình và có thể truy cập trên máy tính của mình là một việc làm không tốt. Bạn nên xóa những người dùng đó.
Ngay cả khi bạn không có người khác sử dụng máy tính của mình, bạn có thể đã tạo một số tài khoản chỉ để tìm hiểu cách thực hiện hoặc để tìm hiểu và thực hành các quy trình quản trị.
Bước đầu tiên là liệt kê các tài khoản người dùng được cấu hình trên máy tính của bạn. Điều đó cho phép bạn xem lại chúng và đưa ra phán quyết có thể bị xóa. Có một số phương pháp để liệt kê người dùng. Bất kể bạn đang sử dụng bản phân phối nào, những kỹ thuật này sẽ phù hợp với bạn mà không cần cài đặt bất kỳ ứng dụng hoặc tiện ích nào.
Liệt kê người dùng bằng lệnh mèo
Danh sách người dùng đã định cấu hình được duy trì, cùng với thông tin về từng người dùng, trong tệp “/ etc / passwd”. Đây là một tệp văn bản mà người dùng thông thường có thể liệt kê vào cửa sổ đầu cuối. Bạn không cần sử dụng sudo
để xem tệp “/ etc / passwd”.
Chúng ta có thể sử dụng cat
lệnh để gửi nội dung của tệp “/ etc / passwd” đến cửa sổ đầu cuối. Điều này sẽ liệt kê toàn bộ nội dung của tệp. Điều này có nghĩa là bạn cũng sẽ thấy các mục nhập cho tài khoản người dùng thuộc sở hữu của các quy trình và hệ thống, không phải bởi mọi người.
cat /etc/passwd
Có một dòng thông tin dày đặc được báo cáo cho mỗi tài khoản người dùng.
Thông tin cho tài khoản người dùng được gọi là “dave” chứa các phần thông tin này, với dấu hai chấm “:
” giữa họ.
- dave: Tên của tài khoản người dùng. Thường là tên của người sở hữu tài khoản.
- x: Tại một thời điểm, điều này giữ mật khẩu cho tài khoản. Ngày nay, mật khẩu được lưu trữ trong tệp “/ etc / shadow”. Dấu “x” có nghĩa là mật khẩu có trong tệp đó.
- 1000: ID người dùng cho tài khoản này. Tất cả các tài khoản người dùng đều có một ID số duy nhất. Tài khoản người dùng thông thường thường bắt đầu ở mức 1000, với mỗi tài khoản mới sẽ lấy ID miễn phí tiếp theo, chẳng hạn như 1001, 1002, v.v.
- 1000: ID nhóm của nhóm mặc định mà người dùng thuộc về. Trong trường hợp bình thường, nhóm mặc định có cùng giá trị với ID người dùng.
-
dave ,,,: Một tập hợp các thông tin bổ sung tùy chọn về người dùng. Trường này chứa dữ liệu có dấu phẩy “
,
” giữa họ. Họ có thể giữ những thứ như tên đầy đủ của người dùng, số văn phòng và số điện thoại của họ. Mục nhập cho tài khoản người dùng “mary” hiển thị tên đầy đủ của cô ấy là Mary Quinn. - / home / dave: Đường dẫn đến thư mục chính của người dùng.
- / bin / bash: Vỏ mặc định cho người dùng này.
Nếu chúng ta chuyển đầu ra từ lệnh này thông qua wc
tiện ích và sử dụng -l
(dòng) tùy chọn chúng ta có thể đếm các dòng trong tệp. Điều đó sẽ cung cấp cho chúng tôi số lượng tài khoản được định cấu hình trên máy tính này.
cat /etc/passwd | wc -l
Con số đó bao gồm các tài khoản hệ thống và người dùng được tạo bởi các ứng dụng. Có khoảng 400 người dùng thường xuyên được cấu hình trên máy tính này. Kết quả của bạn có thể sẽ ít hơn rất nhiều.
Với nhiều tài khoản như vậy, sẽ thuận tiện hơn khi sử dụng less
để xem tệp “/ etc / passwd”.
less /etc/passwd
Sử dụng less
cũng cho phép bạn tìm kiếm trong đầu ra, nếu bạn muốn tìm kiếm một tài khoản người dùng cụ thể.
Lệnh awk
Sử dụng awk
lệnh chúng tôi có thể hiển thị chỉ tên người dùng. Điều này có thể hữu ích khi bạn đang viết một tập lệnh cần thực hiện điều gì đó với nhiều tài khoản người dùng. Liệt kê tên tài khoản người dùng và chuyển hướng chúng thành một tệp văn bản có thể là một cách tiết kiệm thời gian tuyệt vời. Tất cả những gì bạn cần làm sau đó là sao chép và dán phần còn lại của lệnh vào mỗi dòng.
Chúng tôi sẽ yêu cầu awk sử dụng dấu hai chấm “:” làm dấu phân cách trường và in trường đầu tiên. Chúng tôi sẽ sử dụng tùy chọn -F (dấu phân cách trường).
awk -F: '{print $1}' /etc/passwd
Tên tài khoản người dùng được ghi vào cửa sổ đầu cuối mà không có bất kỳ thông tin tài khoản nào khác.
Lệnh cắt
Chúng ta có thể đạt được điều tương tự bằng cách sử dụng cut
yêu cầu. Chúng ta cần sử dụng -d
(dấu phân cách) và yêu cầu nó chỉ chọn trường đầu tiên, sử dụng -f
(các trường) tùy chọn.
cutr -d: -f1
Điều này liệt kê tất cả các tài khoản người dùng, bao gồm cả hệ thống và các tài khoản không phải của con người.
Lệnh compgen
Các compgen
lệnh có thể được sử dụng với -u
(người dùng) tùy chọn để liệt kê các tài khoản người dùng. Chúng tôi sẽ chuyển đầu ra thông qua column
lệnh liệt kê các tài khoản người dùng trong các cột, thay vì một danh sách dài với một tên người dùng trên mỗi dòng.
compgen -u | column
Một lần nữa, các tài khoản người dùng đầu tiên được liệt kê thuộc về quy trình, không phải con người.
UID MIN và UID MAX
Tài khoản người dùng được cấp một ID số, chúng ta đã thấy trước đó. Thông thường, tài khoản người dùng thông thường của con người bắt đầu từ 1000 và tài khoản hệ thống, không phải con người, bắt đầu từ 0. ID của tài khoản gốc là 0.
Nếu chúng tôi có thể xác minh ID người dùng thấp nhất và cao nhất có thể, chúng tôi có thể sử dụng thông tin đó để chọn tài khoản người dùng nằm giữa hai giá trị đó. Điều đó sẽ cho phép chúng tôi chỉ chọn các tài khoản người dùng thuộc về người thực.
Linux theo dõi hai giá trị này bằng cách sử dụng các tham số cấu hình được gọi là UID_MIN
và UID_MAX
. Chúng được lưu trong tệp “/etc/login.defs”. Chúng ta có thể dễ dàng thấy những giá trị này bằng cách sử dụng grep
.
Chúng tôi sẽ sử dụng -E
(regex mở rộng) tùy chọn. Chuỗi tìm kiếm của chúng tôi tìm kiếm các dòng bắt đầu bằng “UID_MIN” hoặc “UID_MAX” trong tệp “/etc/login.defs”. Dấu mũ “^
”Đại diện cho phần đầu của một dòng.
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
Phạm vi cho ID người dùng trên máy tính này là từ 1000 đến 60.000.
Lệnh getent
Các getent
lệnh đọc thông tin từ cơ sở dữ liệu hệ thống. Chúng ta có thể yêu cầu nó liệt kê các mục trong tệp “/ etc / passwd” bằng cách sử dụng “passwd” làm tham số.
getent passwd
Điều này cung cấp cho chúng tôi cùng một bản đọc mà chúng tôi có thể sử dụng cat
. Nhưng ở đâu getent
tỏa sáng là bằng cách chấp nhận các giá trị được gọi là “khóa”. Một khóa cho biết thông tin nào getent
báo cáo về. Nếu chúng ta muốn xem mục nhập cho một người dùng, chúng ta có thể chuyển tên tài khoản người dùng của họ trên dòng lệnh.
getent passwd Sarah
Lưu ý rằng tên tài khoản người dùng có phân biệt chữ hoa chữ thường.
getent passwd sarah
Chúng tôi cũng có thể vượt qua giới hạn trên và giới hạn dưới của ID tài khoản người dùng mà chúng tôi muốn xem. Để xem hoàn toàn tất cả các tài khoản người dùng thông thường, chúng tôi có thể sử dụng các giá trị từ UID_MIN
và UID_MAX
.
getent passwd {1000..60000}
Điều này cần một thời gian để chạy. Cuối cùng, bạn sẽ được đưa trở lại dấu nhắc lệnh.
Lý do cho thời gian thực hiện dài là getent
cố gắng tìm các kết quả phù hợp cho tất cả các giá trị tài khoản người dùng lên đến 60000.
Hãy xem ID tài khoản người dùng cao nhất là gì. Chúng tôi sẽ sử dụng cut
nhưng lần này chúng tôi sẽ yêu cầu trường thứ ba, trường ID người dùng. Chúng tôi sẽ chuyển đầu ra thông qua sort
và sử dụng -g
tùy chọn (sắp xếp số chung).
cut -d: -f3 /etc/passwd | sort -g
Giá trị ID cao nhất của tài khoản người dùng do con người sở hữu là 1401.
Id người dùng 65534 được gán cho khái niệm hệ thống là “không ai cả”.
getent passwd {65534..65534}
Vì vậy, chúng tôi biết rằng thay vì sử dụng UID_MAX
giá trị 60000, trên máy tính này, chúng tôi có thể sử dụng giá trị thực tế hơn như 1500. Điều đó sẽ tăng tốc mọi thứ một cách độc đáo. Chúng tôi cũng sẽ chuyển đầu ra thông qua cut
để chỉ trích xuất tên của các tài khoản người dùng.
mật khẩu getent {1000..1500} | cut -d: -f1
Những người dùng được liệt kê và chúng tôi sẽ ngay lập tức trở lại dấu nhắc lệnh.
Thay vì đưa đầu ra qua cut
hãy chuyển đầu ra thông qua wc
và đếm các dòng một lần nữa. Điều đó sẽ cung cấp cho chúng tôi số lượng tài khoản người dùng “thực”.
getent passwd {1000..1500} | wc -l
Bây giờ chúng ta có thể thấy rằng trên máy tính này, chắc chắn có 400 tài khoản người dùng được định cấu hình, do con người sở hữu.
Sức mạnh và sự đơn giản
Một trong những kỹ thuật này chắc chắn sẽ phù hợp với nhu cầu của bạn khi bạn cần xem xét các tài khoản người dùng trên máy tính Linux. Các lệnh này phải có trên tất cả các bản phân phối và không có lệnh nào trong số chúng yêu cầu sudo
quyền truy cập, vì vậy tất cả chúng đều có sẵn cho mọi người dùng.