Xem mật khẩu user trên linux

Giống như nhiều thứ trên Linux, mật khẩu được quản lý dễ dàng nhất trực tiếp từ dòng lệnh. Tiện ích passwd được thiết kế cho phép bạn nhanh chóng và dễ dàng truy cập vào tất cả các lệnh liên quan đến mật khẩu trên hệ thống. Bạn có thể sử dụng nó để thay đổi và quản lý mật khẩu của mình cũng như mật khẩu người dùng khác trên hệ thống. Ngoài ra, bạn có thể sử dụng nó để tắt xác thực mật khẩu cho một người dùng cụ thể, khóa tài khoản người dùng và thiết lập thời gian hết hạn mật khẩu bắt buộc để giữ an toàn hệ thống. Bài viết này sẽ hướng dẫn các bạn cách sử dụng tiện ích passwd để quản lý mật khẩu trong Linux.

Thay đổi mật khẩu

Đầu tiên, công việc đơn giản nhất bạn có thể làm với tiện ích passwd là thay đổi mật khẩu của bạn chỉ với lệnh passwd.

passwd

Xem mật khẩu user trên linux

Nó sẽ yêu cầu bạn cung cấp mật khẩu hiện tại của mình theo sau đó là mật khẩu mới của bạn.

Thay đổi mật khẩu của người dùng khác

Với quyền root hoặc sudo, bạn cũng có thể thay đổi mật khẩu của người khác. Bạn chỉ cần cung cấp tên người dùng tài khoản muốn đổi cho passwd.

sudo passwd username

Lưu ý: Usename là tên người dùng

Xem mật khẩu user trên linux

Với lệnh này, bạn không cần cung cấp mật khẩu hiện tại. Nó chỉ yêu cầu bạn thiết lập một mật khẩu mới.

Khóa mật khẩu tài khoản người dùng

Bạn có thể dễ dàng khóa tài khoản của người dùng bằng cách khóa mật khẩu của họ. Điều này sẽ khiến họ không thể đăng nhập bằng mật khẩu. Các phương pháp khác, như khóa SSH, sẽ vẫn hoạt động. Để khóa tài khoản, bạn sẽ cần sudo và cờ -l.

sudo passwd -l username

Bạn cũng có thể mở khóa tài khoản bằng cờ -u.

sudo passwd -u username

Khóa quyền root

Nếu vì lý do bảo mật, bạn muốn khóa tất cả quyền truy cập vào tài khoản root, để sudo là cách duy nhất quản lý hệ thống, bạn có thể thực hiện điều đó với lệnh sau:

sudo passwd -l root

Nó hoạt động tương tự với người dùng khác.

Không sử dụng mật khẩu

Bạn cũng có thể chọn để thiết lập tài khoản người dùng không cần mật khẩu. Tuy nhiên đây không phải là ý tưởng tốt đối với bảo mật nhưng bạn có thể tránh nhiều rắc rối như có máy tính đa phương tiện mà bạn không cần phải bảo mật theo cách đó. Để thực hiện điều này, sử dụng passwd với một cờ đơn giản để xóa mật khẩu người dùng.

sudo passwd -d username

Thiết lập giới hạn thời gian cho mật khẩu người dùng

Việc thiết lập thời hạn cho mật khẩu khá phổ biến. Đây là biện pháp bảo mật tốt, ngăn mật khẩu người dùng cũ khỏi xâm nhập hệ thống. Nếu bạn đang chạy hệ thống sử dụng trong kinh doanh, thật khó để kiểm soát mật khẩu của họ và liệu họ có xâm nhập vào hệ thống hay không. Yêu cầu họ thay đổi mật khẩu sau một khoảng thời gian nhất định sẽ buộc người dùng phải làm mới mật khẩu và giảm nguy cơ vi phạm.

Xem mật khẩu user trên linux

Sử dụng cờ -x theo sau số ngày bạn muốn mật khẩu của người dùng hợp lệ.

sudo passwd -x 30 username

Lệnh trên thiết lập thời gian mật khẩu người dùng sẽ hết hạn sau 30 ngày.

Xem mật khẩu user trên linux

Bạn cũng có thể thiết lập một hệ thống để cảnh báo người dùng rằng mật khẩu của họ sắp hết hạn. Sử dụng cờ -w với số ngày trước khi hết hạn để tự động cảnh báo người dùng thay đổi mật khẩu của họ.

sudo passwd -w 5 username

Nếu biết có sự cố với mật khẩu của người dùng, bạn có thể tự động làm cho mật khẩu của họ hết hạn. Điều này sẽ buộc họ phải đặt một mật khẩu mới ngay lập tức.

sudo passwd -e username

Passwd là một công cụ vô giá đối với các quản trị viên Linux. Thậm chí nếu bạn không chạy một máy chủ doanh nghiệp, bạn vẫn có thể tận dụng lợi thế của passwd để giữ máy tính cá nhân của mình an toàn hơn.

Chúc các bạn thực hiện thành công!

Xem thêm:

  • An toàn mật khẩu trên hệ thống mạng UNIX và LINUX
  • 10 cách tạo mật khẩu ngẫu nhiên trong Linux từ dòng lệnh
  • Tắt bỏ màn hình Password Lock trong Ubuntu

List user và file /etc/passwd trên Linux

Trên linux OS có những user nào? Trường hợp muốn xem danh sách user thì có thể confirm qua file /etc/passwd

1. Cách xem file /etc/passwd

Thông tin của user có thể confirm dựa trên file /etc/passwd. User name, password, user ID, group ID, comment (Tên thật hoặc số đt…) Home directory, Login shell sẽ được ghi lại.
Nội dung file /etc/passwd hình dung như sau:

[[email protected] ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
・・・
hogehoge:x:500:501:KAZMAX_ADMIN:/home/hogehoge:/bin/bash

hogehoge: là User name
x : 「 x 」tức là encrypted password. 「 x 」mang ý nghĩa là 1 shadow password
500: User ID
501: Group ID
KAZMAX_ADMIN: Comment (Tên thật, số đt), trường hợp không có comment thì sẽ không có gì
/home/hogehoge: Home directory (Folder home) của user
/bin/bash: login shell của user

** Note:
Nếu password được để trống thì có thể login vào không cần password. Hãy set password cho user. Ngược lại, từ file /etc/passwd nếu xoá đi phần 「 x 」của thông tin user thì sẽ trở thành trạng thái chưa thiết lập password, khi đó thì có thể login mà không cần password. (Nếu môi trường cho phép login mà không cần password)

2. /etc/passwd và /etc/shadow

Trong bản cập nhật mới nhất thì hầu hết「 x 」được ghi lại ở vị trí password
Trước đó, password sẽ được mã hoá và ghi lại ở file /etc/passwd
General user có thể tham khảo File /etc/paswd và cũng có thể có khả năng phân tích được password đã bị mã hoá. Vì thế, nếu thiết lập sao cho general user không thể read được file /etc/passwd thì user sẽ không thể login được nữa.
Do đó, có thể sử dụng shadow password, trong file /etc/passwd chỉ lưu password dạng 「 x 」. Thay vào đó, trong file /etc/shadow sẽ chứa password đã được encrypted.
Ngoài ra, setting file /etc/shadow là root readonly.

[[email protected] ~]# ls -l /etc/shadow
-r——– 1 root root 1559 4月 14 00:25 /etc/shadow

3. Output list user từ file /etc/passwd

Có thể output list user từ file /etc/passwd như sau:

[[email protected] ~]$ cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
・・・
** Note:

Có thể dùng command “alias” để đăng ký trước 1 số thực thi thì khá là tiện. Do ở UNIX cũng có 1 command tương tự đó là “listusers” nên để command execute ngay sau khi login vào OS thì, ở thư mục home directory có thể ghi thêm vào「.bashrc」như sau:

[[email protected] ~]$ cd
[[email protected] ~]$ vi .bashrc
alias listusers=”cut -d: -f1 /etc/passwd” ← thêm vào
・・・

[[email protected] ~]$ source .bashrc
[[email protected] ~]$ listusers
root
bin
daemon
adm
lp
・・・

** Note

Trong package glibc-common, có 1 lệnh được gọi là getent. Nếu run command đó với option「passwd」thì có thể output được danh sách user bao gồm account ldap

[[email protected] ~]$ getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

Tham khảo

http://kazmax.zpp.jp/linux_beginner/etc_passwd.html

Nếu bạn là người quản trị hệ thống Linux thường xuyên thì việc login/logout vào hệ thống là điều mặc định hiển nhiên. Trên màn hình đăng nhập, Linux yêu cầu bạn nhập username/password, nếu bạn nhập chính xác thì bạn đăng nhập thành công vào hệ thống. Vậy điều gì đã xảy ra khi bạn nhập username/password, Linux xử lý dữ liệu đó như thế nào? mật khẩu người dùng lưu ở đâu? cơ chế xác thực như thế nào?

Trong bài viết này, tôi tập trung vào tìm hiểu cách linux lưu trữ mật khẩu người dùng.

Trong Linux, file /etc/passwd là file lưu thông tin user của hệ thống, khi bạn tạo một user mới thì linux sẽ add thêm 1 bản ghi mới vào file này. Bạn dùng lệnh để show quyền truy cập file này thì thấy file này có 1 đặc điểm là tất cả người dùng trong hệ thống đều có thể đọc được (‘r’).

[[email protected] ~]# ll /etc/passwd

-rw-r--r-- 1 root root 1373 Apr  1 13:50 /etc/passwd

Điều này khá nhạy cảm vì thông tin user sẽ bị phơi bày trước bất kỳ user nào trong hệ thống. Tuy nhiên thuộc tính ‘r’ là cần thiết vì một số ứng dụng và tool hệ thống cần đọc file này thì mới chạy chính xác. Giả sử, tôi thay đổi quyền truy cập file này để chỉ có ‘root’ mới có quyền đọc.

[[email protected] ~]# chmod 600 /etc/passwd

[[email protected] ~]# ll /etc/passwd

-rw------- 1 root root 1373 Apr  1 13:50 /etc/passwd

Bây giờ, điều gì sẽ xảy ra khi tôi chuyển sang một user thường có sẵn trên hệ thống:

[email protected] ~]# su - mario

id: cannot findname foruser ID 500

id: cannot findname foruser ID 500

[I have no [email protected] ~]$

Oh, tôi không thể thay đổi chuyển sang tài khoản có tên là mario, bới vì nó sẽ không đọc được file /etc/passwd nên không thể lấy thông tin username, home directory..của mario được lưu trữ trong file /etc/passwd.
Nếu để password lưu trữ trong /etc/passwd thì cũng rất nguy hiểm, mặc dù có thể mã hóa mật khẩu bằng 1 thuật toán băm(Vì tất cả user trong hệ thống đều đọc được).

Vì vậy, cần lưu trữ password người dùng trong 1 file mà chỉ ‘root’ mới đọc được. Giải pháp mà Linux đưa ra là bổ xung 1 file tên là /etc/shadow để lưu trữ mật khẩu người dùng. File /etc/shadow này chỉ truy cập được bởi ‘root’.

[[email protected] ~]# ll /etc/shadow

-r-------- 1 root root 897 Apr  1 13:50 /etc/shadow

Bây giờ, thử xem nội dung file /etc/shadow

[[email protected] ~]# cat /etc/shadow

mario:$1$0XJ4dcSP$wpBqBzQSmIppMPEjeYP8K/:16161:0:99999:7:::

  1. 1. Trường đầu tiên, đó chính là username mario

2. Trường thứ 2 đó là trường password đã được mã hóa $1$0XJ4dcSP$wpBqBzQSmIppMPEjeYP8K/. Đây chính xác là trường tôi cần quan tâm và cần khai thác ở bài post này

Nội dung password đã được mã hóa $1$0XJ4dcSP$wpBqBzQSmIppMPEjeYP8K/ có ý nghĩa gì?

- Trường đầu tiên, cho biết thuật toán sử dụng để băm(trong ví dụ này là 1 – MD5 hashing algorithm)

 $1 = MD5 hashing algorithm.

 $2 = Blowfish Algorithm is in use.

 $2a = eksblowfish Algorithm

 $5 = SHA-256 Algorithm

 $6 = SHA-512 Algorithm

- Trường thứ 2 là một chuỗi dữ liệu ngẫu nhiên(random data hay còn gọi là salt) được sinh ra để kết hợp với mật khẩu người dùng(user password), để tăng sức mạnh băm(trong ví dụ này là 0XJ4dcSP)

- Trường thứ 3 là giá trị băm của salt + user password(trong ví dụ này là wpBqBzQSmIppMPEjeYP8K/)

Khi bạn login vào hệ thống, bạn nhập user/password. Hệ thống sẽ sử dụng giá trị salt của user + password mà bạn nhập vào để tạo ra 1 chuỗi mã hóa. Nếu chuỗi mã hóa này trùng với chuỗi mã hóa trong file /etc/shadow thì user login thành công.

Nguồn http://securitydaily.net/