Trong chương này, sẽ thảo luận chi tiết về quyền đối với tệp và các chế độ truy cập trong Unix. Quyền sở hữu tệp là một thành phần quan trọng của Unix cung cấp một phương pháp bảo mật để lưu trữ tệp. Mọi tệp trong Unix đều có các thuộc tính sau:
- Quyền của chủ sở hữu – Quyền của chủ sở hữu xác định những hành động mà chủ sở hữu tệp có thể thực hiện trên tệp .
- Quyền của nhóm – Quyền của nhóm xác định những hành động nào mà người dùng, là thành viên của nhóm mà tệp thuộc về, có thể thực hiện trên tệp .
- Các quyền khác (thế giới) – Các quyền dành cho người khác cho biết hành động mà tất cả những người dùng khác có thể thực hiện trên tệp.
Các chỉ số cho phép
Trong khi sử dụng lệnh ls -l , nó sẽ hiển thị các thông tin khác nhau liên quan đến quyền đối với tệp như sau:
$ls -l /home/amrood
-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile
drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir
Ở đây, cột đầu tiên đại diện cho các chế độ truy cập khác nhau, tức là quyền được liên kết với một tệp hoặc một thư mục.
Các quyền được chia thành các nhóm ba và mỗi vị trí trong nhóm biểu thị một quyền cụ thể, theo thứ tự sau: read (r), write (w), execute (x) –
- Ba ký tự đầu tiên (2-4) đại diện cho các quyền đối với chủ sở hữu tệp. Ví dụ: -rwxr-xr– biểu thị rằng chủ sở hữu có quyền đọc (r), ghi (w) và thực thi (x).
- Nhóm thứ hai gồm ba ký tự (5-7) bao gồm các quyền cho nhóm mà tệp thuộc về. Ví dụ: -rwxr-xr– biểu thị rằng nhóm có quyền đọc (r) và thực thi (x), nhưng không có quyền ghi.
- Nhóm ba ký tự cuối cùng (8-10) đại diện cho quyền đối với những người khác. Ví dụ, -rwxr-xr– biểu thị rằng có quyền chỉ đọc (r) .
Chế độ truy cập tệp
Quyền của một tệp là tuyến phòng thủ đầu tiên trong bảo mật của hệ thống Unix. Các khối xây dựng cơ bản của quyền Unix là quyền đọc , ghi và thực thi , được mô tả bên dưới:
Đọc
Cấp khả năng đọc, tức là xem nội dung của tệp.
Viết
Cấp khả năng sửa đổi hoặc xóa nội dung của tệp.
Hành hình
Người dùng có quyền thực thi có thể chạy một tệp dưới dạng chương trình.
Chế độ truy cập thư mục
Các chế độ truy cập thư mục được liệt kê và tổ chức theo cách giống như bất kỳ tệp nào khác. Có một số khác biệt cần được đề cập –
Đọc
Truy cập vào một thư mục có nghĩa là người dùng có thể đọc nội dung. Người dùng có thể xem tên tệp bên trong thư mục.
Viết
Access có nghĩa là người dùng có thể thêm hoặc xóa các tệp khỏi thư mục.
Hành hình
Thực thi một thư mục không thực sự có ý nghĩa, vì vậy hãy coi đây là một quyền truy cập.
Người dùng phải có quyền truy cập thực thi vào thư mục bin để thực hiện lệnh ls hoặc lệnh cd .
Thay đổi quyền
Để thay đổi quyền đối với tệp hoặc thư mục, bạn sử dụng lệnh chmod (thay đổi chế độ). Có hai cách để sử dụng chmod – chế độ tượng trưng và chế độ tuyệt đối.
Sử dụng chmod trong Chế độ tượng trưng
Cách dễ nhất để người mới bắt đầu sửa đổi quyền đối với tệp hoặc thư mục là sử dụng chế độ tượng trưng. Với các quyền tượng trưng, bạn có thể thêm, xóa hoặc chỉ định bộ quyền mà bạn muốn bằng cách sử dụng các toán tử trong bảng sau.
Sr.No. | Mô tả và toán tử Chmod |
1 | + Thêm (các) quyền được chỉ định vào một tệp hoặc thư mục. |
2 | – Xóa (các) quyền được chỉ định khỏi tệp hoặc thư mục. |
3 | = Đặt (các) quyền được chỉ định. |
Đây là một ví dụ sử dụng testfile . Chạy ls -1 trên tệp thử nghiệm cho thấy rằng các quyền của tệp như sau:
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Sau đó, mỗi lệnh chmod ví dụ từ bảng trước được chạy trên tệp thử nghiệm, theo sau là ls –l , vì vậy bạn có thể thấy các thay đổi quyền –
$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Đây là cách bạn có thể kết hợp các lệnh này trên một dòng duy nhất
$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Sử dụng chmod với Quyền tuyệt đối
Cách thứ hai để sửa đổi quyền với lệnh chmod là sử dụng một số để chỉ định từng bộ quyền cho tệp.
Mỗi quyền được gán một giá trị, như bảng sau hiển thị và tổng số của mỗi nhóm quyền cung cấp một số cho nhóm đó.
Con số | Biểu diễn quyền bát phân | Tham khảo |
0 | Không cho phép | — |
1 | Thực thi quyền | –x |
2 | Quyền viết | -w- |
3 | Thực thi và ghi quyền: 1 (thực thi) + 2 (ghi) = 3 | -wx |
4 | Quyền đọc | r– |
5 | Quyền đọc và thực thi: 4 (đọc) + 1 (thực thi) = 5 | rx |
6 | Quyền đọc và ghi: 4 (đọc) + 2 (viết) = 6 | rw- |
7 | Tất cả các quyền: 4 (đọc) + 2 (ghi) + 1 (thực thi) = 7 | rwx |
Đây là một ví dụ sử dụng tệp thử nghiệm. Chạy ls -1 trên tệp thử nghiệm cho thấy rằng các quyền của tệp như sau:
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Sau đó, mỗi lệnh chmod ví dụ từ bảng trước được chạy trên tệp thử nghiệm, theo sau là ls –l , vì vậy bạn có thể thấy các thay đổi quyền
$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 043 testfile
$ls -l testfile
----r---wx 1 amrood users 1024 Nov 2 00:10 testfile
Thay đổi chủ sở hữu và nhóm
Trong khi tạo tài khoản trên Unix, nó chỉ định ID chủ sở hữu và ID nhóm cho mỗi người dùng. Tất cả các quyền được đề cập ở trên cũng được chỉ định dựa trên Chủ sở hữu và Nhóm.
Hai lệnh có sẵn để thay đổi chủ sở hữu và nhóm tệp –
- chown – Lệnh chown là viết tắt của “thay đổi chủ sở hữu” và được sử dụng để thay đổi chủ sở hữu của tệp.
- chgrp – Lệnh chgrp là viết tắt của “change group” và được sử dụng để thay đổi nhóm của một tệp.
Thay đổi quyền sở hữu
Lệnh chown thay đổi quyền sở hữu của một tệp. Cú pháp cơ bản như sau:
$ chown user filelist
Giá trị của người dùng có thể là tên của người dùng trên hệ thống hoặc id người dùng (uid) của người dùng trên hệ thống. Ví dụ sau sẽ giúp bạn hiểu khái niệm
$ chown amrood testfile
$
Thay đổi chủ sở hữu của tệp đã cho thành người dùng .
LƯU Ý – Người dùng cấp cao, root, có khả năng không hạn chế để thay đổi quyền sở hữu của bất kỳ tệp nào nhưng người dùng bình thường chỉ có thể thay đổi quyền sở hữu của những tệp mà họ sở hữu.
Thay đổi quyền sở hữu nhóm
Lệnh chgrp thay đổi quyền sở hữu nhóm của một tệp. Cú pháp cơ bản như sau:
$ chgrp group filelist
Giá trị của nhóm có thể là tên của một nhóm trên hệ thống hoặc ID nhóm (GID) của một nhóm trên hệ thống. Ví dụ sau giúp bạn hiểu khái niệm
$ chgrp special testfile
$
Thay đổi nhóm của tệp đã cho thành nhóm đặc biệt .
Quyền đối với tệp SUID và SGID
Thường thì khi một lệnh được thực thi, nó sẽ phải được thực thi với các đặc quyền đặc biệt để hoàn thành nhiệm vụ của nó.
Ví dụ: khi bạn thay đổi mật khẩu của mình bằng lệnh passwd , mật khẩu mới của bạn sẽ được lưu trữ trong tệp / etc / shadow .
Là một người dùng thông thường, bạn không có quyền đọc hoặc ghi vào tệp này vì lý do bảo mật, nhưng khi bạn thay đổi mật khẩu của mình, bạn cần có quyền ghi vào tệp này. Điều này có nghĩa là chương trình passwd phải cung cấp cho bạn các quyền bổ sung để bạn có thể ghi vào tệp / etc / shadow .
Các quyền bổ sung được cấp cho các chương trình thông qua cơ chế được gọi là bit Đặt ID người dùng (SUID) và Đặt ID nhóm (SGID) .
Khi bạn thực thi một chương trình đã bật bit SUID, bạn kế thừa các quyền của chủ sở hữu chương trình đó. Các chương trình không có bộ bit SUID được chạy với quyền của người dùng đã khởi động chương trình.
Đây cũng là trường hợp của SGID. Thông thường, các chương trình thực thi với quyền nhóm của bạn, nhưng thay vào đó, nhóm của bạn sẽ được thay đổi chỉ đối với chương trình này thành chủ sở hữu nhóm của chương trình.
Các bit SUID và SGID sẽ xuất hiện dưới dạng ký tự “s” nếu có quyền. Bit “s” của SUID sẽ nằm trong các bit quyền nơi thường có quyền thực thi của chủ sở hữu . Ví dụ, lệnh
$ ls -l /usr/bin/passwd
-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*
$
Cho thấy rằng bit SUID được đặt và lệnh thuộc sở hữu của người gốc. Một chữ cái viết hoa S ở vị trí thực thi thay vì chữ thường s chỉ ra rằng bit thực thi không được đặt.
Nếu bit dính được bật trên thư mục, các tệp chỉ có thể bị xóa nếu bạn là một trong những người dùng sau –
- Chủ sở hữu của thư mục dính
- Chủ sở hữu của tệp đang bị xóa
- Người dùng siêu cấp, root
Để đặt các bit SUID và SGID cho bất kỳ thư mục nào, hãy thử lệnh sau:
$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname
$