Sunday, June 29, 2014

Phân quyền trong Linux - cách sử dụng của CHMOD và UMASK



1.     Tổng quan về CHMOD


CHMOD là viết tắt của “Change Mode” và nó là lệnh của Linux được sử dụng để thay đổi quyền truy cập tập tin và thư mục. Trong Linux/ Unix, khái niệm về người sử dụng (owner) và nhóm là rất cơ bản, giống như mọi người đều muốn mọi thứ của họ đều được sử dụng một cách đảm bảo an toàn và có tổ chức. Đó là lý do vì sao tất cả tập tin và thư mục có một chủ sở hữu và một nhóm liên kết với nó và họ có quyền truy cập khác nhau để truy cập vào một tập tin cụ thể
·        Quyền chủ sở hữu : Họ xác định những hoạt động chủ sở hữu của tập tin có thể thực thi trên các tập tin.

·        Quyền nhóm : Họ xác định những hoạt động người dùng thuộc nhóm liên kết với tập tin có thể thực thi trên các tập tin.

·        Quyền khác : Học chỉ ra những hoạt động tất cả các người dùng khác có thể hiện trên các tập tin.

Vì vậy, có ba hoạt động cơ bản thực thi trên tập tin/ thư mục mà một người dùng/ nhóm người dùng/ người dùng khác có thể thực hiện trên các tập tin và thư mục

·        Read (r) : Cho phép đọc nội dung của tập tin/ thư mục. Trong trường hợp các thư mục, một người có thể xem tất cả các tập tin và thư mục con thuộc vào thư mục.

·        Write (w) : Cho phép thay đổi nộ dung của tập tin/ thư mục. Trong trường hợp, một người có thể tạo ra một tập tin hoặc thư mục con trong thư mục đó.

·        Execute (x) : Cho phép thực thi một tập tin như một script/program. Thực thi một thư mục! Ví dụ, để sử dụng ls và các lệnh cd trong thư mục nào đó, người dùng phải có quyền truy cập thực thi.

CHMOD gán giá trị số cho quyền Read, Write, Thực thi như sau:
·        Read : 4
·        Write : 2
·        Execute : 1


Vì vậy, các quyền liên quan đến bất kì tập tin/ thư mục trong linux đều có định dạng 3x3 loại quyền (Read, Write, Execute) mà có sẵn cho 3 loại người sử dụng ( chủ sở hữu, nhóm, khác ).


Để quan sát điều này, chỉ cần nhập lệnh ls –l để hiển thị 9 kí tự cho tất cả các tập tin/ thư mục đại diện cho các quyền truy cập cho tất cả a loại người sử dụng.




Ví dụ như : ls -l ftpaddhost:

-rwxr--r--   1 root     bin         7879 Jan 22  2014 ftpaddhost 

Như vậy, đối với file ftpaddhost:

·        Chủ sở hữu có quyền  Read + Write + Execute
·        Nhóm có quyền Read
·        Người dùng khác có quyền Read

2.     Thay đổi quyền tập tin/ thư mục với CHMOD

Để thay đổi các điều khoản liên quan đến các tập tin và thư mục, bạn có thể sử dụng một trong hai cách dưới dạng biểu diễn bát phân (sử dụng số) hoặc ký tự đại diện (sử dụng bảng chữ cái).

Trong biểu diễn bát phân các quyền:

·        Chữ số đầu tiên dành cho chủ sở hữu
·        Chữ số thứ hai dành cho Nhóm
·        Chữ số thứ ba là cho người khác

Ví dụ, chúng ta thấy một lệnh như: chmod 744 helloworld.sh

Tức là, chúng ta đã cho quyền Read+Write+Execute (4+2+1) cho chủ sở hữu, cho quyền Read cho nhóm, cho quyền Read cho người khác.

Bây giờ,nếu chúng ta muốn cung cấp quyền Read+Write (4+2) cho chủ sở hữu, và quyền Read(4) cho nhóm và người sau, chúng ta sẽ cần nhập lệnh sau đây:

chmod 644 <tên file>

Một ví dụ khác, để cung cấp quyền Read + Execute (4+1=5) cho người chủ sở hữu, và không cấp quyền (0) cho nhóm, và quyền Write (2) cho những người khác, nhập vào dòng lệnh sau :

chmod 502 <tên file>

3.     Umask là gì?


Umash, được thiết lập để xác định quyền truy cập cho tập tin/ thư mục khi nó được tạo ra trong một thư mục được thiết lập umask.

Quyền mặc định cho một tập tin là 777 và cho một thư mục là 666.  

Khi một thư mục hoặc file được gán umask thì khi nó được tạo ra, quyền truy cập sẽ được cấp xác định bằng cách lấy giá trị mặc định trừ đi umask. Giá trị mặc định của umask là 002 hoặc 022.

Cuối cùng quyền mặc định cho tập tin và thư mục được xác định như sau:
·        Cho phép tập tin mặc định : 666
·        Cho phép thư mục mặc định : 777
·        Mặc định umask : 022
·        Quyền mặc định cho tệp tin : 644
·        Quyền mặc định cho thư mục : 755

Bạn có thể thay đổi umask đến một giá trị phù hợp dựa trên mục đích của bạn. 
Ví dụ, nếu bạn muốn không ai trừ chủ sở hữu có thể làm bất cứ điều gì với các tập tin/ thư mục bạn cần đặt umask là 0077.


Sau đó, khi bạn tạo ra một file mới thì quyền của file sẽ được xác định là:

777-umask hay 777-077=700

Như vậy, file mới được tạo ra sẽ có quyền rwx------

4.     Biểu diễn tượng trưng

Các biểu diễn tượng trưng được sử dụng cho 3 kiểu đối tượng sử dụng như sau:

·        u được sử  dụng cho người sử dụng/ chủ sở hữu
·        g được sử dụng cho nhóm
·        o được sử dụng cho người khác

Cách sử dụng các biểu diễn tượng trưng

a.      Thêm đơn quyền

Để thay đổi đơn quyền của một tập hợp cụ thể ( chủ sở hữu, nhóm, người khác), chúng ta có thể sử dụng kí tự “+” để thêm quyền

Cú pháp: chmod <tên tập hợp>+<quyền>+<tên file>
Ví dụ: chmod u+x tên file

b.        Thêm nhiều quyền

Cũng tương tự như lệnh trên, bạn chỉ cần tách biệt nhiều quyền bằng dấu phẩy (,)

Cú pháp : chmod <tên nhóm> + <quyền >, <tên nhóm>+<quyền> <tên file>
Ví dụ: chmod g x,o +x <tên file>

Sử dụng lệnh trên, chúng ta có thể thực hiện quyền truy cập vào nhóm và người dùng khác của tệp  tin

c.      Loại bỏ một quyền

Loại bỏ  một quyền dễ dàng như thêm một quyền, chỉ cần nhớ sử dụng “-“ thay vì “+”.

Cú pháp : chmod <tên nhóm> - <quyền> < tên file>
Ví dụ: chmod o-x <tên file>

Ở trên lệnh loại bỏ quyền thực thi từ nhóm người dùng khác của tập tin.

d.     Làm thay đổi cho tất cả

Trong trường hợp chúng tôi thêm hoặc loại bỏ một số điều khoản cho tất cả người sử dụng (chủ sở hữu, nhóm và người khác), chúng ta có thể sử dụng một ký hiệu “a” biểu diễn cho “ tất cả người dùng”

Cú pháp: chmod a<+ hoặc -> <quyền > <tên file>
Ví dụ : chmod a+x <tên file>

Lệnh trên sẽ thêm quyền thực thi cho tất cả người dùng.

e.      Sao chép quyền

Nếu chúng ta muốn tạo quyền của tập tin/ thư mục tương tự, chúng ta có thể làm điều đó bằng cách sử dụng tùy chọn reference. Ví dụ, chúng ta muốn áp dụng quyền của myfile 1 tới một tập tin khác là myfile2, sẽ sử dụng lệnh sau đây:

Ví dụ : chmod – reference = myfile1 myfile2

f.       Áp dụng thay đổi tất cả các nội dung của một thư mục

Nếu chúng ta muốn áp dụng một số thây đổi cụ thể với cả tất cả tập tin bên trong một thư mục, chúng ta có thể sử dụng tùy chọn –R để biển diễn hoạt động đệ quy

Cú pháp : chmod –R <thư mục> 

Trong bài viết này tôi đã trình bày các kiến thức cơ bản về quyền của file/thư muc, và cách sử dụng CHMOD cũng như ý nghĩa của UMASK. Hãy đưa ra các bình luận nếu bạn có đóng góp hoặc trao đổi gì thêm nhé :D

-- Jukai Helios -&- O-k-k-O --

No comments:

Post a Comment