Mật khẩu được lưu trữ ở đâu và như thế nào trên Linux?

Where How Are Passwords Stored Linux



Tên người dùng với mật khẩu tương ứng cho một tài khoản cụ thể là yêu cầu chính để người dùng có thể truy cập hệ thống Linux. Tất cả mật khẩu tài khoản của người dùng được lưu trong tệp hoặc cơ sở dữ liệu để người dùng có thể được xác minh trong quá trình đăng nhập vào hệ thống. Mọi người dùng không có đủ kỹ năng và kiến ​​thức chuyên môn để định vị tệp này trên hệ thống của họ. Tuy nhiên, nếu bạn có quyền truy cập vào cơ sở dữ liệu hoặc tệp lưu giữ tất cả mật khẩu của người dùng đăng nhập thì bạn có thể dễ dàng truy cập vào hệ thống Linux. Khi người dùng nhập tên người dùng và mật khẩu trên Linux để đăng nhập, nó sẽ kiểm tra mật khẩu đã nhập so với mục nhập trong các tệp khác nhau của thư mục ‘/ etc’.

Các tệp / etc / passwd lưu giữ tất cả các thông tin quan trọng cần thiết cho việc đăng nhập của người dùng. Để giải thích nó bằng những từ đơn giản hơn, tệp / etc / passwd lưu trữ chi tiết tài khoản của người dùng. Tệp này là một tệp văn bản thuần túy chứa danh sách đầy đủ tất cả người dùng trên hệ thống Linux của bạn. Nó có thông tin về tên người dùng, mật khẩu, UID (id người dùng), GID (id nhóm), shell và thư mục chính. Tệp này phải có quyền đọc vì nhiều tiện ích dòng lệnh được sử dụng để ánh xạ ID người dùng với tên người dùng. Tuy nhiên, phải có quyền truy cập ghi hạn chế chỉ dành cho tài khoản người dùng cấp cao hoặc người dùng gốc.







Bài viết này sẽ trình bày cách thức và vị trí bạn có thể lưu trữ mật khẩu tài khoản của người dùng hệ thống trên bản phân phối Linux. Chúng tôi đã thực hiện tất cả các bản trình diễn trên hệ thống Ubuntu 20.04. Tuy nhiên, bạn có thể tìm thấy tệp / etc / passwd trên bất kỳ bản phân phối Linux nào.



Điều kiện tiên quyết

Bạn nên có đặc quyền root để chạy các lệnh quản trị.



Hiểu biết cơ bản về / etc / passwd Tệp

Tệp / etc / passwd chứa thông tin về tài khoản người dùng trong hệ thống của bạn. Tất cả các trường được lưu trữ được phân tách bằng dấu hai chấm:.
Khi bạn chạy lệnh sau, bạn sẽ thấy từng mục nhập tệp của tệp / etc / passwd:





$con mèo /Vân vân/passwd

Lệnh trên sẽ liệt kê tất cả người dùng hệ thống Linux của bạn.
Loại định dạng sau sẽ hiển thị trên màn hình đầu cuối của bạn:

Thông tin chi tiết về định dạng trường / etc / passwd
Từ hình ảnh trên:

Tên tài khoản: Trường một đại diện cho tên của người dùng. Độ dài của trường tên người dùng được xác định trong khoảng 1-32 ký tự. Điều này được sử dụng khi người dùng đăng nhập vào hệ thống. Trong ví dụ trên, ‘khuzdar’ là tên người dùng.
Mật khẩu: Trong ví dụ trên, ký tự x cho thấy mật khẩu được lưu trữ ở dạng mã hóa trong tệp / etc / shadow.
ID người dùng (UID): ID người dùng phải được chỉ định riêng cho từng người dùng. UID 0 được chỉ định cho người dùng gốc và các ID người dùng từ 1-99 được chỉ định cho các tài khoản chuẩn hoặc xác định trước. Các UID khác từ 100-999 được chỉ định cho các nhóm hoặc tài khoản quản trị hệ thống. Trong ảnh chụp màn hình ở trên, ID người dùng là 1001.
ID nhóm (GID): Trường tiếp theo đại diện cho ID nhóm. GID được lưu trữ trong tệp / etc / group. Dựa trên ví dụ trên, người dùng thuộc nhóm id 1001.
Thông tin về ID người dùng: Trường sau đây là dành cho các bình luận. Trong trường này, bạn có thể thêm một số thông tin bổ sung về người dùng được chỉ định, chẳng hạn như tên đầy đủ, số điện thoại của người dùng, v.v. Tuy nhiên, trong ví dụ trên, người dùng không cung cấp số điện thoại.
Thư mục chính: Trường này hiển thị vị trí của thư mục chính được gán cho người dùng hiện tại. Nếu thư mục được chỉ định không tồn tại, thì nó sẽ hiển thị /. Hình ảnh trên cho thấy vị trí của người dùng được đánh dấu trong thư mục chính, đó là home / kbuzdar.
Lệnh // shell: Đường dẫn tuyệt đối mặc định của một trình bao hoặc lệnh là / bin / bash. Đây được gọi là vỏ. Ví dụ: sysadmin sử dụng trình bao nologin. Nó hoạt động như một lớp vỏ thay thế cho các tài khoản người dùng hệ thống. Nếu trình bao nằm ở đường dẫn đến / sbin / nologin và người dùng muốn đăng nhập trực tiếp vào hệ thống Linux, trình bao / sbin / nologin sẽ đóng hoặc vô hiệu hóa kết nối.



Tìm kiếm người dùng trong tệp / etc / passwd

Bạn có thể tìm kiếm một người dùng cụ thể bằng tệp / etc / passwd bằng cách sử dụng lệnh grep. Ví dụ: chúng tôi muốn tìm kiếm tên người dùng ‘kbuzdar’ từ tệp / etc / passwd, sử dụng cú pháp sau, sau đó chúng tôi có thể dễ dàng tìm kiếm một người dùng được chỉ định, tiết kiệm thời gian của chúng tôi:

$nắm chặttên tài khoản/Vân vân/passwd

Cú pháp trên sẽ thay đổi thành hình dạng sau:

$nắm chặtkêu cót két/Vân vân/passwd


Hoặc

$nắm chặt -trong '^ kbuzdar' /Vân vân/passwd

Hiển thị quyền đối với tệp / etc / passwd

Như chúng tôi đã đề cập ở trên, tất cả những người dùng khác, ngoại trừ root, sẽ có thể đọc quyền trên tệp / etc / passwd và chủ sở hữu phải là superuser hoặc root.
Nhập thông tin sau để kiểm tra quyền đọc trên tệp:

$ls -NS /Vân vân/passwd

Mẫu đầu ra sau sẽ được hiển thị trên thiết bị đầu cuối:

Đọc tệp / etc / passwd

Bạn có thể đọc tệp / etc / passwd trên hệ thống Linux của mình bằng cách sử dụng tập lệnh bash sau đây hoặc chạy trực tiếp những gì được viết bên dưới trong khi các lệnh lặp trên thiết bị đầu cuối.
Tạo một tệp văn bản và dán mã sau vào đó:

#! / bin / bash
# tổng số bảy trường từ / etc / passwd được lưu trữ dưới dạng $ f1, f2 ..., $ f7

trong khi IFS=:đọc -NSf1 f2 f3 f4 f5 f6 f7
làm
quăng đi 'Người sử dụng$ f1sử dụng$ f7shell và lưu trữ các tệp trong$ f6danh mục.'
xong < /Vân vân/passwd

Sử dụng vòng lặp while, nó sẽ đọc tất cả bảy trường và sau đó hiển thị lặp đi lặp lại nội dung tệp trên thiết bị đầu cuối.
Lưu tệp trên với tên ‘readfile.sh’.

Bây giờ, hãy chạy tệp trên bằng cách sử dụng lệnh sau:

$bấu víureadfile.sh

Khám phá tệp / etc / shadow

Tệp / etc / shadow chứa tất cả mật khẩu đã mã hóa của bạn được lưu trữ trong tệp này mà chỉ người dùng root mới có thể đọc được.
Hãy chạy lệnh sau để hiển thị nội dung:

$sudo con mèo /Vân vân/bóng

Bạn có thể xem tất cả mật khẩu ở định dạng được mã hóa:

Phần kết luận

Chúng tôi đã thấy từ bài viết trên, tất cả chi tiết tài khoản và mật khẩu của người dùng được lưu trữ trên tệp / etc / passwd trong hệ thống Linux. Bạn có thể đọc tệp này, nhưng chỉ người dùng root mới có quyền ghi. Hơn nữa, chúng tôi cũng đã thấy tất cả các mật khẩu được mã hóa được lưu trữ trên tệp / etc / shadow. Bạn cũng có thể khám phá tệp / etc / group để biết thông tin chi tiết về nhóm của người dùng.