Unix / Linux - Chế độ Quyền / Truy cập Tệp

Trong chương này, chúng ta 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:

  • Owner permissions - Quyền của chủ sở hữu xác định những hành động nào mà chủ sở hữu tệp có thể thực hiện trên tệp.

  • Group permissions - 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.

  • Other (world) permissions - Các quyền dành cho người khác cho biết tất cả những người dùng khác có thể thực hiện hành động nào trên tệp.

Các chỉ số cho phép

Trong khi sử dụng ls -l , nó hiển thị các thông tin khác nhau liên quan đến quyền 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-- đại diện 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-- đại diện 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-- thể hiện rằng có read (r) sự cho phép duy nhất.

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àread, writeexecute quyền, đã đượ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ể nhìn vàofilenames 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 tệp khỏi thư mục.

Hành hình

Việc 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ó execute Truy cập vào bin thư mục để thực thi ls hoặc là cd chỉ huy.

Thay đổi quyền

Để thay đổi tệp hoặc quyền thư mục, bạn sử dụng chmod(thay đổi chế độ) lệnh. 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 quyền tượng trưng, ​​bạn có thể thêm, xóa hoặc chỉ định bộ quyền 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 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. Đang chạyls -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 ví dụ chmod lệnh từ bảng trước được chạy trên tệp thử nghiệm, tiếp theo là ls –l, vì vậy bạn có thể thấy các thay đổi về 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 Viết quyền -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. Đang chạyls -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 ví dụ chmod lệnh từ bảng trước được chạy trên tệp thử nghiệm, tiếp theo là ls –l, vì vậy bạn có thể thấy các thay đổi về 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 một owner ID và một group IDcho từng 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 - Sự chown lệnh là viết tắt của "change owner" và được sử dụng để thay đổi chủ sở hữu của tệp.

  • chgrp - Sự chgrp lệnh là viết tắt của "change group" và được sử dụng để thay đổi nhóm của tệp.

Thay đổi quyền sở hữu

Các chownlệnh 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à name of a user trên hệ thống hoặc user id (uid) của một 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 amrood.

NOTE - Người dùng siêu cấp, 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

Các chgrplệnh 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à name of a group trên hệ thống hoặc the group ID (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 special nhóm.

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 passwd lệnh, mật khẩu mới của bạn đượ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ó read hoặc là writetruy cập 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àpasswd chương trình 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 một cơ chế được gọi là Set User ID (SUID)Set Group ID (SGID) chút ít.

Khi bạn thực thi một chương trình có bit SUID được bật, 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ỉ cho 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 chữ cái "s"nếu sự cho phép có sẵn. SUID"s" bit sẽ được đặt trong các bit quyền nơi chủ sở hữu ' execute quyền thường tồn tại.

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 hoaS ở 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
$