Thứ tư, 04/09/2013 | 00:00 GMT+7

Cách sử dụng mật khẩu và trình bổ sung để quản lý mật khẩu trên VPS Linux


Giới thiệu

Mật khẩu và xác thực là những khái niệm mà mọi user phải xử lý khi làm việc trong môi trường Linux. Các chủ đề này bao gồm một số file cấu hình và công cụ khác nhau.

Trong hướng dẫn này, ta sẽ khám phá một số file cơ bản, như "/ etc / passwd" và "/ etc / shadow", cũng như các công cụ để cấu hình xác thực, như lệnh "passwd" và "adduser" có tên aptly.

Ta sẽ sử dụng VPS Ubuntu 12.04 để thảo luận về các chủ đề này, nhưng bất kỳ bản phân phối Linux hiện đại nào cũng phải hoạt động theo cách tương tự.

Tệp "/ etc / passwd" là gì?

Tệp đầu tiên ta sẽ xem xét, được gọi là file " / etc / passwd ", không thực sự lưu trữ password .

Tại một thời điểm, file này lưu trữ password đã băm của mọi user trên hệ thống. Tuy nhiên, trách nhiệm này đã được chuyển sang một file riêng vì lý do bảo mật.

Hãy xem những gì trong file "/ etc / passwd":

less /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
. . .

Điều đầu tiên cần lưu ý là file này có thể được truy cập bởi user không có quyền .

Mọi người trên hệ thống đều có quyền đọc file này. Đây là lý do tại sao thông tin password được chuyển ra khỏi file này.

Hãy xem định dạng của file .

Cách đọc file "/ etc / passwd"

Mỗi dòng trong file chứa thông tin đăng nhập của một user duy nhất trên hệ thống. Một số user này có thể được tạo ra để sử dụng bởi daemon và các dịch vụ nền.

Hãy nhìn vào một dòng để xem nó chứa thông tin gì:

root:x:0:0:root:/root:/bin/bash

Các trường thông tin được phân tách bằng ký tự dấu hai chấm (:). Có bảy trường trên mỗi dòng trong file Linux "/ etc / passwd" điển hình:

  1. root : Tên user account .
  2. x : Trình giữ chỗ cho thông tin password . Mật khẩu được lấy từ file "/ etc / shadow".
  3. 0 : ID user . Mỗi user có một ID duy nhất xác định họ trên hệ thống. User root luôn được tham chiếu bởi ID user 0.
  4. 0 : ID group . Mỗi group có một ID group duy nhất. Mỗi user có một group "chính" được sử dụng làm group theo mặc định. , ID của group root luôn là 0.
  5. root : Trường comment . Trường này được dùng để mô tả user hoặc chức năng của user . Đây có thể là bất cứ thứ gì, từ thông tin liên hệ của user , đến mô tả về dịch vụ mà account được tạo.
  6. / root : Thư mục chính. Đối với regular user , đây thường sẽ là "/ home / username ". Đối với root, đây là "/ root".
  7. / bin / bash : Shell user . Trường này chứa shell sẽ được tạo ra hoặc lệnh sẽ được chạy khi user đăng nhập.

Khi bạn thêm account user bằng các lệnh như " adduser " và " useradd " hoặc khi bạn cài đặt nhiều dịch vụ hơn, file này sẽ phát triển. Thông tin tên user mới sẽ được thêm vào cuối file này.

Trong hầu hết các trường hợp, bạn không cần phải chỉnh sửa file này bằng tay. Có các công cụ thao tác với file này và đảm bảo cú pháp thích hợp được duy trì.

Tệp "/ etc / shadow" là gì?

Dữ liệu password thực tế được lưu trữ trong một file có tên " / etc / shadow ".

Điều này không thực sự chứa password ở dạng văn bản thuần túy. Thay vào đó, nó sử dụng một hàm dẫn xuất khóa để tạo một hàm băm. Đây là những gì nó lưu trữ trong file .

Một hàm dẫn xuất khóa về cơ bản là một thuật toán sẽ luôn tạo ra một hàm băm nhất định khi được cung cấp cùng một đầu vào. Thuật toán tương tự được chạy trên password được cung cấp trong quá trình xác thực và giá trị này được so sánh với giá trị trong file này.

Lưu ý file này, không giống như file "/ etc / passwd", không thể đọc được bởi user không có quyền .

User root có quyền đọc và ghi, và group "bóng tối", bao gồm những user cần thiết để xác thực, có quyền đọc.

Cách đọc file "/ etc / shadow"

Mở file "/ etc / shadow" bằng lệnh :

sudo less /etc/shadow
root:$6$mJD3Rsj4$xUa7jru6EEGTXnhwTfTT26/j8M5XiQvUl6UH32cfAWT/6W9iSI5IuIw5OOw4khwrsOHPyMwfCLyayfYiVdhAq0:15952:0:99999:7:::
daemon:*:15455:0:99999:7:::
bin:*:15455:0:99999:7:::
sys:*:15455:0:99999:7:::
sync:*:15455:0:99999:7:::
games:*:15455:0:99999:7:::
man:*:15455:0:99999:7:::
. . .

Giống như file "/ etc / passwd", mỗi dòng xác định thông tin của user và mỗi trường được phân tách bằng ký tự dấu hai chấm (:).

Lưu ý: Giá trị dấu hoa thị (*) trong trường thứ hai trên một số dòng trên nghĩa là account không thể đăng nhập. Giá trị này chủ yếu được sử dụng cho các dịch vụ và là hành vi có chủ đích.

Hãy cùng nhìn lại một dòng duy nhất:

daemon:*:15455:0:99999:7:::

Đây là các trường được xác định trong file "/ etc / shadow":

  1. daemon : Tên user account .
  2. * : Mật khẩu muối và băm. Bạn có thể thấy điều này trông như thế nào với mục root ở trên. Như đã lưu ý ở trên, dấu hoa thị cho biết account này không thể được sử dụng để đăng nhập.
  3. 15455 : Lần thay đổi password cuối cùng. Giá trị này được đo bằng ngày kể từ "kỷ nguyên" Unix, là ngày 1 tháng 1 năm 1970.
  4. 0 : Số ngày cho phép thay đổi password . 0 trong trường này nghĩa là không có hạn chế.
  5. 99999 : Số ngày cho đến khi yêu cầu thay đổi password . 99999 nghĩa là không có giới hạn về thời gian hiệu lực của password hiện tại.
  6. 7 : Số ngày cảnh báo trước khi hết hạn. Nếu có yêu cầu thay đổi password , điều này sẽ cảnh báo user thay đổi password của họ trước nhiều ngày.
  7. [blank] Ba trường cuối cùng được sử dụng để biểu thị những ngày trước khi account không hoạt động, những ngày kể từ Kỷ nguyên khi account hết hạn. Trường cuối cùng không được sử dụng.

Làm thế nào để bạn thay đổi password ?

Mật khẩu của user có thể được sửa đổi bằng cách đưa ra lệnh "passwd".

Theo mặc định, lệnh này thay đổi password của user hiện tại và không yêu cầu quyền đặc biệt.

passwd

Nếu bạn muốn thay đổi password của user khác, bạn cần có quyền quản trị. Cú pháp sau được dùng :

sudo passwd username

Bạn sẽ được yêu cầu nhập password của bạn cho lệnh "sudo", sau đó bạn cần nhập và xác nhận password mới mà bạn muốn sử dụng.

Nếu bạn so sánh giá trị băm trong file "/ etc / shadow", bạn sẽ thấy nó thay đổi sau khi bạn phát lệnh passwd.

Làm thế nào để bạn tạo user mới?

User có thể được tạo bằng một vài lệnh khác nhau.

Phương pháp dễ nhất có lẽ là với lệnh " adduser ", mà ta sẽ đề cập ở đây. Trên hệ thống Ubuntu, điều này được liên kết với một tập lệnh perl xử lý việc tạo user thích hợp.

Bạn có thể gọi nó như vậy:

adduser demo
Adding user `demo' ...
Adding new group `demo' (1000) ...
Adding new user `demo' (1000) with group `demo' ...
Creating home directory `/home/demo' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for demo
Enter the new value, or press ENTER for the default
	Full Name []: test
	Room Number []: room
	Work Phone []: work phone
	Home Phone []: home phone
	Other []: other
Is the information correct? [Y/n]

Bạn sẽ được hỏi một loạt các câu hỏi giúp điền thông tin vào file "/ etc / passwd" và file "/ etc / shadow".

Ta có thể xem mục nhập nào nó đã thêm vào file "/ etc / passwd" bằng lệnh :

tail -1 /etc/passwd
demo:x:1000:1000:test,room,work phoneme phone,other:/home/demo:/bin/bash

Bạn có thể thấy rằng điều này tận dụng lợi thế của trường comment . Các trường khác được điền như mong đợi.

Ta có thể chạy một lệnh tương tự để xem các sửa đổi được thực hiện đối với file "/ etc / shadow":

sudo tail -1 /etc/shadow
demo:$6$XvPCmWr4$HXWmaGSeU5SrKwK2ouAjc68SxbJgUQkQ.Fco9eTOex8232S7weBfr/CMHQkullQRLyJtCAD6rw5TVOXk39NAo/:15952:0:99999:7:::

Kết luận

Sử dụng các công cụ đơn giản này, bạn có thể thay đổi thông tin đăng nhập trên hệ thống của bạn .

Điều quan trọng là phải kiểm tra khả năng đăng nhập của bạn sau khi thực hiện bất kỳ thay đổi nào. Nó cũng cần thiết để giữ nguyên các quyền trên file xác thực để duy trì chức năng và bảo mật.

Bởi Justin Ellingwood

Tags:

Các tin liên quan

Cách cài đặt Linux, Lighttpd, MySQL và PHP5 (LLMP Stack) trên CentOS 6
2013-08-30
Cách sử dụng Top, Netstat, Du và các công cụ khác để giám sát tài nguyên server
2013-08-26
So sánh server Django: server phát triển, Mod_WSGI, uWSGI và Gunicorn
2013-08-19
Giới thiệu khái niệm cơ bản về Linux
2013-08-16
Cách sử dụng SFTP để truyền tệp an toàn bằng server từ xa
2013-08-13
Cách thiết lập server Git riêng trên VPS
2013-08-02
Cách cài đặt và cấu hình firewall server cấu hình (CSF) trên Ubuntu
2013-07-29
Kiến thức cơ bản về quyền của Linux và cách sử dụng Umask trên VPS
2013-07-10
Cách bảo mật server cloud chống lại SQL Injection
2013-07-05
Cài đặt và sử dụng Vim Text Editor trên Cloud Server
2013-07-03