Mình là dev web và việc phân chia quyền hạn cho mỗi user rất quan trọng, nhằm đảm bảo tính bảo mật cũng như tránh xung đột giữa hành vi của các user với nhau.

Xem và Quản lý user - group và phân quyền trên linux

2021-01-02 10636 lượt xem

User trong linux

1 cách dễ hiểu thì windows có user đăng nhập vào hệ thống thì linux cũng có user y chang bên windows. và cái linux thì có super user ( root ) và user cùi bắp được tạo ra do super user ng ta gọi là các regular user.  và 1 nùi user gom lại để có chung 1 vài quyền hạn thì gọi là group user

super user root

Trong hệ điều hành Linux, root là tài khoản khi cài hệ điều hành linux là có sẵn luôn. Nó là tài khoản tối thượng và bố thích làm gì thì làm. chỉ việc thêm chữ sudo trước câu lệnh mình muốn thực thi với quyền root. ví dụ: 

$ sudo apt-get update
# hoặc 1 câu lệnh khác để chạy lệnh sudo cho các lệnh sau đó
$ su 

Regular user

Regular user là các user được tạo ra từ super user root. mỗi user khi được tạo ra cũng sẽ có 1 group chứa nó. user root cũng có 1 group chứa nó. 

Group User

Khi bạn tạo ra 1 user thì tương ứng bạn cũng có 1 group cũng được tạo ra. và 1 group là để chứa nhiều user cùng làm 1 điều gì đó giống nhau.

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 groupadd:

$ sudo groupadd admin
$ sudo groupadd manager

Quyền hạn

Trong linux thì sẽ có dạng như sau: 

  • Owner (người sở hữu).
  • Group owner (nhóm sở hữu).
  • Other users (những người khác).

từ đó chúng ta sẽ có các quyền hạn khác nhau mặc định như sau: 

  • Read – r – 4  : cho phép đọc nội dung.
  • Write – w – 2  : dùng để tạo, thay đổi hay xóa.
  • Execute – x – 1  : thực thi chương trình.

Để dễ nhớ các số 1 , 2 , 4 thì mình thường nhớ vì lệnh execute thường được sử dụng nên số nhỏ nhất là 1. còn quyền write thì W hay còn gọi là vê kép ( kép là 2 ). Quyền read có 4 kí tự.

Trước khi phân tích quyền thì bạn xem ảnh này:

Khi bạn gọi lệnh xem quyền linux sẽ show cho bạn 1 dãy gồm 10 chữ số. khi đó vị trí: 

  • 0 - chỉ định danh file hay folder
  • 1,2,3 - chỉ định quyền người sở hữu ( là ngừoi tạo ra nó )
  • 4,5,6  - chỉ định quyền của những user trong group đó
  • 7,8,9 - chỉ định quyền của những user khác không nằm trong group .

khi mình chạy câu lệnh: 

ls -l 

thì mình sẽ thấy được các quyền của file được liệt kê như sau 

 

bạn để ý đoạn đầu -rw-r--r-- . Mình sẽ có tổng cộng 10 vị trí trong chuỗi -rw-r--r--  mình sẽ hiểu là : đây là file. người tạo là hero, group là admin.

  • User hero có quyền đọc, ghi ( không có quyền exec ) vì có khúc rw-
  • những user khác nằm trong group admin chỉ có quyền đọc ( không có quyền ghi và thực thi ) vì có khúc r--
  • những user khác không nằm trong admin và không phải hero thì chỉ có quyền đọc ( không có quyền ghi và thực thi ) vì có khúc r--

Thay đổi quyền

Chỉ có user có quyền root, hoặc user là owner của file mới có thể thay đổi quyền của file đó. Cú fap:

$ chmod [mode] [file]

Trong đó “mode” có thể được viết theo 2 cách: symbolic hoặc octal mode và trong bài viết này mình chỉ nói về octal mode đơn giản vif mình thích. ok? 😆😆😆😆😆

với phương pháp octal mode thì mỗi quyền được thể hiện bằng 1 số tương ứng cao nhất là 7. 

  • – : 0
  • x : 1
  • w : 2
  • r : 4

Quyền sẽ được tính tổng trên từng nhóm, vd: r(4)+w(2)+x(1)=7.

Khi gán quyền phải gán cho cả 3 nhóm.

ví dụ quyền và số octal

751 =====> rwxr-x–x
755 =====> rwxr-xr-x
777 =====> rwxrwxrwx

Ví dụ chmod

# gán quyền 644 trên file.
$ chmod 644 [path-file]

Quyền mặc định

lúc bạn tạo mới 1 folder hay 1 file thì file sẽ có quyền mặc định là 666 còn folder có quyền mặc định là 777

Đổi người sở hữu

Đổi ngừoi sở hữu đôi khi cũng là 1 cách để thay đổi quyền 😂😂😂😂

$ chown [-R] [user.group] [path-file]

-R : đổi tất cả files và thư mục con. và nhờ có lệnh trên chúng ta có thể thay đổi tất cả user hoặc group hoặc cả user và group 

ví dụ: 

# đổi user owner qua hero 
$ chown hero nginx.conf
# đổi group owner qua kana
$ chown .kana nginx.conf
# đổi user qua hero và group qua kata
$ chown hero.kata nginx.conf

Xem bạn là user nào trong linux

đôi khi bạn thao tác rất ngầu nhưng bạn đâu biết bạn là ai. vậy linux cung cấp cho bạn câu lệnh để biết bạn là ai trong hệ thống. 

$ whoami

xem group bạn đang thuộc về

Lệnh đáng nhớ nhất để liệt kê tất cả các nhóm mà người dùng là thành viên là lệnh groups. Khi được thực thi mà không có đối số, lệnh sẽ in ra danh sách tất cả các nhóm mà người dùng hiện đang đăng nhập thuộc về:

$ groups <username>
# ví dụ
$ groups  

Liệt kê Usertrên Linux

$ cat /etc/passwd

Liệt kê các Group trên Linux

$ cat /etc/group