12/08/2018, 15:50

Cơ bản về phân quyền cho file trong Linux (phần 1)

Hiện nay, Linux đang ngày càng trở nên phổ biến. Kể từ khi Linus Torvalds công khai mã nguồn của nhân Linux đến nay, càng ngày càng có nhiều lập trình viên trên thế giới quan tâm đến dòng hệ điều hành này. Nhiều công ty đã sử dụng các distro của Linux làm hệ điều hành mặc định cho nhân viên sử ...

Hiện nay, Linux đang ngày càng trở nên phổ biến. Kể từ khi Linus Torvalds công khai mã nguồn của nhân Linux đến nay, càng ngày càng có nhiều lập trình viên trên thế giới quan tâm đến dòng hệ điều hành này. Nhiều công ty đã sử dụng các distro của Linux làm hệ điều hành mặc định cho nhân viên sử dụng. Có thể kể đến các phiên bản đang phổ biến hiện nay như Ubuntu, Fedora, OpenSUSE (cho máy cá nhân), CentOS, RedHat, Debian (cho doanh nghiệp)... Một trong những ưu điểm của Linux là tính năng phân quyền sử dụng trên file. Một tính năng vô cùng mạnh mẽ nhưng cũng rất nguy hiểm nếu chúng ta không hiểu về nó.

Ngày này hầu hết các hệ điều hành phổ biến đều hỗ trợ nhiều người cùng sử dụng đồng thời. Có thể sẽ có người thắc mắc rằng tại sao lại cần hỗ trợ tính năng này khi máy tính của họ chỉ có một người sử dụng. Lý do là vì một hệ điều hành được tạo ra với mục đích càng có nhiều người sử dụng càng tốt. Do vậy có thể một người nào đó không cần hệ điều hành phải hỗ trợ nhiều người sử dụng nhưng những người khác lại cần đến. Tính năng phân quyền được tạo ra là để hỗ trợ cho việc sử dụng đồng thời của hệ điều hành.

Có một câu nói phổ biến là:

Trong Linux mọi thứ đều là file

Khái niệm file trong Linux khá mềm dẻo, kể cả thư mục hay thiết bị cũng được coi như file đặc biệt. Và vì vậy, hệ thống phân quyền sẽ hoạt động trên cả thư mục, thiết bị ....

Trong Linux có 3 nhóm phân quyền chính, không bao nhau:

  • Owner: chỉ cấp quyền cho chủ sở hữu của file.
  • Group: chỉ cấp quyền cho nhóm sở hữu của file.
  • Other: cấp quyền cho những người dùng và nhóm không thuộc 2 nhóm trên.

Tuy nhiên vẫn có 1 ngoại lệ, đó là người dùng root (siêu người dùng). Người dùng này có mọi quyền hạn trên mọi file trong hệ thống, không bị ràng buộc bởi bất cứ sự phân quyền nào. Như mình đã nói trong phần mở đầu, hệ thống phân quyền sẽ rất nguy hiểm nếu bạn không hiểu về nó. VD câu lệnh sau sẽ xóa tất cả file trên hệ thống nếu người thực thi là root

rm -rf /

Do vậy với bất cứ một tác vụ gì phải dùng tới quyền hạn của người dùng root ta nên chắc chắn sẽ không gây hại cho hệ thống thì mới nên sử dụng, hoặc tìm một phương án thay thế mà không cần tới quyền hạn nguy hiểm này.

Với một file, có 3 loại phân quyền cơ bản như trong bảng sau:

Tên quyền Ký hiệu Dạng số Mô tả
Read r 4 Quyền đọc file
Write w 2 Quyền ghi file
Execute e 1 Quyền thực thi file

Ngoài ra có một vài phân quyền đặc biệt như sau:

Tên quyền Ký hiệu Dạng số Mô tả
Setuid/Setguid s 1 Nếu file được thực thi, người thực thi sẽ là chủ sở hữu
Sticky bit t 1 Chỉ chủ sở hữu mới được xóa hoặc thay đổi tên file kể cả khi Other có toàn quyền với file đó

Trong Linux, cách đơn giản nhất để xem phân quyền của một file là sử dụng lệnh ls -l Output của câu lệnh trên sẽ có dạng như sau: -rwxr-x-r-x 1 user group

  • Kí tự - đầu tiên là một cờ đặc biệt để chỉ loại file, - với file thông thường, d với thư mục, c với thiết bị, l với liên kết (liên kết tới một file khác).
  • 3 kí tự rwx đầu tiên là quyền hạn của Owner, ở đây Owner sẽ có mọi quyền với file
  • 3 kí tự r-x ở giữa là quyền hạn của Group, ở đây Group sẽ có quyền đọc và quyền dùng lệnh cd
  • 3 kí tự r-x cuối cùng là quyền hạn của Other, tương tự như Group ở trên sẽ có quyền đọc và dùng lệnh cd
  • Số nguyên đi sau quyền hạn để chỉ số lượng liên kết tới file, ở đây 1 có nghĩa là file này không có liên kết tượng trưng mà chỉ có một liên kết cứng duy nhất trỏ tới chính nó.
  • Cuối cùng là 2 thông tin nói về chủ sở hữu và nhóm sở hữu, ở đây là người dùng user và nhóm group

Trên đây là sơ lược về vấn đề phân quyền cho file trong Linux, ở bài viết tiếp theo mình sẽ trình bày về các phương pháp phân quyền và những lưu ý phân quyền hiệu quả. Đây là lần đầu mình viết bài nên khó tránh khỏi những sơ sót. Hy vọng mọi người có thể góp ý để mình hoàn thiện bài viết hơn. Xin cảm ơn mọi người đã đọc bài viết.

  • https://www.linux.com/learn/understanding-linux-file-permissions
  • https://ryanstutorials.net/linuxtutorial/permissions.php
0