Mở file /etc/passwd ta thấy có các dòng. trật tự nào sau đây của các cột là đúng:
Có một số lược đồ xác thực được sử dụng để lưu trữ thông tin định danh người dùng trong linux. Trong đó có thường gặp nhất là /etc/passwd và /etc/shadow. Và trong bài này mình sẽ viết về shadow thôi. Thông tin được lưu trữ trong file /etc/shadow trong file này an toàn hơn file /etc/passwd vì chỉ khi có quyền root mới có thể truy cập được thông tin trong file này. Đồng thời thông tin được lưu trữ trong file này bao gồm cả thông tin mã hóa của mật khẩu (bên file /etc/passwd thì lưu là dấu (x) thôi). Để xem thông tin file thì ta sử dụng quyền root và sử dụng câu lệnh sudo cat /etc/shadow. Kết quả thu được sẽ như một ví dụ dưới đây: Trong mỗi dòng thông tin sẽ có nhiều trường dữ liệu, mỗi trường mang một ý nghĩa riêng và được phân cách nhau bởi dấu :. Và tổng cộng có 9 trường. Cấu trúc lưu trữ các trườngLấy 1 thông tin ở phần trên để phân tích. Giữa mỗi 2 giấu : sẽ là mỗi trường (trường đầu với trường cuối thì khác :) ). Phân tích các trường: Trường 1 - Username: Là tên được sử dụng để đăng nhập vào hệ thống. Hay còn được gọi là account. Trường 2 - Encrypted Password: Là mật khẩu đã được mã hóa. Giá trị lưu ở đây sẽ dùng format $type$salt$hashed (dấu $ dùng để phân cách các trường luôn ấy). Trong đó $type dùng để biểu thị giải thuật mã hóa được sử dụng, giá trị của type có thể là:
Giá trị $salt dùng để biểu thị giá trị salt được sử dụng. Và giá trị $hashed biểu thị giá trị hash của mật khẩu sau khi mã hóa (mã hóa là ra cái hash này :D). Nếu trường này có giá trị là (*) hoặc (!), thì người dùng không thể đăng nhập tài khoản này với việc định danh bằng password (phải dùng phương thức khác :v). Trường 3 - Last password change: Thời gian lần cuối password được thay đổi. Thời gian này tính theo ngày từ thời điểm ngày 1/1/1970. Như trên ví dụ thì 17298 sẽ thể hiện thời gian là ngày 10/10/2017 (lâu lắm rồi mình chưa đổi thì phải :) ). Trường 4 - Minimum password age: Biểu thị số ngày mà user được đổi password mới. Nếu trường này là 2 thì sau khi thay đổi mật khẩu 2 ngày, người dùng mới được đổi mật khẩu mới. Thông thường, trường này có giá trị là 0 và do đó người dùng có thể thay đổi password lúc nào cũng được. Trường 5 - Maximum password age: Biểu thị số ngày mà password phải thay đổi. Điều này sẽ đảm bảo password được thay đổi thường xuyên hơn (coi như một biện pháp bảo mật). Khi đạt tới giá trị này thì hệ thống sẽ yêu cầu (yêu cầu thôi) người dùng đổi. Nếu giá trị này bằng 0 thì có nghĩa là mật khẩu đó sẽ không bị yêu cầu thay đổi Trường 6 - Warning period: Khoảng thời gian tính theo ngày trước khi password expire (hết hạn) (do trường 5 quy định) sau khi nhận được cảnh báo. (Account sau khi bị expire password thì vẫn có thể xài được một số lệnh - chắc bài nào đó sẽ nói tới). Trường 7 - Inactivity period: Khoảng thời gian tính theo ngày sau khi account của người dùng bị expire (do trường 6) cho tới khi account đó bị disable (giờ mới không đăng nhập được lun nè). Thông thường trường này được để trống. Trường 8 - Expiration date: Biểu thị số ngày mà tài khoản bị disable. Khác với trường 7 bên trên, trường này có thể được dùng để xác định "tuổi" của một account được tạo. (Như chơi net mà nạp tiền chơi cho 1 ngày -> trường này set = 1, hết thời gian thì account bị disable). Trường 9 - Unused: Trường phòng xa xem tương lai cần thêm tính năng gì không. Các trường này đều có vai trò ảnh hưởng đến việc sử dụng của người dùng. Nên việc chỉnh sửa (nếu có) phải cẩn thận. 3. Thay đổi giá trị của các trường với chagePhần này thì mình sẽ sử dụng công cụ chage để thay đổi một số trường thông tin của file shadow được nói đến ở trên. Công cụ này được tích hợp sẵn nên không cần cài đặt gì đâu (quá khỏe). Cấu trúc cơ bản của lệnh như sau:chage [options] USERNAME Một số option hỗ trợ như:
Khi thay đổi cần lưu ý format tham số truyền vào và username của account cần thay đổi. Có thể thay đổi cùng một lúc nhiều trường. Nhưng những giá trị này ảnh hưởng trực tiếp tới account của người dùng nên cần cân nhắc trước khi thay đổi. 4. Tham khảoThông tin trong bài được mình biên soạn lại có thể có nhiều thiếu sót. Nếu có gì hãy góp ý cho mình nhé. --Cynurus8666---
Bài viết liên quan
0 0
1. Giới thiệu Trong quá trình tìm hiểu về linux có thể lúc nào đó bạn tình cờ đọc được hướng dẫn sử dụng lệnh như sau: /tmp/bash p Câu lệnh trên...
Câu hỏi chuẩn bị thi môn Hệ điều hành mã nguồn mở lớp cnt49dh1Câu 1: Ký tự * tương ứng vớia. Tương ứng với thứ tự bất kỳ của một hay nhiều ký tựb. Tương ứng với một ký tự bất kỳc. Tương ứng với một trong những ký tự trong ngoặc hoặc giới hạnd. Tương ứng với chuỗi ký tự trong ngoặc hoặc giới hạnCâu 2: Ký tự ? tương ứng vớia. Tương ứng với thứ tự bất kỳ của một hay nhiều ký tựb. Tương ứng với một ký tự bất kỳc. Tương ứng với một trong những ký tự trong ngoặc hoặc giới hạnd. Tương ứng với chuỗi ký tự trong ngoặc hoặc giới hạnCâu 3: Ký tự [] tương ứng vớia. Tương ứng với thứ tự bất kỳ của một hay nhiều ký tựb. Tương ứng với một ký tự bất kỳc. Tương ứng với một trong những ký tự trong ngoặc hoặc giới hạnd. Tương ứng với chuỗi ký tự trong ngoặc hoặc giới hạnCâu 4: Ký tự ^ tương ứng vớia. bắt đầu của một dòngb. kết thúc một dòngc. bắt đầu một từ d. kết thúc một từCâu 5: Ký tự $ tương ứng vớia. bắt đầu của một dòngb. kết thúc một dòngc. bắt đầu một từ d. kết thúc một từCâu 6: Ký tự \< tương ứng vớia. bắt đầu của một dòngb. kết thúc một dòngc. bắt đầu một từ d. kết thúc một từCâu 7: Ký tự \> tương ứng vớia. bắt đầu của một dòngb. kết thúc một dòngc. bắt đầu một từ d. kết thúc một từCâu 8: Ký tự [^] tương ứng vớia. bắt đầu của một dòngb. kết thúc một dòngc. các ký tự bất kỳ không nằm trong ngoặcd. Lấy ký hiệu theo sau dấu gạch ngượcCâu 9. Để trợ giúp cách sử dụng các câu lệnh, ta dùng lệnh nào dưới đây:a. #man |