Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

43

Bạn là administrator tất cả các máy tính nếu trên đó bạn là superuser – root. Có thể là một máy tính cá nhân để bàn với một hoặc hai tài khoản hoặc cũng có thể là một server với hằng trăm tài khoản. Bài viết này có thể giúp các bạn hiểu được cơ chế tổ chức và quản trị người dùng trên Linux. Nội dung bài viết:

1/ Superuser

Trong hệ thống Linux, tài khoản root có quyền cao nhất được sử dụng bởi người quản trị. Sử dụng quyền root chúng ta thấy rất thoải mai vì chúng ta có thể thực hiện các thao tác mà không phải lo lắng gì đến vấn đề quyền truy cập, vì root có quyền cao nhất trong hệ thống. Tuy nhiên, khi hệ thống bị sự cố do một lỗi nào đó, chúng ta mới thấy sự nguy hiểm khi làm việc với root, do vậy phải hạn chế sử dụng toàn khoản root. Với những server quan trọng và có nhiều dịch vụ khác nhau, bạn có thể tạo ra các superuser thích hợp cho từng dịch vụ để tránh dùng root cho các công việc này. Ví dụ như superuser cho công tác backup chỉ cần chức năng đọc (read-only) mà không cần chức năng ghi.

Trong Linux, chúng ta có thể tạo tài khoản có tên khác nhưng có quyền root bằng cách tạo UserID bằng 0. Cần phân biệt bạn đang login bằng root hay người sử dụng thường thông qua dấu nhắc lệnh shell.

Đăng nhập bằng root

linux12_6_1 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Đăng nhập bằng người sử dụng thường

linux12_6_2 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Dấu $ cho thấy bạn đang kết nối như một người sử dụng thường (test123). Dấu # cho thấy bạn đang thực hiện lệnh với root.

2/ Thông tin của user

Mọi người muốn đăng nhập và sử dụng hệ thống linux đều cần có một tài khoản. Việc tạo và quản lý tài khoản là vấn đề quan trọng mà người quản trị phải thực hiện.

Mỗi tài khoản người dùng phải có một tên sử dụng (username) và mật khẩu (password) riêng. Tập tin /etc/passwd là tập tin chứa thông tin về tài khoản người dùng của hệ thống.

a/ Tập tin /etc/passwd

Tập tin /etc/passwd đóng vai trò sống còn đối với một hệ thống Linux. Mọi người đều có thể đọc tập tin này nhưng chỉ có root mới có quyền thay đổi. Tập tin /etc/passwd được lưu dưới dạng văn bản như hầu hết các tập tin cấu hình khác của Linux. linux12_6_13 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Hình 5.1: Cấu trúc tập tin /etc/passwd

linux12_6_3 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Nội dung của tập tin /etc/ passwd:

linux12_6_4 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Mỗi tài khoản được lưu trong một dòng gồm 7 cột mỗi cột được ngăn cách bởi dấu “:”:

Cột 1 Username: Tên người sử dụng

Cột 2 Password: Mã liên quan đến mật khẩu của tài khoản là “x” đối với Linux. Linux lưu mã này trong một tập tin là /etc/shadow mà chỉ có root mới có quyền đọc.

Cột 3 User ID: Mã định danh tài khoản (User ID). Hệ thống sử dụng UID (User ID) để phân biệt người này với người khác.

Cột 4 Group ID: Mã định danh nhóm (Group ID). Đây là primary group của user này.

Cột 5 Comment: Mô tả về tài khoản.

Cột 6 Home Directory: Thư mục home của từng user, thường sẽ nằm trong /home/”tên_tài_khoản”

Cột 7 Shell: Tên chương trình sẽ thực thi ngay sau khi đăng nhập. Nếu không có shell sẽ không thể đăng nhập. Mặc định trên Linux sẽ dùng bash shell.

Dòng đầu tiên của tập tin /etc/passwd mô tả thông tin cho user root (tất cả những tài khoản có User ID = 0 đều là root), tiếp theo là các tài khoản khác của hệ thống, cuối cùng là các tài khoản người dùng thường.

b/ Username và User ID

Tên người dùng là chuỗi ký tự xác định duy nhất một người dùng, người dùng sử dụng tên này khi đăng nhập cùng như truy xuất tài khoản, trong Linux tên người dùng có sự phân biệt giữa chữ hoa và thường. Thông thường, tên người dùng thường sử dụng chữ thường. Để dễ dàng trong việc quản lý người dùng, ngoài tên người dùng Linux còn sử dụng khác niệm định danh người dùng (User ID). Mỗi người dùng có một con số định danh riêng.

Linux sử dụng User ID để kiểm soát hoạt động của người dùng. Theo quy định chung, những nguời dùng có định danh là 0 là người dùng quản trị (root). Các User ID từ 1-99 sử dụng cho các tài khoản hệ thống, User ID của người dùng thường sử dụng giá trị bắt đầu từ 100.

c/ Mật khẩu người dùng

Mỗi người dùng có một mật khẩu riêng để sử dụng tài khoản của mình. Mọi người đều có quyền đổi mật khẩu của chính mình. Người quản trị có thể đổi mật khẩu của những người khác.

Tập tin /etc/shadow: Chứa chuỗi password đã mã hóa bằng hàm băm cũng như lưu trữ một số thông tin khác như tên đăng nhập của người dùng, các thông tin về thời gian hết hạn của mật khẩu …

linux12_6_14 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Hình 5.2: Cấu trúc tập tin /etc/shadow

Nội dung tập tin /etc/shadow

linux12_6_5 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Lần này cũng vậy, từng dòng tương ứng với một tài khoản và các vùng phân cách nhau bởi dâu”:

Cột 1 : Tên của tài khoản

Cột 2 : Mật khẩu của tài khoản đã được mã hóa . Trường hợp những tài khoản nào có mật khẩu là !! tức là tài khoản này tạm thời đang bị khóa còn”*” tài khoản bị disable.

Cột 3 : Số ngày kể từ khi mật khẩu được thay đổi lần cuối cùng thay đổi mật khẩu lần cuối cùng tính từ kỷ nguyên 1-1-1970

Cột 4 : Số ngày tối thiểu giữa các lần thay đổi mật khẩu , 0 là có thể thay đổi bất cứ lúc nào

Cột 5 : Số ngày sau đó mật khẩu phải được thay đổi

Cột 6 : Số ngày cảnh báo người dùng phải thay đổi mật khẩu trước khi mật khẩu hết hạn

Cột 7 : Số ngày sau khi mật khẩu hết hạn, tài khoản bị disable

Cột 8 : Số ngày kể từ ngày 1 -1-1970 tài khoản bị vô hiệu

Cột 9 : Một lĩnh vực dùng riêng có thể sử dụng trong tương lai

Ký tự “$” trước mật khẩu đã được mã hóa của người dùng cho biết mật khẩu này được tạo sử dụng một thuật toán mã hóa. Ví dụ :

$1$ MD5

$5$ SHA 256

$6$ SHA 512

d/ Group ID

Khái niệm Group ID để định danh nhóm của người dùng, thông qua Group ID này cỏ thể xác định người dùng đó thuộc nhóm nào, thông thường trên Linux, GID (Group ID) được mặc định tạo ra khi tạo một tài khoản và có giá trị >=500.

e/ Home Directory

Khi người dùng login vào hệ thống được đặt làm việc tại thư mục cá nhân của mình. Thường khi mỗi người có một thư mục cá nhân riêng, người dùng có toàn quyền trên đó, nó dùng để chứa dữ liệu cá nhân và các thông tin hệ thống cho hoạt động của người dùng như biến môi trường, script khởi động, profile khi sử dụng X window… Home directory của người dùng thường là /home; cho root là /root. Tuy nhiên ta cũng có thể đặt vào vị trí khác nhau thông qua lệnh useradd hoặc usermod.

3/ Quản lý người dùng

a/ Tạo tài khoản

Đề tạo một tài khoản, bạn có thể sử dụng lệnh useradd, cú pháp lệnh useradd như sau:

#useradd [tùy_chọn] tên_tài_khoản

d : Thiết lập thư mục home của người dùng. Mặc định khi ta tạo một người dùng thi sẽ được tạo trong thư mục /home/tên_tài_khoản

– m: Tạo thư mục home của người dùng nếu không có

– M: Không tạo thư mục home của người dùng

– u: Mặc định sẽ lấy số ID tiếp theo để gán cho user. (User ID)

– g: Nhóm khởi tạo (GID).  GID phải tồn tại.

– G: Thêm người dùng vào các group

– c: Mô tả (Tên đầy dủ)

– e: Ngảy hết hạn của tài khoản

Và còn nhiều tùy chọn khác.

[[email protected] ~]# useradd -c “Tu hoc mang 1” thm1

Dùng lệnh passwd để đặt password cho tài khoản

[[email protected] ~]# passwd thm1

linux12_6_6 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Sau các bước trước ta vào tập tin /etc/passwd để kiểm tra:

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

linux12_6_7 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Tạo tài khoản người dùng với tên thm2 và chỉ định thư mục chủ tại /home/thumuctest

[[email protected] ~]# useradd -d /home/thumuctest thm2

[[email protected] ~]# passwd thm2

Sau các bước trước ta vào tập tin /etc/passwd để kiểm tra:

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

linux12_6_8 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

b/ Thay đổi thông tin tài khoản

Bạn có thể thay đổi lại thông tin tài khoản từ tập tin /etc/passwd hoặc dùng lệnh usermod. Cú pháp của lệnh usermod:

#usermod [tùy_chọn] [tên_tài_khoản]

Ví dụ: Thay đổi mô tả thông tin người dùng

[[email protected] ~]# usermod -c “Tu Hoc Mang 2” thm2

Lệnh usermod cũng tương tự như useradd nhưng có 1 vài lệnh khác biệt. Các bạn gõ usermod hoặc man usermod để biết thêm thông tin về lệnh.

c/ Tạm khóa tài khoản người dùng

Để tạm khóa tài khoản trong hệ thống ta có thể dùng nhiều cách:

Khóa:

passwd -l [tên_tài_khoản]

usermod -L [tên_tài_khoản]

Mở khóa:

passwd -u [tên_tài_khoản]

usermod -U [tên_tài_khoản]

Ta có thể tạm khóa bằng cách chỉnh sửa tập tin /etc/shadow và thay thế từ khóa “x” bằng từ khóa “*” hoặc gán /sbin/nologin (/bin/false nếu là ubuntu) vào shell mặc định của user trong file /etc/passwd.

linux12_6_9 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

d/ Hủy tài khoản

Lệnh userdel dùng để xóa một tài khoản. Ngoài ra, bạn cũng có thể xóa một tài khoản bằng cách xóa đi dòng dữ liệu tương ứng với tài khoản đó trong tập tin /etc/passwd. Cú pháp lệnh:

userdel [tùy_chọn] [tên_tài_khoản]

Ví dụ: Xóa tài khoản thm2

[[email protected] ~]# userdel thm2

Nếu sử dụng tùy chọn -r thì sẽ xóa luôn thư mục home directory của tài khoản thm2.

4/ Nhóm người dùng

Thiết lập những người dùng có chung một số đặc điểm nào đó hay có chung quyền hạn trên tài nguyên vào chung một nhóm. Mỗi nhóm có một tên riêng và một định danh nhóm (GID), một nhóm có thể có nhiều người dùng và người dùng có thể là thành viên của nhiều nhóm khác nhau.

Thông tin về nhóm lưu tại tập tin /etc/group. Mỗi dòng định nghĩa một nhóm, các trường trên dòng cách nhau bằng dấu “:” và dấu “,” ngăn cách danh sách các thành viên.

[tên_nhóm]:[password_của_nhóm]:[định_danh_nhóm]:[các_user_thuộc_nhóm]

Mặc định khi tạo tài khoản, Linux sẽ tạo cho mỗi tài khoản một nhóm, tên nhóm trùng với tên tài khoản. Đọc tập tin /etc/passwd ta thấy:

thm2:x:504:504::/home/thumuctest:/bin/bash

a/ Tạo nhóm

Chúng ta có thể chỉnh sửa trực tiếp trong tập tin /etc/group hoặc dùng lệnh groupadd. Cú pháp:

groupadd [tên_nhóm]

b/ Thêm người dùng vào nhóm

Chúng ta có thể sửa từ tập tin /etc/group. Một cách khác là cho từng người dùng vào nhóm lệnh:

usermod -G [tên_nhóm] [tên_tài_khoản]

[[email protected] ~]# usermod -G thm1 test123

[[email protected] ~]# usermod -G thm1 thm2

Sau đó gõ lệnh cat /etc/group | grep “thm1” để kiểm tra:

linux12_6_11 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

c/ Thay đổi thông tin nhóm

Để thay đổi thông tin nhóm ta dùng lệnh:

groupmod [tùy_chọn] [tên_nhóm]

Ví dụ: Đổi tên nhóm thm2 thành thm3 ta

[[email protected] ~]# groupmod -n thm3 thm2

d/ Hủy nhóm

Ta có thể xóa trực tiếp trong tập tin /etc/group hay dùng lệnh:

groupdel [tên_nhóm]

e/ Xem thông tin về user và group

Ta có thể dùng lệnh groups hoặc id để xem thông tin về một tài khoản hay một nhóm nào đó trong hệ thống, cú pháp lệnh:

id [tùy_chọn] [tên_tài_khoản]

Ví dụ: Ta muốn xem groupID của một tài khoản thm1 ta dùng lệnh:

[[email protected] ~]# id -g thm1

linux12_6_10 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

Ta có thể xem tên nhóm của một tài khoản nào đó ta dùng lệnh:

groups [tên_tài_khoản]

linux12_6_12 Tư học LPI 1, 2: Bài 5 Quản lý người dùng và nhóm

5/ Định nghĩa các cấu hình mặc định cho người dùng

Khi dùng lệnh useradd không có tùy chọn kèm theo để tạo một user, các thuộc tính của user sẽ được tìm kiếm theo cấu hình mặc định trong các file:

/etc/default/useradd

/etc/login.defs

/etc/skel

a/ Tập tin /etc/default/useradd

Chứa các lựa chọn mặc định khi sử dụng lệnh useradd mà không có tùy chọn.

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

Chúng ta có thể dùng lệnh useradd -D để liệt kê các tùy chọn mặc định.

b/ Tập tin /etc/login.defs chứa các thông tin sau đây:

Thư mục mail (the mail spool directory):

MAIL_DIR

Các điều khiển thời gian của mật khẩu:

PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_MAX_LEN,

PASS_WARN_AGE

Giá trị max/min của UID tự động lựa chọn trong useradd:

UID_MIN, UID_MAX

Giá trị max/min đối với lựa chọn tự động GID trong groupadd:

GID_MIN, GID_MAX

Tự động tạo một thư mục gốc với useradd:

CREATE_HOME

Mặc định ban đầu, mật khầu người dùng có giá trị trong 99999 ngày, tương đương với 2739 năm (mặc định PASS_MAX_DAYS). Người dùng được thông báo trong vòng 7 ngày rằng mật khầu của bạn sẽ bị hết hạn (mặc định PASS_WARN_AGE) với dòng thông báo sau mỗi khi người dùng đăng nhập vào hệ thống

Có một tham số thời gian của mật khẩu khác được gọi là PASS_MIN_DAY. Đây là số ngày nhỏ nhất trước khi một người dùng có thể thay đổi mật khẩu, giá trị này được thiết lập mặc định ban đầu bằng 0.

Lệnh chage cho phép quản trị hệ thống thay đổi các tham số lựa chọn trên:

chage [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ] [ -I inactive ] [ -E expire ] [ -d last_day ] [tên_tài_khoản]

Tham số -l đầu tiên liệt kê giá trị của policy hiện thời của một người dùng. Chúng ta chỉ đề cập đến tham số lựa chọn –E. Tham số này sẽ khoá một tài khoản người dùng tại thời điểm xác định. Định dạng ngày có thể theo định dạng của UNIX hoặc theo YYYY/MM/DD.

Tất cả các giá trị trên đều được lưu giữ trong tập tin /etc/shadow và có thể thay đổi trực tiếp.

c/ Thư mục /etc/skel

Chứa các tập tin mặc định và sẽ được copy tới thư mục home directory của người dùng mới được tạo:

.bashrc

.bash_profiles, ..

.bash_logout

Chú ý:

Khi tạọ ra một user, nếu ta không thay đổi password cho user đó, thì user đó sẽ tạm thời bị khoá và chưa sử dụng được.

Khi tạo user mà không chỉ userID thì hệ thống tự đặt userID với giá trị >=500.

Khi tạo một user với userID = 0 thì user đó có quyềt root.

Khi tạo user mà không chỉ ra home directory thì mặc định homedir của các users nằm trong /home.

BÌNH LUẬN

Please enter your comment!
Please enter your name here