[linux_basic] Quản trị Users and Groups

30/12/2020

Trong bài viết này, mình sẽ giúp các bạn hiểu rõ hơn về cấu trúc user và group trong hệ điều hành Linux và các lệnh quản trị đi kèm .

1) Quản trị Users

  • Trên Linux có 2 loại user :
    • User hệ thống
    • User người dùng
  • User hệ thống : dùng để thực thi các module , script cần thiết phục vụ cho hệ điều hành .
  • User người dùng : là những tài khoản để login sử dụng hệ điều hành .
  • Trong các tài khoản người dùng thì tài khoản user root ( super user ) là tài khoản quan trọng nhất :
    • Tài khoản này được tự động tạo ra khi cài đặt Linux .
    • Tài khoản này không thể đổi tên hoặc xóa bỏ .
    • User root còn gọi là super user vì nó có full quyền trên hệ thống .
    • Chỉ làm việc với user root khi muốn thực hiện công tác quản trị hệ thống , trong các trường hợp khác , chỉ nên làm việc với user thường .
  • Mỗi user thường có đặc điểm như sau :
    • Tên tài khoản user là duy nhất , có thể đặt tên chữ thường , chữ hoa .
    • Mỗi user có 1 mã định danh duy nhất ( uid ) .
    • Mỗi user có thể thuộc về nhiều group .
    • Tài khoản super user có uid=gid=0 .

1.1) File /etc/passwd

  • Là file văn bản chứa thông tin về các tài khoản user trên máy .
  • Mọi user đều có thể đọc tập tin này nhưng chỉ có user root mới có quyền thay đổi .
  • Để xem nội dung file ta dùng lệnh :
cat /etc/passwd
  • Cấu trúc file gồm nhiều hàng , mỗi hàng là 1 thông tin của user . Dòng đầu tiên của tập tin mô tả thông tin cho user root ( có uid=0 ) , tiếp theo là các tài khoản khác của hệ thống , cuối cùng là tên các tài khoản người dùng bình thường . Mỗi hàng được chia thành 7 cột cách nhau bằng dấu :

Ý nghĩa các cột trong file :

  • 1 – Tên user ( login name )
  • 2 – Mật khẩu group đã được mã hóa ( vì có file /etc/shadow ) nên mặc định ở đây là x
  • 3 – User ID ( uid )
  • 4 – Group ID ( gid )
  • 5 – Tên mô tả người sử dụng ( comment )
  • 6 – Thư mục home của user ( thường là /home/user_name )
  • 7 – Loại shell sẽ hoạt động khi user login , thường là /bin/bash

1.2) File /etc/shadow

  • Là tập tin văn bản chứa thông tin về mật khẩu của các tài khoản user lưu trên máy .
  • Chỉ có user root mới có quyền đọc tập tin này .
  • User root có quyền reset mật khẩu của bất cứ user nào trên máy .
  • Mỗi dòng trong tập tin chứa thông tin về mật khẩu của user , định dạng của dòng gồm nhiều cột , giá trị , dấu : được sử dụng để phân cách các cột .

Ý nghĩa các cột :

  • 1 – Tên user , giống với trong /etc/passwd ( login name )
  • 2 – Mật khẩu đã được mã hóa
    • Để trống ( empty ) – không có mật khẩu
    • * – tài khoản bị tạm ngưng ( disable )
  • 3 – Số ngày kể từ lần cuối thay đổi mật khẩu ( tính từ 1/1/1970 )
  • 4 – Số ngày trước khi có thể thay đổi mật khẩu . Giá trị 0 có nghĩa có thể thay đổi bất cứ lúc nào .
  • 5 – Số ngày mật khẩu có giá trị . 99999 có nghĩa mật khẩu có giá trị vô thời hạn .
  • 6 – Số ngày cảnh báo user trước khi mật khẩu hết hạn
  • 7 – Số ngày sau khi mật khẩu hết hạn tài khoản sẽ bị khóa . Thường có giá trị là 7 ( 1 tuần )
  • 8 – Số ngày kể từ khi tài khoản bị khóa ( tính từ 1/1/1970 )

1.3) Các lệnh quản lý user

1.3.1) useradd

  • Là lệnh tạo tài khoản user .
useradd [options] [login_name]
  • Options :
    • -c : comment : tạo bí danh
    • -u : set user ID : mặc định sẽ lấy số ID tiếp theo để gắn cho user ( bắt đầu từ 1000 )
    • -d : chỉ định thư mục home cho user
    • -g : chỉ định group chính
    • -G : chỉ định group phụ ( group mở rộng )
    • -s : chỉ định shell cho user sử dụng
VD1 : Tạo user với tên Will và tên đầy đủ là Will Smiths : 
useradd -c "Will Smiths" will

=> User được tạo sẽ thuộc về group will và thư mục home của user là /home/will được tạo ra tự động .

VD2 : Tạo user với tên justice và tên đầy đủ là Justice Smiths , user thuộc nhóm users và các nhóm wheel , sales :
useradd -g users -G wheel,sales -c "Justice Smiths" justice

1.3.2) passwd

  • Là lệnh đặt / đổi password cho user
passwd [login_name]

1.3.3) usermod

  • Là lệnh sửa thông tin tài khoản .
usermod [options] [login_name]
  • Options :
    • -c : comment : tạo bí danh
    • -d : thay đổi thư mục home cho user
    • -m : di chuyển nội dung từ thư mục home cũ sang thư mục home mới ( chỉ dùng với -d )
    • -g : chỉ định group chính
    • -G : chỉ định group phụ ( group mở rộng )
    • -s : chỉ định shell cho user sử dụng
    • -l : đổi tên tài khoản
    • -L : khóa tài khoản
VD : Đổi tên tài khoản will thành jaden ( Jaden Smiths ) với thư mục home của user là /home/jaden
usermod -l jaden -c "Jaden Smiths" -m -d /home/jaden will

1.3.4) userdel

  • Là lệnh xóa tài khoản user
userdel [options] [login_name]
  • Options :
    • -r : xóa cả thư mục home của user
  • Khi xóa tài khoản user bằng lệnh userdel , dòng mô tả tương ứng của user trong tập tin /etc/passwd và /etc/shadow cũng bị xóa .

1.3.5) chage

  • Dùng để thiết lập chính sách ( policy ) cho user
chage [options] [login_name]
  • Options :
    • -l : xem chính sách của 1 user
    • -E : thiết lập ngày hết hạn cho account
    • -I : thiết lập ngày bị khóa sau khi hết hạn mật khẩu ( định dạng ngày tháng là YYYY-MM-DD )
    • -m : thiết lập số ngày tối thiểu được phép thay đổi password
    • -M : thiết lập số ngày tối đa được phép thay đổi password
    • -W : thiết lập số ngày cảnh báo trước khi hết hạn mật khẩu
VD1: Xem policy của user : 
chage -l jaden
 VD2: Thiết lập policy cơ bản : 
chage -E 2019-08-30 -m 5 -M 90 -I 30 -W 14 jaden

=> Lệnh trên sẽ thiết lập mật khẩu hết hạn vào ngày 30/4/2019 . Ngoài ra , số ngày tối thiểu / tối đa giữa các lần thay đổi mật khẩu trong khoảng 5 và 90 . Các tài khoản sẽ bị khóa sau 30 ngày sau khi hết hạn , và 1 tin nhắn cảnh báo sẽ được gửi ra 14 ngày trước khi hết hạn mật khẩu .

 VD3: Thiết lập tắt chính sách hết hạn mật khẩu : 
chage -I -1 -m 0 -M 99999 -E -1 jaden

=> Lệnh trên sẽ set “Password inactive” -> never ( không bị hết hạn mật khẩu ) ( thông số -1 ); số ngày tối thiểu / tối đa giữa các lần đổi mật khẩu là vô hạn ( 0 -> 99999 ) ; Tài khoản không bao giờ bị hết hạn ( “Account expires” -> never ) ( thông số -1 ) => ĐÂY LÀ THIẾT LẬP MẶC ĐỊNH

VD4: Thiết lập bắt buộc user đổi mật khẩu trong lần đầu đăng nhập : 
chage -d 0 jaden

=> Lệnh trên sẽ thiết set “Last Password Change” thành “Password must be changed” và user bắt buộc phải đổi mật khẩu ngay lần đầu đăng nhập .

1.3.6) id

  • Xem thông tin user hiện hành .

1.3.7) su

  • Chuyển đổi user làm việc từ terminal .
  • User root chuyển qua các user khác thì không cần nhập mật khẩu .
  • User khác chuyển qua user root thì phải nhập password của user root .
su -l [login_name]

2) Quản trị Group

  • Group là tập hợp của nhiều user .
  • Mỗi group có 1 tên duy nhất và 1 mã định danh duy nhất ( gid ) .
  • Khi tạo ra 1 user ( không dùng option -g ) thì mặc định 1 group mang tên user được tạo ra .

2.1) File /etc/group

  • Là tập tin văn bản chứa thông tin về các group trên máy .
  • Mọi user đều có quyền đọc tập tin này nhưng chỉ có user root mới có quyền thay đổi .
  • Mỗi dòng tập tin chứa thông tin về 1 group trên máy , định dạng của dòng gồm nhiều cột giá trị , dấu : được sử dụng để phân cách giữa các cột .
  • Ý nghĩa các cột :
    • 1 – Tên group
    • 2 – Mật khẩu group đã được mã hóa ( vì có file /etc/gshadow ) nên mặc định ở đây là x
    • 3 – Mã nhóm ( gid )
    • 4 – Danh sách các user nằm trong nhóm

2.2) File /etc/gshadow

  • Chứa thông tin password của group .
  • Ý nghĩa các cột :
    • 1 – Tên group
    • 2 – Mật khẩu group đã được mã hóa
    • Để trống ( empty ) – không có mật khẩu
    • 3 – Danh sách các user có quyền admin trên group này
    • 4 – Danh sách các user có trong group

2.3) Các lệnh quản lý group

2.3.1) groupadd

  • Là lệnh tạo group .
groupadd [options] [group_name]
  • Options :
    • -g [gid] : định nghĩa nhóm cùng mã nhóm ( gid ) -g [gid] : định nghĩa nhóm cùng mã nhóm ( gid )

2.3.2) gpasswd

  • Tạo mật khẩu cho group .
gpasswd [group_name]

2.3.3) groupmod

  • Là lệnh sửa thông tin group .
groupmod [options] [group_name]
  • Options :
    • -g [gid] : sửa lại mã nhóm ( gid )
    • -n [group_name] : sửa lại tên group

2.3.4) groupdel

  • Dùng để xóa 1 group .
groupdel [group_name]

Thay đổi các thông số mặc định

  • Khi sử dụng lệnh useradd hoặc groupadd , nếu chúng ta không liệt kê đầy đủ các thông số cần thiết thì hệ thống sẽ lấy theo giá trị mặc định đã được định nghĩa .
  • Chúng ta có thể thay đổi định nghĩa những giá trị này trong các file sau :
    • /etc/login.defs : file chứa thông số mặc định khi tạo user hoặc tạo group .
  • /etc/skel/ : tất cả những file và thư mục con trong này sẽ được copy sang thư mục home của user mới tạo .
ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Cảnh báo checkmk cùng với gmail

Thời gian mỗi ngày đều có 24h. Chúng ta không thể lúc nào cũng vào check_mk xem các thiết bị có...
30/12/2020

Cài đặt Python 3 và thiết lập Virtual Environment trên Ubuntu 20.04

Bài viết này sẽ hướng dẫn bạn cách cài đặt Python 3 và thiết lập môi trường lập trình trên...
30/12/2020

[CEPH] [Lý thuyết] Điều ít để ý về phiên bản của CEPH

Thói quen của mình (team mình) là khi tìm hiểu sản phẩm nào đó thường tìm hiểu về lịch sử phát...
30/12/2020