/etc/shadow
file trong Linux lưu trữ mật khẩu đã hash và các thiết lập bảo mật liên quan đến người dùng hệ thống. Đây là thành phần quan trọng giúp quản lý xác thực và đảm bảo mật khẩu không bị lộ dưới dạng văn bản thuần. Bài viết sẽ giúp bạn hiểu rõ /etc/shadow file là gì
, file này chứa nội dung gì và cách các trường trong đó hoạt động. Ngoài ra, bạn cũng sẽ biết được có nên chỉnh sửa file này không và một số gợi ý về giải pháp hạ tầng hiệu quả cho hệ thống bảo mật cao.
Điểm chính cần nắm
- /etc/shadow file là gì?: Giới thiệu về
/etc/shadow
file và vai trò của nó trong quản lý mật khẩu và bảo mật người dùng trên hệ thống Linux. - Nội dung của /etc/shadow file: Tóm tắt thông tin được lưu trong
/etc/shadow
file, bao gồm mật khẩu đã hash và các thiết lập bảo mật. - Có nên chỉnh sửa /etc/shadow file không?: Cảnh báo không nên chỉnh sửa
/etc/shadow
filetrực tiếp để tránh gây lỗi hệ thống hoặc vấn đề bảo mật. - Vietnix – VPS hiệu suất cao cho website nặng: Giới thiệu dịch vụ VPS của Vietnix, tối ưu hiệu suất cho các website yêu cầu tài nguyên lớn.
- FAQ: Các câu hỏi thường gặp về
/etc/shadow
file và quản lý bảo mật trong Linux.
/etc/shadow
file là gì?
/etc/shadow
là một file hệ thống trong Linux dùng để lưu trữ thông tin liên quan đến mật khẩu của người dùng. File này chứa:
- Mật khẩu của người dùng (đã được băm – hash)
- Các thông tin liên quan đến thời gian thay đổi mật khẩu
- Các chính sách như tuổi thọ của mật khẩu, thời gian cảnh báo, thời gian không hoạt động, v.v.
Mỗi khi người dùng thiết lập hoặc thay đổi mật khẩu, hệ thống sẽ sử dụng một thuật toán hash để mã hóa mật khẩu đó rồi lưu trữ vào file shadow
, thay vì lưu dạng văn bản thuần. Từ đó, hệ thống có thể xác thực người dùng mà không cần biết chính xác mật khẩu của họ là gì.

Lưu ý
Người dùng thông thường không nên và không cần chỉnh sửa trực tiếp file này, vì bất kỳ thay đổi không đúng cách nào cũng có thể gây lỗi xác thực hoặc vô hiệu hóa tài khoản. Việc thay đổi thông tin trong /etc/shadow
nên được thực hiện thông qua các lệnh quản lý như passwd
, usermod
hoặc chage
.
Nội dung của/etc/shadow
file
Để xem nội dung của file, bạn cần mở Terminal và sử dụng quyền quản trị:
sudo cat /etc/shadow
Bạn sẽ thấy danh sách các dòng trông như thế này: username:$6$abc123...$XYZ...:19475:0:99999:7:::
Mỗi dòng tương ứng với một tài khoản người dùng, và được chia thành 9 trường, cách nhau bằng dấu hai chấm (:
). Cấu trúc đầy đủ như sau:
username:password:last_changed:min_age:max_age:warning:inactive:expire:reserved
Các trường trong file /etc/shadow
(Linux)
1. username: Tên người dùng
2. password: Mật khẩu đã hash
3. last_changed: Ngày thay đổi mật khẩu gần nhất
4. min_age: Số ngày tối thiểu giữa các lần thay đổi mật khẩu
5. max_age: Số ngày tối đa mật khẩu có hiệu lực
6. warning: Số ngày cảnh báo trước khi mật khẩu hết hạn
7. inactive: Thời gian không hoạt động sau khi mật khẩu hết hạn
8. expire: Ngày hết hạn hoàn toàn của tài khoản
9. reserved: Trường chưa được sử dụng

1. username: Tên người dùng
Trường đầu tiên là tên đăng nhập của người dùng tương ứng với thông tin mật khẩu và các quy định phía sau.
2. password: Mật khẩu đã hash
Trường này không lưu mật khẩu ở dạng văn bản gốc. Thay vào đó, nó lưu mật khẩu sau khi được hash bằng một thuật toán mã hóa mạnh.
Cấu trúc bên trong như sau:
$id$salt$hashed_password
Trong đó:
id: Chỉ định thuật toán mã hóa:
$1$
– MD5$5$
– SHA-256$6$
– SHA-512 (phổ biến nhất hiện nay)
salt: Một chuỗi ngẫu nhiên giúp tăng tính bảo mật của mật khẩu.
hashed_password: Kết quả sau khi mật khẩu và salt được đưa vào hàm hash.
Nếu trường này là một ký tự !
hoặc *
, nghĩa là tài khoản đã bị vô hiệu hóa hoặc không sử dụng mật khẩu (ví dụ: tài khoản hệ thống hoặc người dùng giả lập).
3. last_changed: Ngày thay đổi mật khẩu gần nhất
Đây là số ngày tính từ ngày 1/1/1970 (Unix epoch) đến thời điểm mật khẩu được thay đổi lần cuối.
4. min_age: Số ngày tối thiểu giữa các lần thay đổi mật khẩu
Ví dụ: nếu giá trị là 1
, người dùng phải chờ ít nhất 1 ngày sau lần đổi gần nhất mới được đổi tiếp. Nếu giá trị là 0
, người dùng có thể đổi mật khẩu bất cứ lúc nào.
5. max_age: Số ngày tối đa mật khẩu có hiệu lực
Sau thời gian này, mật khẩu sẽ hết hạn và người dùng bắt buộc phải thay đổi.
Giá trị mặc định thường là 99999
, tương đương hơn 270 năm – tức là gần như không hết hạn nếu không có chính sách cụ thể.
6. warning: Số ngày cảnh báo trước khi mật khẩu hết hạn
Khi gần đến thời điểm mật khẩu hết hạn, hệ thống sẽ nhắc người dùng đổi mật khẩu. Đây là số ngày trước thời hạn mà cảnh báo đó sẽ được đưa ra.
7. inactive: Thời gian không hoạt động sau khi mật khẩu hết hạn
Nếu người dùng không đổi mật khẩu sau khi hết hạn, họ vẫn có thêm một khoảng thời gian nữa để đăng nhập và cập nhật. Hết khoảng này, tài khoản sẽ bị khóa tạm thời.
8. expire: Ngày hết hạn hoàn toàn của tài khoản
Sau ngày này (cũng được tính từ 1/1/1970), tài khoản sẽ bị vô hiệu hóa hoàn toàn, bất kể mật khẩu có hợp lệ hay không.
9. reserved: Trường chưa được sử dụng
Trường này hiện tại chưa có chức năng cụ thể. Hệ thống để dành cho các tính năng bảo mật trong tương lai.
Có nên chỉnh sửa file /etc/shadow
không?
Câu trả lời là: Không. Dù bạn có thể mở và đọc file này bằng quyền sudo
, nhưng tuyệt đối không nên chỉnh sửa nó bằng tay, vì những lý do sau:
- Cú pháp sai: Việc chỉnh sửa trực tiếp có thể dẫn đến cú pháp sai, khiến bạn bị khóa khỏi hệ thống hoặc gặp các lỗi không mong muốn.
- Hệ thống không nhận diện được thay đổi: Các thay đổi không đúng định dạng có thể khiến hệ thống không hiểu hoặc bỏ qua các thay đổi của bạn.
- Rủi ro bảo mật: file
/etc/shadow
chứa các mật khẩu đã được mã hóa của người dùng, nên việc chỉnh sửa sai có thể mở ra lỗ hổng bảo mật nghiêm trọng.
/etc/shadow
file rất nhạy cảm vì chứa thông tin mật khẩu của người dùng. Do đó, chỉ có người dùng root (hoặc người có quyền truy cập đặc biệt – User root) mới có thể truy cập và chỉnh sửa file này.
- Quyền truy cập file
/etc/shadow
:
Bạn có thể kiểm tra quyền truy cập file /etc/shadow
bằng lệnh: ls -l /etc/shadow
Và kết quả thường sẽ là: -r-------- 1 root root 1234 May 12 10:00 /etc/shadow
. Điều này có nghĩa là chỉ có người dùng root mới có quyền đọc file.
Cách thay đổi thông tin người dùng mà không chỉnh sửa file trực tiếp
Thay vào đó, nếu bạn cần thay đổi thông tin như mật khẩu, chính sách hết hạn,… hãy dùng các công cụ sau:
passwd
: Đổi mật khẩu người dùng
sudo passwd username
chage
: Thay đổi chính sách mật khẩu
sudo chage -l username
usermod
: Cập nhật cấu hình người dùng
Cách kiểm tra file /etc/shadow
trên các hệ thống khác nhau
Các bản phân phối Linux khác nhau đều sử dụng file /etc/shadow
để lưu trữ mật khẩu người dùng, tuy nhiên cách quản lý file này có thể hơi khác nhau tùy theo từng hệ thống. Để kiểm tra file này, bạn có thể sử dụng các lệnh sau:
- Trên Ubuntu và Debian:
sudo cat /etc/shadow
- Trên CentOS và Fedora:
sudo cat /etc/shadow
- Trên các hệ thống WSL (Windows Subsystem for Linux):
/etc/shadow
file sẽ nằm trong môi trường Linux mà bạn đã cài đặt trên Windows. Bạn có thể kiểm tra bằng lệnh:cat /etc/shadow
Hãy nhớ rằng, mặc dù các hệ thống có thể khác nhau, nhưng mục đích của file này luôn là lưu trữ thông tin liên quan đến mật khẩu người dùng.
Vietnix – VPS hiệu suất cao cho website nặng
Dù bạn đang vận hành một website cá nhân, trang tin tức hay hệ thống thương mại điện tử, dịch vụ VPS và hosting hiệu suất cao của Vietnix sẽ giúp bạn duy trì tốc độ tải trang nhanh, ổn định và an toàn. Với nền tảng hạ tầng hiện đại, máy chủ được đặt tại trung tâm dữ liệu chuẩn Tier III, Vietnix đảm bảo website luôn hoạt động mượt mà và liên tục – ngay cả khi lưu lượng truy cập tăng cao.
Hệ thống được bảo vệ bởi các giải pháp bảo mật tiên tiến, chống tấn công DDoS hiệu quả, cùng đội ngũ kỹ thuật giàu kinh nghiệm luôn sẵn sàng hỗ trợ 24/7, mang đến cho bạn sự an tâm tuyệt đối trong quá trình vận hành.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
/etc/shadow
file dùng để làm gì?
File /etc/shadow
lưu trữ thông tin xác thực người dùng, cụ thể là mật khẩu đã được hash cùng các thông tin liên quan như thời gian thay đổi, hạn sử dụng, và quy tắc bảo mật mật khẩu.
Sự khác biệt giữa file /etc/passwd
và /etc/shadow
là gì?
File /etc/passwd
chứa thông tin người dùng (UID, GID, shell,…), trong khi /etc/shadow
chứa thông tin bảo mật như mật khẩu đã mã hóa và chính sách mật khẩu. Mật khẩu từng được lưu trong /etc/passwd
, nhưng sau này chuyển sang /etc/shadow
để tăng tính bảo mật.
Dấu $6$
trong file /etc/shadow
có nghĩa là gì?
$6$
biểu thị rằng hệ thống đang dùng thuật toán hash SHA-512 để mã hóa mật khẩu người dùng.
Dấu chấm than !
hoặc dấu sao *
trong trường mật khẩu của /etc/shadow
nghĩa là gì?
Dấu !
hoặc *
nghĩa là tài khoản đó đã bị vô hiệu hóa hoặc không thể đăng nhập bằng mật khẩu. Thường dùng cho tài khoản hệ thống hoặc khi khóa người dùng tạm thời.
Làm sao để chỉnh sửa file /etc/shadow
đúng cách?
Không nên chỉnh trực tiếp bằng vim
hay nano
. Thay vào đó, nên dùng lệnh như passwd
, chage
, usermod
để đảm bảo tính nhất quán và an toàn.
Định dạng từng trường trong dòng của /etc/shadow
là gì?
Mỗi dòng có 9 trường, phân tách bằng dấu :
. Bao gồm: tên người dùng, mật khẩu (hash), ngày thay đổi mật khẩu gần nhất, tuổi mật khẩu tối thiểu, tối đa, thời gian cảnh báo, thời gian không hoạt động, ngày hết hạn tài khoản, và trường không sử dụng.
File /etc/shadow
có tồn tại trên Ubuntu không?
Có. Ubuntu và hầu hết các bản phân phối Linux đều sử dụng /etc/shadow
để lưu trữ thông tin xác thực an toàn.
Có thể phục hồi mật khẩu người dùng từ /etc/shadow
không?
Không. Mật khẩu được hash một chiều. Tuy nhiên, hacker có thể thử tấn công brute-force hoặc dùng từ điển hash để tìm mật khẩu gốc.
Vì sao phải tách mật khẩu sang file /etc/shadow
thay vì để chung trong /etc/passwd
?
Vì /etc/passwd
phải có quyền đọc công khai để các tiến trình hệ thống hoạt động bình thường, trong khi mật khẩu cần được bảo mật. Tách ra giúp giảm rủi ro rò rỉ mật khẩu.
Lời kết
Hiểu rõ cấu trúc và vai trò của file /etc/shadow
giúp bạn quản lý hệ thống người dùng hiệu quả và bảo mật hơn. Nếu bạn có bất kỳ thắc mắc nào về nội dung file, cách hoạt động hoặc các trường cụ thể trong /etc/shadow
, đừng ngần ngại để lại câu hỏi. Bạn cũng có thể tìm hiểu thêm các bài viết liên quan về bảo mật Linux trên blog của Vietnix. Chúng mình luôn sẵn sàng hỗ trợ bạn tối ưu hệ thống một cách an toàn và hiệu quả.
Mọi người cũng xem: