Tải bản đầy đủ (.docx) (19 trang)

Huong dan phan quyen cho user, tap tin, thu muc tren linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (369.74 KB, 19 trang )

Bài 8. Phân quyền cho user, tập tin, thư mục
8.1 Cấu trúc hệ thống tập tin
Khái niệm tập tin trong Linux được chia ra làm 3 loại chính:
+ Tập tin chứa dữ liệu bình thường.
+ Tập tin thư mục.
+ Tập tin thiết bị.
Ngoài ra Linux còn dùng các Link (hard-link, soft-link) và Pipe như là các tập tin đặc biệt.
Để kiểm chứng những thông tin, tạo thư mục /abc. Trong thư mục abc tạo 2 file là 1.txt và 2.txt.

Thực hiện lại lệnh liệt kê danh sách tập tin thư mục của /abc:


Các thông tin từ trái sang phải của phần thể hiện ở trên sẽ như sau:
- Cột 1 ("-rw-r--r--" hoặc "drwxr-xr-x"): Chỉ ra quyền truy cập của tập tin hay thư mục.
+ Ký tự đầu tiên ("-" trong ("-rw-r--r--" hoặc "d" trong "drwxr-xr-x") chính là loại tập tin, thư mục.

-

Tập tin thông thường

b

Thiêt bị ngoài vi dạng
block (như ổ đĩa cứng)

c

Thiết bị ngoại vi dạng
ký tự (như bàn phím)

d



Thư mục

l

Tập tin liên kết

+ Các ký tự tiếp theo trong cột đầu tiên ("rw-r--r--" trong ("-rw-r--r--" hoặc "rwxr-xr-x" trong "drwxr-xr-x" chính là
quyền của tập tin thư mục. Chú ý là quyền này được chia thành 3 nhóm. 1 nhóm gồm 3 ký tự.

Theo ví dụ "rw-r-có quyền rw, nhóm chủ
quyền r.

Owner:

Group:

Other:

user chủ sở hữu

group chủ sở hữu

rw-r--r--

rw-

r--

r--


rwxr-xr-x

rwx

r-x

r-x

r--" thì user chủ sở hữu
sở hữu và other có


Nói cách khác, sẽ có 3 đối tượng chính là {owner, group, other} và mỗi đối tượng ứng với 3 quyền cụ thể
{read, write, execute}.
Quyền read cho phép đọc nội dung của tập tin. Đối với thư mục, quyền đọc cho phép di chuyển vào thư
mục và xem nội dung của thư mục.
Quyền write cho phép thay đổi nội dung hay xóa tập tin. Đối với thư mục, quyền write cho phép tạo, xóa,
thay đổi tên các tập tin trong thư mục không phục thuộc vào quyền cụ thể của tập tin trong thư mục. Như vậy,
quyền write của thư mục sẽ vô hiểu hóa các quyền truy cập của tập tin trong thư mục.
Quyền execute cho phép gọi chương trình lên bộ nhớ bằng cách nhập từ bàn phím tên của tập tin. Đối với
thư mục, có thể vào thư mục bởi lệnh cd nếu có quyền thực thi với thư mục.

0 hoặc --

Không có quyền

4 hoặc r--

Quyền đọc


2 hoặc -w-

Quyền ghi

1 hoặc --x

Quyền thực thi

Song song với các ký hiệu miêu tà bằng ký tự ở trên, quyền hạn truy cập còn có thể biểu diễn dưới dạng
3 số. Nếu tính từ bên trái qua thì số đầu tiên đại diện cho quyền của Owner, số thứ hai đại diện cho quyền của
Group, số thứ 3 đại diện cho quyền Other. Mỗi số là một nhóm 3 bit. Quyền hạn cho từng loại người dùng sử
dụng một số có 3 bit tương ứng cho 3 quyền read, write và execute. Theo đó nếu cấp quyền thì bit đó là 1,
ngược lại là 0 (không cấp quyền). Giá trị nhị phân của số 3 bit này xác định các quyền cho nhóm người đó.


Bit 2

Bit 1

Bit 0

Read

Write

Execut
e

Ví dụ khi thiết lập quyền 751 có nghĩa là: owner có quyền read, write, và execute (4+2+1=7), group có

quyền read và execute (4+1=5) và other chỉ có quyền execute (1).
Cụ thể hơn khi cấu hình, có thể chuyển đổi giữa thập phân, nhị phân. Bảng sau sẽ chỉ ra điều này:

Quyền

Ý nghĩa

---

Không có mọi quyền

--x

Quyền thực thi

-w-

Quyền ghi

-wx

Ghi và thực thi

r--

Quyền đọc

r-x

Đọc và thực thi


rw-

Đọc và ghi

rwx

Toàn quyền

Nếu quay lại ví dụ trên:


Do đang đăng nhập bằng user root nên user root có quyền trên thư mục abc và 2 tập tin 1.txt và 2.txt.
Quyền của user root đối với 1.txt là rw-r--r--. Điều này nghĩa là owner root có quyền đọc và ghi, group và other
chỉ có quyền đọc.
+ Cột 2 (1): chỉ số liên kết (link) đối với tập tin.
+ Cột 3, 4 (root root ): chỉ chủ sở hữu và nhóm sở hữu.
+ Cột 5 (0): chỉ kích thước của tập tin.
+ Cột 6 (Oct 15 15:52): chỉ thời gian thay đổi cuối cùng.
+ Cột 7 (1.txt, 2.txt): chỉ tập tin hay thư mục.

8.2 Lệnh thay đổi quyền chủ sở hữu (Owner)
Cấn chú ý là các lệnh liên quan đến thay đổi quyền sở hữu thì phải thực hiện trên user chủ sở hữu trên
chính tập tin hay thư mục đó hoặc user root.
Cú pháp: [root@localhost Desktop]#chown [user] [tập tin thư mục]
Ví dụ: logon bằng user root và tạo file test.txt. test.txt. Thay đổi quyền sở hữu file test.txt cho user u2.


Nếu muốn thay đổi chủ sở hữu cho một thư mục và các thư mục con bên trong thì dùng option -R cho
lệnh chown.

Ví dụ: logon bằng user root và tạo cấu trúc sau /teo/ti/xyz.txt. Thay đổi quyền sở hữu /teo cho user u2.

8.3 Lệnh thay đổi quyền nhóm chủ sở hữu (group)
Cú pháp: [root@localhost Desktop]#chgrp [nhóm] [tập tin thư mục]


Ví dụ: thay đổi nhóm sở hữu của /test.txt cho nhóm kinhdoanh

Tương tự như lệnh chown thì nếu muốn thay đổi chủ sở hữu cho một thư mục và các thư mục con bên
trong thì dùng option -R cho lệnh chgrp.
Ví dụ: thay đổi nhóm sở hữu của /teo/ti/xyz.txt cho nhóm kinhdoanh

8.4 Lệnh thay đổi quyền (đọc, ghi, thực thi) của tập tin thư mục
Cú pháp: [root@localhost Desktop]#chmod [+ quyền theo ký tự] [tập tin thư mục]
Hoặc
Cú pháp: [root@localhost Desktop]#chmod [quyền theo số thập phân] [tập tin thư mục]
Ví dụ 1: Kiểm tra quyền hiện tại của /test.txt và thêm quyền thực thi cho /test


Ví dụ 2: Kiểm tra quyền hiện tại của /teo/ti/xyz.txt và sửa quyền thành 750 cho /teo/ti/xyz.txt. Quyền 750
nghĩa là user chủ sở hữu có đọc, ghi và thực thi, group chủ sở hữu có quyền đọc và thực thi, còn other thì không
có quyền.

8.5 Quyền mặc định (default permissions)
Umask (user mask) được sử dụng để kiểm soát quyền mặc định của các files, thư mục mới khi nó được
tạo ra. Có thể gán umask mặc định trong /etc/bashrc hoặc /etc/profile cho tất cả các users. Phần lớn các distro
đều gán là 022 hoặc 002. Để gán umask cho một user xác định nào đó, bạn có thể chỉnh sửa etc/bashrc của
user đó.
Thực hiện mở file /etc/bashrc bằng cat hoặc vi:



Trong Linux, khi một file hay một thư mục được tạo ra thì các quyền hạn truy cập đối với chúng là (read,
write, execute) cho các chủ thể (owner, group, other) sẽ được xác định dựa trên hai giá trị là quyền truy nhập
cơ sở (base permission) và mặt nạ (mask). Đối với thư mục, quyền truy cập cơ sở là 0777(rwxrwxrwx), còn đối
với files là 0666 (rw-rw-rw).
Giá trị “mask” được thiết lập nhờ lệnh umask (quan sát hình ở trên). Tất cả các file và thư mục được tạo
ra sau đó sẽ chịu ảnh hưởng của giá trị mask mới.
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" <=> "quyền truy cập mặc định" AND "(NOT (Giá trị umask))".
Ví dụ:


Bash permission của file: 666 = 110110110
umask: 022 = 000010010
NOT (umask) = NOT (000010010 ) = 111101101
110 110 110 AND 111 101 101 = 110 100 100 = 644.
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 Bash permission – umask (666 –
022 = 644). Nhưng chỉ đúng với thư mục.
Còn với file thì Bash permission – umask. Sau đó số nào chẵn giữ nguyên, số nào lẻ thì giảm đi 1.
Nếu giá trị umask mặc định cho user thường là 002 thì quyền hạn truy cập mặc định cho thư mục
là 775 và file là 664.
Còn nếu giá trị umask mặc định cho user thường là 0022 thì quyền hạn truy cập mặc định cho thư mục
là 755 và file là 644.

8.6 Quyền đặc biệt
Ngoài các quyền cho Owner, Group, Other thì còn có các quyền đặc biệt. Các quyền đặc biệt này bap
gồm: SUID (Set User ID), SGID (Set Group ID), Sticky bit.

SUID


SGID

Sticky

8.6.1 SUID (Set User ID)

Owner

Owner

Owner

Group

Group

Group

Other

Other

Other


SUID (Set User ID): Nếu SUID bit được thiết lập cho một ứng dụng, những file có thể thực thi bằng người
nào đó, điều này có nghĩa là một người dùng khác không phải là chủ sở hữu của ứng dụng cũng có thể sử chạy
như chính chủ sở hữu. Hãy xem một ví dụ:

rws: nghĩa là câu lệnh thay đổi mật khẩu passwd đã được thiết lập SUID bit.

Tuy passwd thuộc root nhưng vì đã được thiết lập SUID bit nên người dùng khác cũng có thể thực
hiện passwd (tất nhiên chỉ có thể thay đổi mật khẩu của chính user thực hiện passwd).
Ví dụ cụ thể:
Liệt kê thư mục /root của user root bằng tài khoản thường u2 sẽ nhận được thông báo lỗi.

Thiết lập lại SUID bit như sau:


Hoặc có thể sùng luôn lệnh sau:

Thử liệt kê thư mục /root của user root bằng tài khoản thường u2.

Vậy khi có quyền thực thi thì:


Vậy khi không có quyền thực thi thì:

8.6.2 SGID (Set Group ID)
SGID (Set Group ID) Bit: SGID bit rất hữu ích khi phải trao quyền truy cập directory cho một nhóm các
users trong 1 group. Khi SGID bit được kích hoạt trên 1 directory, toàn bộ file trong directory cấp dưới được tạo
bởi bất cứ người dùng nào đều có group permission giống với parent directory.
Xét ví dụ sau:
Tạo thư mục /test:

Phân thêm quyền SGID cho /test


Hoặc có thể sùng luôn lệnh sau:

Vào tài khoản thường u2 tạo thư mục và kiểm tra:


Khi có quyền thực thi:


Khi không có quyền thực thi:

8.6.3 Sticky bit
Một khi sticky bit được kích hoạt, chỉ owner của file đó mới có thể remove hoặc rename file, bất chấp
những người sử dụng khác có full permission trên file đó.
Vào lại thư mục dulieu trong /test và phân quyền Sticky bit cho thư mục dữ liệu.


Vào tài khoản thường u2, tạo 1 file trong thư mục dulieu và kiểm tra owner và group của file vừa tạo.

Quay lại tài root và đổi quyền group owner cho u2.

Vào tài khoản thường u2 lại, xóa và đổi tên file tailieu.txt được. Đồng thời tạo được file tailieukhac.txt.


Vào một tài khoản thường khác u1 thì sẽ không thực hiện được điều này.

Khi có quyền sticky:


Khi không có quyền sticky:

Bảng tổng kết cách chmod SUID, SGID, Sticky bit

Cấu hình theo ký tự


Cấu hình thep số

SUID

chmod +s [tên file]

chmod 4XXX [tên file]

SGID

chmod +g [tên file]

chmod 2XXX [tên file]

Quyền


Sticky bit

chmod +t [tên file]

chmod 1XXX [tên file]



×