Kiến thức cơ bản về quyền truy cập: chmod
, chown
, umask
1. Khái niệm quyền truy cập
Khi bạn làm việc với file hay thư mục trong Linux, sẽ có lúc bạn cần quản lý quyền truy cập. Hãy tưởng tượng bạn để tất cả đôi vớ của mình ở chỗ ai cũng thấy, và giờ đây cả nhà đều có thể dùng chúng! Quyền truy cập trong Linux cho phép ngăn chặn việc "sử dụng trái phép vớ" (hay cái gì quan trọng hơn, ví dụ như script của bạn). Nào, chúng ta bắt đầu tìm hiểu thôi.
Mỗi file (và thư mục) trong Linux đều có ba nhóm quyền truy cập, giúp xác định ai có thể đọc, ghi hoặc thực thi chúng:
- Đọc (r): Cho phép xem nội dung file hoặc danh sách file trong thư mục.
- Ghi (w): Cho phép thay đổi nội dung file hoặc thêm/xóa file khỏi thư mục.
- Thực thi (x): Cho phép chạy file như một chương trình (hoặc vào thư mục).
Mô hình ba cấp
Mỗi quyền được áp dụng cho ba nhóm người dùng:
- Chủ sở hữu (owner): Người đã tạo ra file.
- Nhóm (group): Người dùng trong nhóm được gán cho file.
- Người khác (others): Tất cả người dùng khác trong hệ thống.
Ví dụ về quyền truy cập của một file:
-rwxr-xr--
Giải thích:
- Ký tự đầu tiên
-
chỉ ra rằng đây là file (với thư mục sẽ làd
). - Ba ký tự đầu tiên
rwx
— quyền của chủ sở hữu (đọc, ghi, thực thi). - Ba ký tự tiếp theo
r-x
— quyền của nhóm (đọc, thực thi). - Ba ký tự cuối cùng
r--
— quyền của người khác (chỉ đọc).
2. Lệnh chmod
: quản lý quyền truy cập
Định dạng ghi ký tự
Lệnh chmod
thay đổi quyền truy cập đối với tập tin và thư mục. Định dạng ghi ký tự trông như sau:
chmod [ai][hành_động][quyền] tên_tập_tin
- Ai:
u
(chủ sở hữu),g
(nhóm),o
(người khác),a
(tất cả). - Hành động:
+
(thêm quyền),-
(xóa quyền),=
(đặt quyền chính xác). - Quyền:
r
(đọc),w
(ghi),x
(thực thi).
Ví dụ:
# Thêm quyền thực thi cho tất cả mọi người
chmod a+x script.sh
# Thêm quyền ghi chỉ cho nhóm
chmod g+w file.txt
# Xóa quyền đọc của người khác
chmod o-r document.txt
Định dạng ghi bát phân
Định dạng bát phân (hay cấu trúc số) ngắn gọn hơn nhưng cần hiểu rõ "ma thuật số". Trong định dạng này, mỗi kết hợp quyền được biểu thị bằng một số:
r = 4
w = 2
x = 1
Quyền được cộng lại:
rwx = 7
(4 + 2 + 1)rw- = 6
(4 + 2)r-- = 4
Định dạng ghi:
chmod [số][số][số] tên_tập_tin
Ví dụ:
# Đặt quyền rwx cho chủ sở hữu, r-x cho nhóm, r-- cho người khác
chmod 754 file.sh
3. Thay đổi chủ sở hữu tệp: lệnh chown
Nếu bạn cần chuyển tệp cho người dùng khác (hoặc nhóm), lệnh chown
sẽ giúp bạn.
Định dạng:
chown [người_dùng]:[nhóm] tên_tệp
Ví dụ:
# Chuyển quyền sở hữu cho người dùng user1
chown user1 myfile.txt
# Chuyển cả chủ sở hữu và nhóm
chown user1:group1 myfile.txt
# Chỉ thay đổi nhóm
chown :group2 myfile.txt
4. Mặt nạ mặc định: umask
Khi bạn tạo một file, quyền truy cập cho nó được hệ thống xác định. Ví dụ, quyền có thể là rw-r--r--
. Nhưng chúng được lấy từ đâu? Câu trả lời: từ lệnh umask
.
umask
là gì?
umask
xác định những quyền nào sẽ không được thiết lập cho các file mới.
Ví dụ:
- Bộ quyền cơ bản cho file:
666
(không có thực thi). - Mặt nạ:
022
. - Quyền cuối cùng:
644
(666 - 022
).
Các lệnh:
- Xem mặt nạ hiện tại:
umask
- Thiết lập mặt nạ mới:
umask 0022
Ví dụ:
# Thiết lập mặt nạ để các file mới có quyền rw-rw-r--
umask 0002
5. Quyền admin và sudo
Sudo là gì sudo
?
sudo
(viết tắt của "superuser do") — là một lệnh trong Linux và các hệ thống tương tự Unix, cho phép người dùng thực thi các lệnh dưới dạng siêu người dùng (root) hoặc một người dùng khác có quyền cao hơn.
Hệ thống sudo
cung cấp quyền truy cập tạm thời vào các chức năng quản trị mà không cần làm việc liên tục dưới tài khoản root, điều này giảm nguy cơ thay đổi hệ thống một cách ngẫu nhiên hoặc độc hại.
Để dễ hiểu, sudo được viết trước lệnh bạn muốn thực hiện với quyền admin.
Sudo hoạt động như thế nào sudo
?
Thực thi lệnh:
Khi bạn nhập lệnh với sudo
, hệ thống sẽ kiểm tra xem người dùng của bạn có quyền chạy lệnh với quyền cao hơn hay không.
Ví dụ:
sudo apt update
Xác thực:
Khi sử dụng sudo
lần đầu tiên trong phiên hiện tại, hệ thống sẽ yêu cầu nhập mật khẩu của người dùng hiện tại (không phải root).
Sau khi nhập thành công mật khẩu, hệ thống sẽ lưu trữ xác thực trong một thời gian ngắn (thường là 5-15 phút) để không yêu cầu mật khẩu cho từng lệnh.
Thực hiện lệnh:
Nếu người dùng có quyền được chỉ định trong cấu hình sudo
, lệnh sẽ được thực hiện với quyền siêu người dùng.
Các chức năng và lệnh chính của sudo
Chạy lệnh với quyền cao:
sudo <command>
Ví dụ:
sudo apt install nginx
Thực hiện lệnh dưới tên người dùng khác: Sử dụng flag -u
:
sudo -u <tên_người_dùng> <command>
Ví dụ:
sudo -u user1 ls /home/user1
Lấy terminal với quyền admin: Khởi chạy shell với quyền root:
sudo -i
hoặc:
sudo su
Xem cấu hình sudo
:
sudo -l
Hiển thị các lệnh mà người dùng hiện tại có quyền thực thi.
Chỉnh sửa cấu hình sudo
:
sudo visudo
Lệnh này mở file cấu hình /etc/sudoers
để chỉnh sửa an toàn.
6. Ví dụ
Hãy thử áp dụng kiến thức của chúng ta vào thực tế.
Bài tập 1: Quản lý quyền với chmod
Tạo một tệp:
touch myfile.txt
Đặt quyền đọc, ghi và thực thi cho chủ sở hữu:
chmod u+rwx myfile.txt
Thêm quyền chỉ đọc cho những người khác:
chmod o+r myfile.txt
Kiểm tra quyền:
ls -l myfile.txt
Bài tập 2: Đổi chủ sở hữu với chown
Tạo một tệp:
touch ownedfile.txt
Thay đổi chủ sở hữu thành người dùng
user1
(cần quyền admin):sudo chown user1 ownedfile.txt
Kiểm tra thay đổi:
ls -l ownedfile.txt
Bài tập 3: Thử nghiệm với umask
Kiểm tra mask hiện tại:
umask
Đặt mask thành
027
:umask 027
Tạo một tệp mới:
touch newfile.txt
Kiểm tra quyền của tệp vừa tạo:
ls -l newfile.txt
7. Lỗi phổ biến và đặc điểm
- Quên
sudo
khi thay đổi chủ sở hữu: Chỉ quản trị viên mới có thể thay đổi chủ sở hữu của file. Nếu bạn nhận được lỗi "Operation not permitted", hãy thử thêmsudo
. - Thứ tự sai trong lệnh
chmod
: Thay đổi quyền không đúng đối tượng. Hãy đảm bảo rằng bạn đã chọn đúng file hoặc thư mục cần thay đổi. umask
chỉ ảnh hưởng đến file mới: Nếu bạn cố gắng thay đổi quyền cho các file đã tồn tại bằngumask
, nó sẽ không hoạt động. Hãy sử dụngchmod
.
Bạn có biết rằng quyền truy cập trong Linux linh hoạt đến mức bạn có thể tạo một file mà chỉ có một người trên toàn thế giới "nhìn thấy" không? Như người ta hay nói, "với quyền lớn đi đôi với trách nhiệm lớn"! Bây giờ, được trang bị chmod
, chown
và umask
, bạn đã sẵn sàng làm cho hệ thống Linux của mình không chỉ tiện dụng mà còn an toàn nữa.
GO TO FULL VERSION