12/08/2018, 12:31

Phân quyền trong Linux

Trong bài viết này tôi sẽ giới thiệu với các bạn cách phân quyền trên linux. Đây là một kỹ thuật không mới nhưng nó có thể hơi trừu tượng với những người mới chuyển từ windown sang Linux. Ngoài ra bài viết còn giới thiệu các kiến thức về loại người dùng, nhóm người dùng trong hệ thống, cách quản ...

Trong bài viết này tôi sẽ giới thiệu với các bạn cách phân quyền trên linux. Đây là một kỹ thuật không mới nhưng nó có thể hơi trừu tượng với những người mới chuyển từ windown sang Linux.
Ngoài ra bài viết còn giới thiệu các kiến thức về loại người dùng, nhóm người dùng trong hệ thống, cách quản lý.
Trước khi đi vào tìm hiểu về cách phân quyền trong hệ thống Linux. Chúng ta hãy cùng tìm hiểu về khái niệm User (người dùng), Group (nhóm người dùng), các lệnh, files liên quan đến User, Group.

1.1. User

User chính là người có thể truy cập đến hệ thống. Một User có username và password. Có hai loại User là Super User (hay thường gọi là Root) và Regular User. Mỗi User còn có một mã UID riêng. Mỗi loại User, mỗi User khác nhau có quyền trong hệ thống khác nhau phụ thuộc vào hệ thống đã thiết lập cho họ những quyền gì, Super User đã cấp cho họ những quyền gì.

1.2. Group

Group là nhóm người dùng hệ thống. Mỗi nhóm có tên và mã GID riêng. Các User trong Group có thể có những quyền trong hệ thống khác nhau nhưng có một tập hợp quyền chung trong hệ thống đặc trưng cho Group đó.

1.3. Các lệnh cơ bản quản lý User và Group

STT Mô tả Cú pháp Ghi chú
1 Tạo User #useradd [option] <username> ,options: -c Thông tin user -d Thư mục cá nhân -m Tạo thư mục cá nhân nếu chưa tồn tại -g nhóm người dùng #useradd -c “Tran Huy Hoang - admin2” –g admin2 tranhoang
2 Sửa thông tin User #usermod [option] <username> options: tương tự với useradd #usermod -g baseadmin tranhoang
3 Xóa người dùng #userdel [option] <username> #userdel -r tranhoang
4 Khóa người dùng #passwd -l <username> #passwd -l tranhoang
5 Mở khóa tài khoản #passwd -u <username> #passwd -u tranhoang
6 Tạo nhóm #groupadd <groupname> #groupadd baseadmin
7 Xóa nhóm #groupdel <groupname> #groupdel baseadmin

2.1. Tổng quan về quyền của các đối tượng trong hệ thống

Một file hay thư mục trong hệ thống có 4 quyền cơ bản sau:

a. Read (r)

Đối với một file thì quyền Read chính là quyền được xem nội dung của file, còn đối với một folder thì quyền Read chính là quyền xem được danh sách các subfolder và file bên trong folder đó.

b. Write (w)

Đối với một file thì quyền Write là cho phép thêm, sửa nội dùng file, còn đối với một folder thì Write cho phép thêm, xóa một subfolder hay file trong thư mục đó.

c. Execute (x)

Đây là quyền thực thi. Đối với một file thì Execute cho phép thực thi file trong trường hợp file này thuộc dạng program hoặc script, còn đối với một folder Execute cho phép cd vào thư mục này.

d. Deny (-)

Không có quyền làm một thao tác gì đó đối với một file hay folder xác định.

2.2. Cách xem sự phân quyền trên một folder, một file

list-permission.png

Như trên ta thấy câu lệnh ls -la liệt kê ra danh sách thư mục và file gồm thư mục hiện tại, thư mục con và file đi cùng với chúng ta thông tin phân quyền
Cột đầu tiên gồm 10 bits thể hiện quyền hạn

drwxr-xr-x 2 root root (1)
-rw-r- -r-- 1 root root notice.txt (2)
Bit 1: thể hiện kiểu file. Ví dụ ở (1) “d” cho biết đó là thư muc, (2) “-” cho biết đó là 1 file thường.
9 bits còn lại: Chia làm 3 nhóm, mỗi nhóm thể hiện quyền hạn cho mỗi loại đối tượng.
Ba bít đầu thể hiện quyền của owner - user sở hữu file này
Ba bít tiếp theo thể hiện quyền của owner group - group sở hữu file này
Ba bit cuối thể hiện quyền của các user khác
Ví dụ trong (2)
Ba bít đầu là “rw-” chỉ ra rằng owner user có quyền đọc (r), sửa (w) file “notice.txt”
Ba bít tiếp là “r--” chỉ ra rằng owner group có chỉ có thể đọc (r) file này và không có quyền khác
Ba bít cuối là “r--” chỉ ra rằng other user có chỉ có thể đọc (r) file này và không có quyền khác

3.2 Thay đổi quyền

Chỉ có User có quyền root hoặc owner user của file mới có thể thay đổi quyền của file đó.
Sử dụng lệnh chmod để thay đổi quyền

chmod <mode> file_name

Trong đó “mode” có thể được viết theo 2 cách là symbolic hoặc octal.

Symbolic mode Octal mode
Mô tả Trong cách này chúng ta có thể thêm “op”,(+), bớt (-), gán (=) các quyền “permissions” (r w x) cho từng nhóm đối tượng “who” (u g o) - (owner user, group, other user) Trong cách này mỗi quyền được thể hiện bằng một số tương ứng - : 0 ,x : 1, w : 2, r :4.,Quyền của mỗi nhóm đối tượng thể hiện ở tổng của các thành phần. Khi gán quyền phải gán cho cả 3 nhóm
Cách dùng Mode = (who) + (op) + (permissions) Ví dụ 644 rw-r–r– 751 rwxr-x–x 775 rwxrwxr-x 777 rwxrwxrwx
Ví dụ chmod g-w notice.txt Bỏ quyền write trên group chmod 644 notice.txt,6 = rw- nghĩa là owner user có quyền đọc ghi file,4 = r-- nghĩa là group chỉ có quyền đọc file,4= r-- nghĩa là other user cũng chỉ có quyền đọc file
Ghi chú Ưu điểm là chúng ta có thể kế thừa quyền cũ Cách này không thể kế thừa quyền cũ nhưng bù lại cú pháp ngắn gọn dễ dùng

3.3. Quyền mặc định và thay đổi quyền mặc định với umask

3.3.1. Giới thiệu về umask

Khi chúng ta tạo ra file hoặc thư mục, mặc định hệ thống gán cho nó 1 quyền mặc định
File: 666 (rw-rw-rw-) (3)
Folder: 777 (rwxrwxrwx) (4)
Vậy nếu chúng ta muốn thay đổi quyền mặc định của một file, folder khi nó được tạo thì phải làm thế nào. Trong linux điều này khá đơn giản, bởi hệ thống cung cấp cho chúng ta một công cụ đó là umask Khi umask được khởi tạo giá trị thì các quyền mặc định sẽ không còn như (3) và (4) nữa.
Mặc định thì umask = 022. Khi đó các quyền mặc định với file và folder được tính lại như sau:
File:
666: rw- rw- rw-
022: --- -w- -w-
644 rw- r-- r--
Folder:
777: rwx rwx rwx
022: --- -w- -w-
755 rwx r-x r-x
Lưu ý: có một trường hợp ngoại lệ, nếu như umask=123 thì quyền mặc định cho file sẽ là 644 chứ không phải là 543.

3.3.2. Cách xem và thay đổi giá trị của umask

Xem giá trị và thay đổi giá trị umask rất đơn giản như ví dụ dưới đây umask.png

3.4 Thay đổi Owner với chown

Cú pháp:

chown <option> [user.group] files/folde

options:
R được sử dụng trong trường hợp muốn đổi tất cả subfolder và files trong thư mục change-owner.png

Bài viết đã giới thiệu các khái niệm, các kỹ thuật cơ bản trong việc phân quyền trong hệ thông Linux. Để nắm rõ hơn các bạn có thể đọc thêm hai trang dưới đây - Đây cũng là hai trang tôi đã tham khảo để thực hiện bài viết này. Rất cám ơn các bạn đã quan tâm đến bài viết của tôi.
Link tham khảo:
https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.linux.org/threads/file-permissions-chmod.4094/

0