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)
Chuẩn bị:
- Tạo group & user
kinhdoanh (kd1, kd2)
nhanvien (kt1, kt2, kd1, kd2)
LAB: Tạo cây thư mục và phân quyền như sau:
1. Khảo sát các permission
– Login kt1
#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
Permission được phân thành 3 nhóm:
– 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
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
– gán cho user kt1 là chủ sở hữu thư mục /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
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
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ụ:
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
– 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
[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