Nếu bạn từng xem qua các tệp hệ thống Linux của bạn, bạn có thể đã bắt gặp một tệp trong thư mục /etc có tên là shadow (bóng tối). Nghe có vẻ rùng rợn nhưng đây thực sự là một tệp tin an toàn, cần thiết và hữu ích cho việc quản trị hệ thống.
Hôm nay chúng ta sẽ xem xét kỹ hơn nội dung của tệp /etc/shadow và những gì nó có thể cho bạn biết về hệ thống của bạn.
1. /etc/shadow là gì?
Nghe có vẻ bí ẩn nhưng chức năng của tệp này khá đơn giản. Tệp /etc/shadow chứa thông tin về người dùng của hệ thống Linux, mật khẩu của họ và các quy định về thời gian cho mật khẩu của họ.
Khi bạn tạo hoặc thay đổi mật khẩu trong Linux , hệ thống sẽ hash* (băm) và lưu trữ nó trong tệp shadow. Bất kỳ quy tắc mật khẩu nào được chỉ định bởi quản trị viên, như ngày hết hạn và thời gian không hoạt động, cũng sẽ vẫn ở đây. Sau đó, tệp shadow có thể cho các giao thức xác thực biết liệu mật khẩu của người dùng có đúng hay không, hay khi nào mật khẩu hết hạn.
*Hash: biến đầu vào là một nội dung có kích thước, độ dài bất kỳ rồi sử dụng những thuật toán, công thức toán học để biến thành đầu ra tiêu chuẩn có độ dài nhất định. Quá trình đó sử dụng những Hàm băm (Hash function).
Bạn không bao giờ nên chỉnh sửa trực tiếp tệp shadow. Nó được duy trì bởi các quy trình tự động và không dành cho người dùng thông thường để sửa đổi. Tuy vậy, thông tin nó chứa có thể có giá trị đối với bạn.
>>> Đọc ngay: Cách cài đặt Microsoft Office trên Linux
2. Tệp shadow Linux có gì?
Để xem nội dung của tệp shadow, hãy mở một terminal và ra lệnh cat trên đó:
sudo cat /etc/shadow
Bạn sẽ thấy lời nhắc yêu cầu bạn nhập mật khẩu của mình. Giả sử bạn có quyền quản trị, bạn sẽ thấy bản in các chuỗi văn bản trông tương tự như thế này (dấu chấm lửng đánh dấu nơi chuỗi được cắt để vừa với màn hình của bạn):
muo1:$6$IK2...$20a...:18731:0:99999:7:::
Nó trông khó hiểu, và đúng là một số trong số đó là văn bản được mã hóa. Tuy nhiên, chuỗi này tuân theo một cấu trúc cụ thể và chứa các bit thông tin cụ thể, được mô tả bằng ký tự dấu hai chấm ( 🙂 .
Đây là một bố cục hoàn chỉnh của chuỗi:
[username]:[password]:[date of last password change]:[minimum password age]:[maximum password age]:[warning period]:[inactivity period]:[expiration date]:[unused]
Chúng ta hãy xem xét kỹ hơn từng trường sau:
2.1 Username (Tên người dùng)
Mọi thứ theo sau trong chuỗi được liên kết với tên người dùng này.
2.2 Password (Mật khẩu)
Trường mật khẩu bao gồm ba trường bổ sung, được phân định bằng ký hiệu đô la: $id$salt$hash.
- id: Điều này xác định thuật toán mã hóa được sử dụng để mã hóa mật khẩu của bạn. Giá trị có thể là 1 (MD5), 2a (Blowfish), 2y (Eksblowfish), 5 (SHA-256) hoặc 6 (SHA-512).
- salt: Đây là salt được sử dụng để mã hóa và xác thực mật khẩu.
- hash: Đây là mật khẩu của người dùng khi nó xuất hiện sau khi băm. Tệp shadow lưu giữ phiên bản đã băm của mật khẩu để hệ thống có thể kiểm tra bất kỳ nỗ lực nào để nhập mật khẩu của bạn.
*salt: dữ liệu ngẫu nhiên được sử dụng làm đầu vào bổ sung cho hàm một chiều có chức năng băm dữ liệu, mật khẩu hoặc cụm mật khẩu
Đôi khi trường mật khẩu chỉ chứa dấu hoa thị (*) hoặc dấu chấm than (!). Điều đó có nghĩa là hệ thống đã vô hiệu hóa tài khoản của người dùng hoặc người dùng phải xác thực thông qua các phương tiện khác ngoài mật khẩu. Điều này thường xảy ra đối với các quy trình hệ thống (còn được gọi là người dùng giả – pseudo-users) mà bạn cũng có thể tìm thấy trong tệp shadow.
2.3 Date of last password change (Ngày thay đổi mật khẩu cuối cùng)
Tại đây, bạn sẽ tìm thấy lần cuối cùng người dùng này thay đổi mật khẩu của họ. Lưu ý rằng hệ thống hiển thị ngày ở định dạng thời gian Unix.
2.4 Minimum password age (Tuổi mật khẩu tối thiểu)
Bạn sẽ tìm thấy ở đây số ngày mà người dùng phải đợi sau khi thay đổi mật khẩu của họ trước khi thay đổi lại.
Nếu mức tối thiểu không được đặt, giá trị ở đây sẽ là 0.
>>> Đọc ngay: Cách bắt đầu sử dụng Linux
2.5 Maximum password age (Tuổi mật khẩu tối đa)
Điều này xác định thời gian người dùng có thể sử dụng mà không cần thay đổi mật khẩu của họ. Thường xuyên thay đổi mật khẩu của bạn có những lợi ích của nó , nhưng theo mặc định, giá trị sẽ được đặt ở mức 99,999 ngày – gần 275 năm.
2.6 Warning period (Thời gian cảnh báo)
Trường này xác định số ngày trước khi mật khẩu đạt đến tuổi tối đa, trong đó người dùng sẽ nhận được lời nhắc thay đổi mật khẩu của họ.
2.7 Inactivity period (Thời gian không hoạt động)
Đây là số ngày có thể trôi qua sau khi mật khẩu của người dùng đạt đến tuổi tối đa trước khi hệ thống vô hiệu hóa tài khoản. Hãy coi đây là “thời gian gia hạn” trong đó người dùng có cơ hội thứ hai để thay đổi mật khẩu của họ, ngay cả khi mật khẩu đó đã hết hạn về mặt kỹ thuật.
2.8 Expiration date (Ngày hết hạn)
Ngày này là ngày kết thúc thời gian không hoạt động khi hệ thống sẽ tự động vô hiệu hóa tài khoản của người dùng. Sau khi bị vô hiệu hóa, người dùng sẽ không thể đăng nhập cho đến khi quản trị viên bật lại.
Trường này sẽ trống nếu không được đặt và nếu được đặt, ngày sẽ xuất hiện theo thời gian của kỷ nguyên.
2.9 Unuse (Không sử dụng)
Trường này hiện không phục vụ mục đích nào và được dành để sử dụng trong tương lai.
>>> Đọc ngay: 6 yếu tố cần xem xét khi lựa chọn một bản phân phối Linux
3. Giải thích về tệp shadow
Tập shadow thực sự không bí ẩn chút nào. Tuy nhiên, hãy nhớ rằng nếu bạn muốn thay đổi mật khẩu và quy tắc mật khẩu, bạn nên tránh chỉnh sửa trực tiếp tệp shadow và thay vào đó chọn sử dụng các công cụ được chỉ định cho mục đích đó.
Bất cứ khi nào bạn thêm người dùng mới vào hệ thống Linux của mình, tệp /etc/shadow sẽ tự động được sửa đổi để lưu trữ thông tin xác thực về người dùng.
>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:
>>> Xem thêm chuỗi bài viết liên quan:
Cách tạo ảnh Mosaic trên Linux với Polyfoto
Cách ghi chú trong Terminal Linux với ứng dụng ghi chú tnote
Cách sử dụng lệnh wc trong Linux
Hướng dẫn cách sử dụng lsof để theo dõi file đang mở trên Linux
Dịch từ: https://www.makeuseof.com/etc-shadow-file-linux/
Vân Nguyễn
Bình luận (0
)