Quaản lý tài nguyên linux

Hệ điều hành Linux là hệ điều hành đa người dùng nên việc quản lý nguời dùng và nhóm rất quan trong. Bài viết này sẽ giới thiệu các bạn cách quản lý người dùng và nhóm trên Linux.

1. Cách xác định người dùng hiện tại

Hệ điều hành Linux là một hệ điều hành đa người dùng, nhiều người dùng có thể đăng nhập cùng một lúc.

Để xác định người dùng hiện tại, sử dụng lệnh

whoami

Để liệt kê những người dùng đang đăng nhập hiện tại trên hệ thống. Sử dụng tùy chọn

useradd username

passwd username
2 sẽ cung cấp thông tin chi tiết hơn về nguời dùng.

who -a

2. Giới thiệu về người dùng và nhóm trên Linux

User dùng để định danh cho một người dùng trong hệ thống. Và Group là tên định danh cho một nhóm người dùng có cùng một đặc điểm nào đó.

Một group có thể có nhiều user và một user có thể là thành viên trong nhiều group.

Tất cả người dùng Linux được gán một ID người dùng [uid], đây là một số nguyên, người dùng bình thường bắt đầu với uid từ 1000 trở lên.

Hệ điều hành Linux sử dụng nhóm để tổ chức người dùng. Nhóm là tập hợp các tài khoản với các quyền được chia sẻ nhất định. Kiểm soát thành viên nhóm thông qua tệp /etc/group , trong đó hiển thị danh sách các nhóm và thành viên của họ.

Người dùng cũng có một hoặc nhiều ID nhóm [gid], bao gồm một ID mặc định giống với ID người dùng. Những con số này được liên kết với tên thông qua các tập tin /etc/passwd và /etc/group . Các nhóm được sử dụng để thiết lập một nhóm người dùng có lợi ích chung cho các mục đích quyền truy cập, đặc quyền và cân nhắc bảo mật.

Ví dụ về tệp /etc/group và /etc/passwd

3. Cách tạo và xóa người dùng

Để tạo một user chúng ta sử dụng lệnh

useradd username

passwd username
3

Ví dụ: Tạo user với tên username và đặt mật khẩu cho user này dùng lệnh

useradd username

passwd username
4

useradd username

passwd username

Để xóa user chúng ta sử dụng lệnh

useradd username

passwd username
5

Ví dụ: Xoá user có tên username

userdel username
4. Cách tạo và xóa nhóm.

Thông thường khi ta tạo một user thì hệ thống sẽ tự tạo ra một group cùng tên đó và gán user vô group luôn. Nếu muốn tạo một group mới thì chúng ta sử dụng lệnh

useradd username

passwd username
6

Ví dụ: Tạo group với tên newgroup

groupadd newgroup

Ví dụ: Thêm user vào group

Để tạo mới một user mới tên username và thêm nó vào group thì chúng ta sử dụng lệnh

useradd username

passwd username
3

useradd -a -G newgroup username

Trường hợp muốn thêm một user tên username1 đã có sẵn trong hệ thống vào group thì chúng ta sử dụng lệnh

useradd username

passwd username
8

usermod -a -G newgroup username1

Ví dụ: Xóa một group chúng ta sử dụng lệnh

useradd username

passwd username
9

groupdel newgroup

Các file lưu trữ thông tin về user và group trên Linux thông thường được lưu ở các vị trí sau:

  • /etc/passwd

  • /etc/shadow

  • /etc/group

5. Tài khoản root trên Linux

Tài khoản root trên Linux rất mạnh và có toàn quyền truy cập vào hệ thống. Các hệ điều hành khác thường gọi đây là tài khoản quản trị viên. Trong hệ điều hành Linux, thì tài khoản root được gọi là tài khoản super user. Phải cực kỳ thận trọng trước khi cấp quyền truy cập root đầy đủ cho người dùng. Các cuộc tấn công thường bao gồm các thủ thuật được sử dụng để nâng lên tài khoản root.

Tuy nhiên, chúng ta có thể sử dụng tính năng

userdel username
0 để gán các đặc quyền hạn chế hơn cho tài khoản người dùng:

  • Chỉ trên cơ sở tạm thời

  • Chỉ cho một tập hợp con cụ thể của lệnh.

6. Khác nhau giữa lệnh “su” và “sudo”

Khi sử dụng gán đặc quyền nâng cao, chúng ta có thể sử dụng lệnh

userdel username
1 để khởi chạy shell mới chạy với tư cách người dùng khác [chúng ta nhập mật khẩu của người dùng mà bạn đang muốn trở thành]. Thông thường, người dùng khác này là root và shell mới cho phép sử dụng các đặc quyền nâng cao cho đến khi thoát. Luôn là một mối nguy hiểm cho cả bảo mật và ổn định để sử dụng
userdel username
1 để trở thành root. Lỗi có thể bao gồm xóa các tệp quan trọng khỏi hệ thống và vi phạm bảo mật.

Cấp đặc quyền bằng

userdel username
0 ít nguy hiểm hơn và được ưu tiên. Lệnh
userdel username
0 được bật trên cơ sở mỗi người dùng.

Bản phân phối [như Ubuntu] cho phép mặc định ít nhất một người dùng chính hoặc cung cấp tùy chọn này dưới dạng tùy chọn cài đặt.

7. Cách cấu hình script tự động chạy khi người dùng đăng nhập

Hệ điều hành Linux, chương trình shell sử dụng một hoặc nhiều tệp khởi động để cấu hình môi trường người dùng. Các tệp trong thư mục /etc cài đặt chung cho tất cả người dùng, các tệp khởi tạo trong thư mục chính của người dùng có thể bao gồm và / hoặc ghi đè vào cài đặt chung.

Các tệp khởi động có thể làm bất cứ điều gì chúng ta muốn như:

  • Tùy chỉnh lời nhắc
  • Xác định các phím tắt và bí danh dòng lệnh
  • Đặt trình soạn thảo văn bản mặc định
  • Đặt đường dẫn cho nơi tìm chương trình thực thi

Khi bạn đăng nhập lần đầu vào Linux, /etc/profile được đọc và đánh giá, sau đó các tệp sau được tìm kiếm theo thứ tự được liệt kê:

  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile

Trong đó kí hiệu ~/. biểu thị thư mục home của người dùng. Khi đăng nhập Linux shell đánh giá bất kỳ tệp khởi động nào mà xuất hiện đầu tiên và bỏ qua phần còn lại. Có nghĩa là nếu nó tìm thấy ~/.bash_profile, nó sẽ bỏ qua ~/.bash_login và ~/.profile . Các bản phân phối khác nhau sử dụng các tệp khởi động khác nhau.

Chúng ta chỉ sử dụng ~/.bashrc, vì nó được gọi mỗi khi shell khởi chạy hoặc chương trình khác được khởi chạy từ terminal window, các tệp khác chỉ được đọc và thực thi khi người dùng đăng nhập lần đầu hệ thống.

Các bản phân phối gần đây thường không có .bash_profile hoặc .bash_login [Ubuntu].

Chúng ta có thể tạo các lệnh tùy chỉnh hoặc sửa đổi lệnh đã có bằng cách tạo bí danh. Các bí danh được đặt trong tệp ~/.bashrc để chúng có sẵn cho bất kỳ shell lệnh nào được tạo.

userdel username
5 loại bỏ một bí danh.

Nhập alias để liệt kê các bí danh được xác định.

Lưu ý : Không nên có bất kỳ khoảng trắng nào ở hai bên của dấu bằng và định nghĩa alias cần được đặt trong dấu ngoặc đơn hoặc dấu ngoặc kép nếu nó chứa bất kỳ khoảng trắng nào.

8. Lệnh chage và lệnh getent

8.1. Lệnh chage

Lệnh

userdel username
6 thay đổi thông tin hết hạn mật khẩu người dùng. Cách dùng lệnh
userdel username
7 như sau:

chage [tuỳ chọn] [login]

Để xem danh sách các tùy chọn có thể được sử dụng bằng lệnh

userdel username
6, hãy sử dụng tùy chọn trợ giúp:
userdel username
9

Ví dụ 1: Sử dụng tùy chọn

groupadd newgroup
0 xem thông tin aging của user root

[root@test1 ~]# chage -l root
Last password change					: Jul 12, 2018
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

Ví dụ 2: Sử dụng tùy chọn

groupadd newgroup
1 để đặt ngày thay đổi mật khẩu cuối cùng thành ngày được chỉ định trong lệnh.

who -a
0

Qua ví dụ trên bạn có thể thấy giá trị của trường 'Last password change' đã được thay đổi thành công từ Jul 15, 2018 thành Mar 01, 2019.

Ví dụ 3: Sử dụng tùy chọn

groupadd newgroup
2 để chỉ định ngày khi tài khoản hết hạn.

who -a
1

Ví dụ 4: Sử dụng tùy chọn

groupadd newgroup
3 hoặc
groupadd newgroup
4 để chỉ định số ngày tối đa và tối thiểu giữa các lần thay đổi mật khẩu.

who -a
2

Ví dụ 5: Sử dụng tùy chọn

groupadd newgroup
5 để đưa ra cảnh báo trước khi mật khẩu hết hạn

who -a
3

8.2. Lệnh getent

Lệnh

groupadd newgroup
6 nhận các mục từ cơ sở dữ liệu administrative. Các cơ sở dữ liệu mà nó tìm kiếm là: ahosts, ahostsv4, ahostsv6, bí danh[aliases], ethers[địa chỉ Ethernet], group, gshadow, hosts, netgroup, networks, passwd, protocols, rpc, services và shadow. Cách dùng lệnh
groupadd newgroup
6 như sau:

who -a
4

Ví dụ 1: Tìm dịch vụ nào đang sử dụng cổng cụ thể

who -a
5

Ví dụ 2: Nhận thông tin cho người dùng đăng nhập hiện tại

who -a
6

Ví dụ 3: Thực hiện tra cứu DNS ngược

who -a
79. File /etc/passwd

File passwd nằm ở thư mục /etc chứa danh sách tài khoản trên hệ thống, cung cấp thông tin về mỗi tài khoản như: User ID, Group ID, Home Directory, Shell…

Định dạng của file /etc/passwd mỗi dòng trong file là thông tin 1 user. Có tất cả 7 trường trên mỗi dòng, các trường được phân tách bởi dấu 2 chấm [ : ]. Dưới đây là 1 ví dụ về thông tin của một user.

Xem dòng đầu tiên của file: /etc/passwd

who -a
8

Ý nghĩa của 7 trường như sau:

  • Trường 1 Username: Tên người dùng, được sử dụng khi user đăng nhập, không nên chứa các ký tự in hoa trong username. Nó cộ độ dài từ 1 đến 32 kí tự.
  • Trường 2 Password: Nếu sử dụng shadow password thì nên sử dụng dấu x hoặc ký tự *
  • Trường 3 User ID [UID]: Đây là 1 chuỗi số duy nhất được gán cho user, hệ thống sử dụng UID hơn là username để nhận dạng user.
  • Trường 4 Group ID [GID]: Là 1 chuỗi số duy nhất được gán cho Group đầu tiên mà user này tham gia.
  • Trường 5 User ID Info: Dùng mô tả người dùng ví dụ như: địa chỉ, sdt,...
  • Trường 6 Home directory: Đường dẫn tuyệt đối đến thư mục mà người dùng sẽ ở khi họ đăng nhập. Nếu thư mục này không tồn tại thì thư mục người dùng sẽ trở thành /
  • Trường 7 Shell: Đường dẫn tuyệt đối của lệnh hoặc shell [/ bin / bash].
10. File /etc/shadow

Gắn với file /etc/passwd là file /etc/shadow. Nó là phương thức khác của Linux để lưu thông tin mật khẩu đăng nhập người dùng trên hệ thống. Thông tin được lưu tại đây sẽ an toàn hơn so với cách lưu trong tập tin /etc/passwd do tập tin này chỉ có tài khoản root hoặc có quyền sudo mới có thể truy cập.

Để xem dòng đầu tiên của file: /etc/shadown

who -a
9

Đối với file /etc/shadow gồm có 8 trường:

  • Trường 1: Chính là username root
  • Trường thứ 2: Chính là password đã được mã hóa. Đây là một thuật toán băm.
  • Trường thứ 3: Là khoảng thời gian [tính bằng ngày] tính từ 1/1/1970 cho tới lần đổi mật khẩu gần nhất.
  • Trường thứ 4: Thời gian tối đa còn cho phép người dùng đổi mật khẩu, nếu là 0 tức là người dùng có thể đổi mật khẩu bất cứ khi nào, nếu là số khác 0, ví dụ 5, tức là người dùng còn 5 ngày nữa có thể đổi mật khẩu.
  • Trường thứ 5: Thời gian hiệu lực tối đa của mật khẩu, nếu là 99999 có nghĩa là vô hạn.
  • Trường thứ 6: Khoảng thời gian trước khi mật khẩu hết hạn, hệ thống sẽ cảnh báo cho người dùng, ở đây là 7, tức là trước khi hết hạn 7 ngày, hệ thống sẽ cảnh báo.
  • Trường thứ 7: Khoảng thời gian tài khoản hết hạn đăng nhập.
  • Trường thứ 8: Thời gian mà tài khoản đã hết hạn đăng nhập tính từ ngày 1/1/1970 [đơn vị tính là ngày].
11. File /etc/group

File /etc/group chứa các thuộc tính nhóm cơ bản. Đây là file ASCII chứa các bản ghi các nhóm trên hệ thống. Mỗi bản ghi xuất hiện trên một dòng duy nhất:

Để xem dòng đầu tiên của file /etc/group

useradd username

passwd username
0

File /etc/group có 4 trường:

  • Trường 1 groupname: Chứa tên được gán cho nhóm.
  • Trường 2 group-password: x trong trường này cho biết mật khẩu shadow được sử dụng.
  • Trường 3 GID: Chứa số GID của nhóm.
  • Trường 4 group-password: Danh sách người dùng là thành viên của nhóm.

Chú ý: Mỗi nhóm có thể có nhiều người dùng. Người dùng cũng có thể thuộc một hay nhiều nhóm.

12. File /etc/skel

File /etc/skel được sử dụng để bắt đầu thư mục chính khi người dùng được tạo lần đầu tiên. Cách bố trí mẫu của các file người dùng của skel được thể hiện dưới đây:

useradd username

passwd username
1

Quyền mặc định của thư mục /etc/skel là drwxr-xr-x. Không nên thay đổi quyền của skel hoặc nội dung của nó. Thay đổi quyền có thể có thể phá vỡ một số chương trình, bởi vì trong thư mục skel có một số cấu hình cần sự cho phép đọc và cấp cho nó quyền thực thi sẽ làm một số chương trình hoạt động.

Chủ Đề