File /etc/shadow

  Trong thực tế, mật khẩu người dùng, thường không lưu trữ trong file /etc/passwd. Và được lưu trữ tại file /etc/shadow. Tại sao phải dùng 2 file để lưu trữ thông tin đó. Thực ra vấn đề là để bảo mật thông tin người dùng, ở đây là mật khẩu người dùng.
Trong file /etc/passwd cung cấp cho chúng ta thông tin người dùng như tên, id, gid, thư mục, shell, .... Những thông tin này, hệ thống hoặc user thường đều có thể đọc được và buộc phải đọc được thì user thường mới làm việc được trong phiên login.


        -rw-r--r-- 1 root root 1671 Jul 16  2015 /etc/passwd


 Điều đó dẫn tới, nếu file /etc/passwd có chứa mật khẩu, dù là encode thì vẫn bị đánh cắp. Do đó file /etc/shadow được ra đời để tăng tính bảo mật. Tại đây chỉ lưu trữ thông tin mật khẩu và thông tin thời hạn mật khẩu.


        -r-------- 1 root root 1002 Jul 16  2015 /etc/shadow


  Nếu trong hệ thống không có file shadow, sử dụng câu lệnh sau để tạo file:


        pwconv


  Ngược lại nếu không muốn sử dụng file /etc/shadow để lưu trữ thông tin mật khẩu, sử dụng câu lệnh:

     
        pwunconv


  Cấu trúc file:


   Username:Password-encode:last_pass_change:maxday:maximum:warn:inactive:expire


 
   root:$1$i.c8pVks$KGiRzVYjr8uRZUYzwQxcL1:16262:0:99999:7:::


1. Username : Tên người dùng.

2. Password-encode : Mật khẩu người sử dụng được mã hóa bởi các thuật toán khác nhau tùy từng distro.
         $1$i.c8pVks$KGiRzVYjr8uRZUYzwQxcL1
  Được phân cách thành 3 trường bởi $.
    - Trường 1: Cho biết thuật tóan mã hóa.
            $1 : MD5
            $2 : blowfish
            $2a : eksblowfish
            $5 : sha256
            $6 : sha512
    - Trường 2: Là một chuỗi dữ liệu ngẫu nhiên (salt) kết hợp với pass người dùng, tăng tính bảo mật trong hàm băm.
    - Trường 3: Giá trị băm của salt với password

  Nếu tại password-encode mà :
           - rỗng, nghĩa là không có mật khẩu.
           - ! , nghĩa là mật khẩu người dùng bị chặn, nhưng có thể sử dụng phương thức khác để connect, như ssh key.
           - *, nghĩa là mật khẩu bị chặn, vẫn có thể connect bằng phương thức khác.

3. last_pass_change : Thời gian từ ngày 1/1/1970 tới lần thay đổi mật khẩu gần nhất (tính bằng ngày).

4. maxday : Thời gian tối đa để thay đôi mật khẩu. 0 là thay đổi bất kỳ lúc nào ( tính bằng ngày ).

5. maximum : Thời gian mật khẩu còn thời hạn ( tính bằng ngày ).

6. warn : Thời gian cảnh báo mật khẩu sắp hết hạn ( tính bằng ngày)

7. inactive : Thời gian mà mật khẩu người dùng hết hạn (tính bằng ngày )

8. expire : Thời gian mà người dùng bị vô hiêu hóa, tính từ ngày 1/1/1970 ( tính bằng ngày ).

0 nhận xét:

Post a Comment