Trong bài viết này tôi sẽ nói về quản lý quyền truy cập vào các tập tin. Khi quyền sở hữu và thành viên nhóm cho một tệp tin hoặc thư mục được thiết lập, Linux cho phép một số quyền truy cập dựa trên các thiết lập đó. Phần này tôi sẽ hướng dẫn cách mà Linux xử lý các thiết lập quyền cơ bản mà bạn có thể gán cho bất kỳ tệp tin hoặc thư mục nào trên hệ thống của bạn.
Kiểm soát quyền truy cập vào tệp
1.Tìm hiểu về quyền
Chúng ta sẽ sử dụng lệnh sau để hiển thị thông tin về file và bao gồm tất cả cài đặt quyền của nó
ls -l
Trong đó:
Chuỗi quyền (rw-r–r–)
Số lượng Hard link (1)
File owner (root)
File groupt (root)
File size, filename, ngày sửa đổi cuối cùng
Như các bạn thấy ở trên có 10 ký tự, chúng ta sẽ có bảng sau để hiểu hơn kí tự đầu tiên
Ba ký tự đầu tiên trong chuỗi quyền biểu thị quyền của chủ sở hữu (hoặc người dùng) theo thứ tự đọc, ghi và thực thi. Dấu gạch ngang (-) chỉ ra rằng quyền không được thiết lập, trong khi các chữ cái “r”, “w” hoặc “x” chỉ ra rằng quyền đọc, ghi hoặc thực thi được thiết lập, tương ứng
Ba ký tự tiếp theo biểu thị quyền của nhóm cho tệp tin. Nó cũng tuân theo thứ tự đọc, ghi và thực thi, với dấu gạch ngang chỉ ra rằng quyền không được thiết lập. Người dùng không phải là chủ sở hữu của tệp tin nhưng thuộc vào nhóm của tệp tin sẽ được cấp quyền này đến tệp tin
Ba ký tự cuối cùng biểu thị quyền được gán cho các tài khoản người dùng không phải là chủ sở hữu hoặc là thành viên hiện tại của nhóm của tệp tin
2.Thay đổi mode của file với chmod (change mode)
chmod là một lệnh cấp hệ thống, cho phép bạn thay đổi cài đặt quyền của file theo cách thủ công
Quyền truy cập file Linux có thể được hiển thị ở hai định dạng
Định dạng đầu tiên được gọi là symbolic notation (ký hiệu tượng trưng), là một chuỗi gồm 10 ký tự: Một ký tự đại diện cho loại file và 9 ký tự đại diện cho các quyền đọc (r), ghi (w) và thực thi (x) của file theo thứ tự chủ sở hữu, nhóm, và những người dùng khác. Nếu không được phép, biểu tượng dấu gạch ngang (-) sẽ được sử dụng
-rw-r--r--
Ví dụ:
Định dạng thứ hai được gọi là numeric notation (ký hiệu số), là một chuỗi gồm ba chữ số, mỗi chữ số tương ứng với user, nhóm và các quyền khác. Mỗi chữ số có thể nằm trong khoảng từ 0 đến 7 và mỗi giá trị của chữ số có được bằng cách tính tổng các quyền của lớp
Để dễ hình dung hơn các bạn có thể nhìn hình dưới đây
Lệnh chmod có định dạng đơn giản:
chmod [permissions] [file]
Quyền có thể được cung cấp trong ký hiệu số, đây là định dạng tốt nhất để sử dụng khi bạn muốn gán quyền cụ thể cho tất cả các lớp:
chmod 644 example.txt
VD: Khi set quyền 777 nghĩa là rwxrwxrwx, file sẽ được toàn quyền như đọc, viết, thực thi
chmod 777 example.txt
3. Umask
Theo mặc định, trên các hệ thống Linux, quyền tạo mặc định 666 dành cho tệp, quyền này cấp quyền đọc và ghi cho người dùng, nhóm và những người khác và 777 cho các thư mục, có nghĩa là quyền đọc, ghi và thực thi đối với người dùng, nhóm và những người khác. Linux không cho phép tạo tệp với quyền thực thi.
Umask là một “bit mask” đặt các bit quyền trên những file mới. Trên các hệ thống Linux, đó là một lệnh độc lập, mặc dù những shell hiện đại như Bash hoặc Zsh bao gồm nó như một lệnh tích hợp. Umask mặc định là 022.
Bảng sau chỉ ra một số ví dụ
Mask | Quyền mặc định cho file | Quyền mặc định cho thư mục |
000 | 666 (rw-rw-rw-) | 777 (rwxrwxrwx) |
002 | 664 (rw-rw-r–) | 775 (rwxrwxr-x) |
007 | 660 (rw-rw—-) | 770 (rwxrwx—) |
022 | 644 (rw-r–r–) | 755 (rwxr-xr-x) |
027 | 640 (rw-r—–) | 750 (rwxr-x—) |
077 | 600 (rw——-) | 700 (rwx——) |
277 | 400 (r——–) | 500 (r-x——) |
003 | 664 (rw-rw-r–) | 774(rwxrwxr–) |
Ví dụ: để tính toán mức độ umask 022 ảnh hưởng đến các tệp và thư mục mới được tạo, hãy sử dụng:
- Files: 666 – 022 = 644 (rw-r- -r- -). Chủ sở hữu có thể đọc và sửa đổi các tệp. Nhóm và những người khác chỉ có thể đọc các tệp.
- Thư mục: 777 – 022 = 755 (rwxr-xr-x). Chủ sở hữu có thể cd vào thư mục và liệt kê, đọc, sửa đổi, tạo hoặc xóa các tệp trong thư mục. Nhóm và những người khác có thể cd vào thư mục và liệt kê và đọc các tệp.
Ví dụ: Hiển thị umask của thư mục
umask $$ umask -S
Ví dụ: Chúng ta umask của folder umask1 và các file bên trong là 022, chúng ta muốn đặt các quyền hạn chế hơn cho các tệp và thư mục mới được tạo để những người khác sẽ không thể truy cập cd vào các thư mục và đọc tệp. Các quyền chúng ta muốn 750 (rwxr-x- – -) dành cho thư mục và 640 (rw-r- – – – -) file. Giá tri umask = 777 – 750 = 027
umask 027
mkdir umask1
Như các bạn thấy khi chúng ta sử dụng umask 027 và tạo folder umask1 thì quyền của folder sẽ thành 750 như nêu ở bên trên.
4. File permission advanced
- SUID ( Set user ID)
Được sử dụng trên các file thực thi (executable files) để cho phép việc thực thi được thực hiện dưới owner của file thay vì thực hiện như user đang loggin trong hệ thống. SUID cũng có thể được sử dụng để thay đổi ownership của files được tạo hoặc di chuyển nó đến một thư mục mà owner của nó sẽ là owner của thư mục chuyển đến thay vì là owner nó được tạo ra.
“s” ở đây biểu thị SUID. Ví dụ nếu một file được sở hữu bởi user root và được set SUID bit, thì bất kể ai thực thi file, nó sẽ luôn chạy với các đặc quyền của user root
chmod u+s [file_name]
Hoặc command
chmod 4xyz [file_name] (xyz ví dụ như 777, 664,..vv)
2. SGID (Set group ID)
Cũng tương tự như SUID, được sử dụng trên các file thực thi (executable files) để cho phép việc thực thi được thực hiện dưới owner group của file thay vì thực hiện như group đang loggin trong hệ thống. SGID cũng có thể được sử dụng để thay đổi ownership group của files được tạo hoặc di chuyển nó đến một thư mục mà owner group của nó sẽ là owner group của thư mục chuyển đến thay vì là group nó được tạo ra.
Nếu được đặt trên một thư mục, bất cứ files nào tạo trong thư mục đó sẽ được cấp quyền cho group sở hữu
“s” biểu thị SGID. Khi một thư mục có quyền SGID được sử dụng để tạo file mới, file mới sẽ tự động kế thừa nhóm của thư mục, không phụ thuộc vào nhóm của người tạo ra file.
chmod g+s [file_or_folder_name]
Hoặc command
chmod 2xyz [file_name] (xyz ví dụ như 777, 664,..vv)
3. Sticky bit
Được sử dụng cho các thư mục chia sẻ, mục đích là ngăn chặn việc người dùng này xóa file của người dùng kia. Chỉ duy nhất owner file (và root) mới có quyền rename hay xóa các file, thư mục khi nó đã được set sticky bit. sticky bit được môt tả bằng chữ cái “t” ở dòng cuối cùng của hiển thị permission.
VD: sticky bit cho file a.txt với 1 trong 2 command dưới đây
chmod +t a.txt
chmod 1777 a.txt
Cảm ơn các bạn đã theo dõi 3 phần quản lý file system trong Linux.
Danh sách bài viết:
Quản lý file và thư mục trong Linux (phần 1)
Quản lý file và thư mục trong Linux (phần 2)