Phân quyền SUID SGID STICKY-BIT – LINUX

bởi | LPI

Home » LPI » Phân quyền SUID SGID STICKY-BIT – LINUX

Khái niệm

– SUID: Nó sẽ cho phép file và folder luôn được thực thi dưới quyền Owner. ví dụ ls -l 1 file có quyền này sẽ thấy rws ở quyền uid (thêm quyền: chmod 4755 hoặc chmod u+s)
– SGID: File đã được tạo trong folder luôn có group owner đã được thiết lập và không bị ảnh hưởng bởi group owner của user tạo file . (thêm quyền: chmod 2755 hoặc chmod g+s)
– STICKY-BIT : Chỉ cho phép user owner và user root có quyền “rename” và “delete” file, ghi đè file. cho dù user khác cùng chung 1 group ower cũng không thực hiện được quyền này  (thêm quyền: chmod 1755 hoặc chmod o+t)

Cấu hình SGID

– Ta thiết lập user và group như các dòng lệnh bên dưới.
[root@server ~]# groupadd hocvien
[root@server ~]# useradd -g hocvien u1
[root@server ~]# useradd -g hocvien u2
[root@server ~]# useradd batky
– Thực hiện tạo ra folder shared và thay đổi giá trị group owner của folder shared là group hocvien
[root@server ~]# mkdir /shared
[root@server ~]# ls -ld /shared/
drwxr-xr-x 2 root root 4096 Jun 17 06:22 /shared/
[root@server ~]# chgrp hocvien /shared
=> thay doi Group Owner cua folder Shared thanh “hocvien”
[root@server ~]# ls -ld /shared/
drwxr-xr-x 2 root hocvien 4096 Jun 17 06:22 /shared/
– Phân quyền cho folder này là 777. Để các user khác có thể vào đây tạo và xóa file
[root@server ~]# chmod 777 /shared
– Đăng nhập vào máy linux bằng user1 và thực hiện tạo dữ liệu
[root@server ~]# su u1
[u1@server root]$ cd
[u1@server ~]$ cd /shared
[u1@server shared]$ echo u1 > u1_file.txt
[u1@server shared]$ ls -l
total 4
-rw-r–r– 1 u1 hocvien 3 Jun 17 06:27 u1_file.txt
– Đăng nhập vào máy linux bằng user2 và thực hiện tạo dữ liệu
[root@server ~]# su u2
[u2@server root]$ cd
[u2@server ~]$ cd /shared/
[u2@server shared]$ echo u2 > u2-file.txt
[u2@server shared]$ ls -l
total 8
-rw-r–r– 1 u1 hocvien 3 Jun 17 06:27 u1_file.txt
-rw-r–r– 1 u2 hocvien 3 Jun 17 06:28 u2-file.txt
– Đăng nhập vào máy linux bằng user batkty và thực hiện tạo dữ liệu
[root@server ~]# su batky
[batky@server root]$ cd /shared/
[batky@server shared]$ echo batky > batky-file.txt
– Thực hiện kiểm tra quyền ứng với các file do các user tạo ra.
[root@server shared]# ls -l
total 12
-rw-rw-r– 1 batky batky 6 Jun 17 06:28 batky-file.txt
-rw-r–r– 1 u1 hocvien 3 Jun 17 06:27 u1_file.txt
-rw-r–r– 1 u2 hocvien 3 Jun 17 06:28 u2-file.txt

– NHU CẦU TA MUỐN GIÁ TRỊ “GROUP OWNER” LUÔN LÀ “GROUP GIAOVIEN”, TRONG TRƯỜNG HỢP USER THUỘC GROUP SINHVIEN VÀ USER BATKY THỰC HIỆN GHI DỮ LIỆU. VÀ GROUP GIAOVIEN CÓ QUYỀN QUẢN LÝ

– Ta tạo ra group “giaovien” và chgrp cho folder /shared
[root@server ~]# groupadd giaovien
[root@server ~]# chgrp giaovien /shared
[root@server ~]# ls -ld /shared/
drwxrwxrwx 2 root giaovien 4096 Jun 17 06:28 /shared/

– Cấu hình kích hoạt tính năng SGID ở trên folder /shared
[root@server ~]# chmod g+s /shared
[root@server ~]# ls -ld /shared/
drwxrwsrwx 2 root giaovien 4096 Oct 31 19:54 /shared/
– Kiểm tra lại việc tạo dữ liệu ở user u1, user u2 và user batky
[u1@server shared]$ echo u11 > u11_file.txt
=> u1 thực hiện tạo file mới.
[u1@server shared]$ mkdir u1_folder
=> u1 thực hiện tạo file mới.
[u2@server shared]$ echo u22 > u22-file.txt
=> u2 thực hiện tạo folder mới.
[batky@server shared]$ echo batky > batky-1-file.txt
=> user batky tạo file mới
– Thực hiện kiểm tra quyền của các file mới vừa được tạo ra
[root@server shared]# ls -l
total 28
-rw-rw-r– 1 batky giaovien 6 Jun 17 06:44 batky-1-file.txt
-rw-rw-r– 1 batky batky 6 Jun 17 06:28 batky-file.txt
-rw-r–r– 1 u1 giaovien 4 Jun 17 06:43 u11_file.txt
-rw-r–r– 1 u1 hocvien 3 Jun 17 06:27 u1_file.txt
drwxr-sr-x 2 u1 giaovien 4096 Jun 17 06:44 u1_folder
-rw-r–r– 1 u2 giaovien 4 Jun 17 06:44 u22-file.txt
-rw-r–r– 1 u2 hocvien 3 Jun 17 06:28 u2-file.txt
=> các file mới tạo ra đều có group-owner là giaovien

– Thực hiện kiểm tra update nội dung file, đăng nhập vào ở user u1 và chỉnh sửa file “u1_file.txt”
[u1@server shared]$ ls -l
-rw-rw-r– 1 batky giaovien 6 Jun 17 06:44 batky-1-file.txt
-rw-rw-r– 1 batky batky 6 Jun 17 06:28 batky-file.txt
-rw-r–r– 1 u1 giaovien 4 Jun 17 06:43 u11_file.txt
-rw-r–r– 1 u1 hocvien 7 Jun 17 06:46 u1_file.txt
drwxr-sr-x 2 u1 giaovien 4096 Jun 17 06:44 u1_folder
-rw-r–r– 1 u2 giaovien 4 Jun 17 06:44 u22-file.txt
-rw-r–r– 1 u2 hocvien 3 Jun 17 06:28 u2-file.txt
[u1@server shared]$ touch u1_file.txt
[u1@server shared]$ ls -l
-rw-rw-r– 1 batky giaovien 6 Jun 17 06:44 batky-1-file.txt
-rw-rw-r– 1 batky batky 6 Jun 17 06:28 batky-file.txt
-rw-r–r– 1 u1 giaovien 4 Jun 17 06:43 u11_file.txt
-rw-r–r– 1 u1 hocvien 7 Jun 17 06:47 u1_file.txt
drwxr-sr-x 2 u1 giaovien 4096 Jun 17 06:44 u1_folder
-rw-r–r– 1 u2 giaovien 4 Jun 17 06:44 u22-file.txt
-rw-r–r– 1 u2 hocvien 3 Jun 17 06:28 u2-file.txt
=> ta thấy quyền group owner không thay đổi.

Cấu hình STICKY-BIT

– Tạo group giaovien và tạo user g1 và g2 thuộc giaovien. Và tạo folder baigiang
[root@server ~]# groupadd giaovien
[root@server ~]# useradd -g giaovien g1
[root@server ~]# useradd -g giaovien g2
[root@server ~]# mkdir /baigiang
[root@server ~]# ls -ld /baigiang
drwxr-xr-x 2 root root 4096 Jun 17 07:03 /baigiang
– Thay đổi owner của folder baigiang là g1 và group owner là giaovien
[root@server ~]# chown g1:giaovien /baigiang
[root@server ~]# ls -ld /baigiang
drwxr-xr-x 2 g1 giaovien 4096 Jun 17 07:03 /baigiang
– Phân quyền group giaovien có quyền Read Write Execute
[root@server ~]# chmod 775 /baigiang
[root@server ~]# ls -ld /baigiang/
drwxrwxr-x 2 g1 giaovien 4096 Jun 17 07:03 /baigiang/
=> user g1 vào /baigiang và tạo file.
=> user g2 có thể vào “write, delete, rename”
– LÚC CHƯA GÁN STICKY-BIT, user g1 tạo file và user g2 có thể vào xóa
file và rename file.
+ User g1 tạo file “u1_baigiang.txt””
[root@server ~]# su g1
[g1@server root]$ cd /baigiang/
[g1@server baigiang]$ echo baigiang > u1_baigiang.txt
[g1@server baigiang]$ echo baigiang > u1_baigiang2.txt
[g1@server baigiang]$ ls -l
-rw-r–r– 1 g1 giaovien 9 Jun 17 07:14 u1_baigiang2.txt
-rw-r–r– 1 g1 giaovien 9 Jun 17 07:08 u1_baigiang.txt
+ User g2 có thể “thay đổi” nội dung file “u1_baigiang.txt” và “Rename” file
“u1_baigiang.txt”
[g2@server baigiang]$ vi u1_baigiang.txt
#them noi dung
wq! ==> ghi đè
[g2@server baigiang]$ ls -l
-rw-r–r– 1 g1 giaovien 9 Jun 17 07:14 u1_baigiang2.txt
-rw-r–r– 1 g2 giaovien 16 Jun 17 07:15 u1_baigiang.txt
=>> đã ghi đè và đổi uid của file u1_baigiang.txt thành uid g2
[g2@server baigiang]$ mv u1_baigiang2.txt u2_baigiang2.txt
[g2@server baigiang]$ ls -l
-rw-r–r– 1 g2 giaovien 16 Jun 17 07:15 u1_baigiang.txt
-rw-r–r– 1 g1 giaovien 9 Jun 17 07:14 u2_baigiang2.txt
=> đã thực hiện thành công việc rename file u1_baigiang2.txt
[g2@server baigiang]$ rm -rf u1_baigiang2.txt
=> Xoa file u1_baigiang2.txt

– CẤU HÌNH STIKCY BIT VÀO FOLDER “BAI GIANG”
[root@server ~]# chmod o+t /baigiang/
[root@server ~]# ls -ld /baigiang/
drwxrwxr-t 2 g1 giaovien 4096 Jun 17 07:19 /baigiang/
+ User g1 thực hiện tạo file “g1_baigiangmoi.txt”
[g1@server ~]$ cd /baigiang/
[g1@server baigiang]$ echo baigiangmoi > g1_baigiangmoi.txt
[g2@server ~]$ cd /baigiang/
[g2@server baigiang]$ ls -l
-rw-r–r– 1 g1 giaovien 12 Jun 17 07:21 g1_baigiangmoi.txt
+ User g2 thực hiện quá trình Rename tên file và Fail
[g2@server baigiang]$ mv g1_baigiangmoi.txt g2_baigiang.txt
mv: cannot move ‘g1_baigiangmoi.txt’ to ‘g2_baigiang.txt’: Operation not permitted
+ User g2 không thể thể thực hiện quá trình xóa file của file g1
[g2@server baigiang]$ rm -rf g1_baigiangmoi.txt
rm: cannot remove ‘g1_baigiangmoi.txt’: Operation not permitted
[g2@server baigiang]$ vi g1_baigiangmoi.txt
#Test thu voi cau lenh “wq!”