Phân quyền (Permission) trên Linux

0
4143

Việc phân quyền trên File và thư mục là một trong những yêu cầu cơ bản nhất đối với những ai sử dụng máy tính. Tiếp theo bài viết Quản trị User – Group trên Linux. Oktot.com gởi đến các bạn bài hướng dẫn Phân quyền trên Linux. Bài viết nằm trong series bài hướng dẫn Linux từ cơ bản đến nâng cao, hy vọng nó sẽ giúp ích cho các bạn.

Linux là một hệ điều hành đa người dùng, do đó vấn đề phân quyền truy xuất trên hệ thống file là rất quan trọng.

Để xem được quyền hạn ứng với một file cụ thể, ta có thể dùng lệnh ls -l.

Các Quyền hạn truy xuất tập tin: Read(r hoặc 4), Write(w hoặc 2), Execute(x hoặc 1)

*Đối tượng cấp quyền có thể là: Owner, group owner, other users
*Các lệnh thường dùng để Thay đổi quyền hạn:
*Lệnh chmod: thay đổi quyền hạn đối với file
*Cú pháp: #chmod [option] [MODE ] <file or thu muc>
*#chmod 755 text.txt
*Lệnh chown: thay đổi quyền sở hữu file
*Cú pháp: #chown [option] user:group < file or thu muc >
*#chown apache:apache web_directory
*Lệnh chgrp: thay đổi nhóm sở hữu
*Cú pháp: #chgrp [option] <group> < file or thu muc >
*#chgrp –c giaovien text.txt

Chuẩn bị:

  • Tạo group & user
ketoan (kt1, kt2)
kinhdoanh (kd1, kd2)
nhanvien (kt1, kt2, kd1, kd2)

LAB: Tạo cây thư mục và phân quyền như sau:
image001
1. Khảo sát các permission
– Login kt1

#cd /data/ketoan                                 //ok
#ll
#mkdir /data/ketoan/kt1                      //không có quyền tạo thư mục
  • Default: user có thể truy cập vào tất cả các thư mục có trên hệ thống.

– Login root
#ll /data

image002

Permission được phân thành 3 nhóm:

– User: cấp cho user chủ sở hữu
– Group: cấp cho nhóm chủ sở hữu
– Other: cấp cho các user không phải là chủ sở hữu
hoặc là thành viên của nhóm chủ sở hữu
r: read = 4
w: write (tạo, xóa, sửa) = 2
x: excute = 1
d: directory
– : deny

2.  gán quyền chủ sở hữu cho group
– gán cho group ketoan là chủ sở hữu thư mục /data/ketoan
#chgrp ketoan /data/ketoan
#ll /data                        //khảo sát lại chủ sở hữu của thư mục /data/ketoan
#chgrp kinhdoanh /data/kinhdoanh
#chgrp nhanvien /data/dulieu
#chgrp nhanvien /data/software

3.  gán quyền chủ sở hữu cho user
– gán cho user kt1 là chủ sở hữu thư mục /data/ketoan

#chown kt1 /data/ketoan

#ll /data                        //khảo sát lại chủ sở hữu của thư mục /data/ketoan
– user kt1 tạo thư mục trong /data/software

#mkdir /data/ketoan/kt1                      //ok

4.  cấp phát quyền
Who                 option              permission
U                     +                      r                       +: thêm quyền
G                     –                       w                     -: gở bỏ quyền
O                     =                      x                      a: all (O, U, G)
a
– Cấp thêm quyền write cho group ketoan để group này có quyền full trên thư mục /data/ketoan
#chmod g+w /data/ketoan
#ll /data                        //khảo sát lại quyền của group ketoan trên thư mục /data/ketoan
Login kt1 tạo thư mục trong thư mục /data/ketoan: ok
Login kd1 truy cập thư mục /data/ketoan: ok -> phải gở bỏ quyền read
– Gở bỏ quyền read, excute cho các user khác trên thư mục /data/ketoan
#chmod o-rx /data/ketoan
#ll /data                        //khảo sát lại quyền của other trên thư mục /data/ketoan
Login kd1 truy cập thư mục /data/ketoan: ok -> phải gở bỏ quyền read
Login kd1 truy cập thư mục /data/ketoan: không được phép

* Thư mục /data/kinhdoanh
#chgrp kinhdoanh /data/kinhdoanh
#chmod g+w /data/kinhdoanh
#chmod o-rx /data/kinhdoanh
* Thư mục /data/dulieu
#chgrp nhanvien /data/dulieu
#chmod g+w /data/dulieu
#chmod o-rx /data/dulieu
* Thư mục /data/software
#chgrp nhanvien /data/software
#chmod u-w /data/software

5.  Sử dụng số nhị phân đề cấp phát quyền
– Mỗi bit tương ứng 1 quyền (1: allow, 0: deny)
– Nhóm 3 bit biểu biễn thành một số thập phân
            Vd:       r w x ó 111 = 4 + 2 + 1 = 7
– Thư mục /data/ketoan cấp quyềnnhư sau: user: r w x ; group: r w x ; other: r – x
#chmod –R 775 /data/ketoan
#ll /data                        //khảo sát lại quyền trên thư mục /data/ketoan
#chmod –R 070 /data/ketoan
#ll /data                        //khảo sát lại quyền trên thư mục /data/ketoan

6.  umask

Giá trị Mask sẽ “che đi” một số bit trong Base Permission để tạo ra quyền truy cập chính thức cho file (tương tự như cơ chế của subnet mask).

Cụ thể, quyền truy cập chính thức được tính bằng cách lấy “giá trị nhị phân của Base permission ”AND“ dạng biểu diễn bù 1 của mask”
Ví dụ:

Vì Base Permission của file bất kỳ luôn là 666 (tức 110110110 khi chuyển sang dạng nhị phân), nên nếu giá trị mask là 022 (có dạng nhị phân là 000010010 => dạng bù 1 của nó thì chuyển 1->0, 0->1 nên ta được 111101101) thì quyền truy nhập chính thức của file sẽ là:

110 110 110 AND 111 101 101 = 110 100 100 = 644 (rw-r–r–)
Cũng có thể tính quyền truy cập chính thức đơn giản hơn bằng cách lấy 666 – 022 = 644

7.  stickey bit

– Được sử dụng cho các thư mục share để nhằm mục đích ngăn chặn user rename file hay delete file của user khác.
– Chỉ có những user có thể rename hay delete file bên trong các folder đã được thiết lập sticky bit là ower của file, owner của thư mục hay user root.

– Khi stickby được thiết lập thì sẽ xuất hiện chữ “t” nằm ở vị trí cuối cùng của câu lệnh hiển thị permission

Ví dụ:
– Ta tạo ra folder Test_sticky
[root@linux /]# mkdir Test_sticky
[root@linux /]# ls -l / | grep -i “test_sticky”
drwxr-xr-x 2 root root 4096 Dec 10 18:56 Test_sticky

– Chuyển owner và group owner cho user student
[root@linux /]# chown student:student Test_sticky/
[root@linux /]# ls -l / | grep -i “test_sticky”
drwxr-xr-x 2 student student 4096 Dec 10 18:56 Test_sticky

– Tạo thêm group student_test và tạo thêm user student 1 thuộc group student, user student3 thuộc group student_test
[root@linux /]# groupadd student_test
[root@linux /]# useradd -g student student1
[root@linux /]# useradd -g student_test student3

– Sử dụng user student tạo ra một file là test.sticky.txt
[root@linux Test_sticky]# su student
[student@linux Test_sticky]$ pwd
/Test_sticky
[student@linux Test_sticky]$ seq 10000 > test.sticky.txt
[student@linux Test_sticky]$ ls -lh
total 52K
-rw-rw-r– 1 student student 48K Dec 10 19:00 test.sticky.txt

– Gán Sticky bit cho file này bằng câu lệnh chmod +t test.sticky.txt
[student@linux Test_sticky]$ chmod +t test.sticky.txt
[student@linux Test_sticky]$ ls -l
-rw-rw-r-T 1 student student 48894 Dec 10 19:00 test.sticky.txt
==> xuất hiện chữ T

– Kiểm tra: ta thử chuyển sang user student1 là user thuộc group student. Thực hiện hành động read và write trên file test.sticky.txt thành công. Nhưng không xóa được file

[root@linux Test_sticky]# su student1
[student1@linux Test_sticky]$ id
uid=502(student1) gid=501(student) groups=501(student) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[student1@linux Test_sticky]$ ls -l
total 52
-rw-rw-r-T 1 student student 48894 Dec 10 19:00 test.sticky.txt
[student1@linux Test_sticky]$ head –n 3 test.sticky.txt
1
2
3
[student1@linux Test_sticky]$ rm -rf test.sticky.txt
rm: cannot remove `test.sticky.txt’: Permission denied

– Chuyển sang user student3 là một user thuộc group student_test. User này có thể đọc được file nhưng không write hay delete file được.
[root@linux Test_sticky]# su student3
[student3@linux Test_sticky]$ id
uid=504(student3) gid=502(student_test) groups=502(student_test) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[student3@linux Test_sticky]$ rm -rf test.sticky.txt
rm: cannot remove `test.sticky.txt’: Permission denied
[student3@linux Test_sticky]$ echo 0 > test.sticky.txt
bash: test.sticky.txt: Permission denied

This site uses Akismet to reduce spam. Learn how your comment data is processed.