CodeGym /Các khóa học /Docker SELF /Kiến thức cơ bản về quyền truy cập: chmod, chown, umask

Kiến thức cơ bản về quyền truy cập: chmod, chown, umask

Docker SELF
Mức độ , Bài học
Có sẵn

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:

  1. Đọc (r): Cho phép xem nội dung file hoặc danh sách file trong thư mục.
  2. Ghi (w): Cho phép thay đổi nội dung file hoặc thêm/xóa file khỏi thư mục.
  3. 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.

Quan trọng!

Để 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

  1. Tạo một tệp:

    touch myfile.txt
    
  2. Đặt quyền đọc, ghi và thực thi cho chủ sở hữu:

    chmod u+rwx myfile.txt
    
  3. Thêm quyền chỉ đọc cho những người khác:

    chmod o+r myfile.txt
    
  4. Kiểm tra quyền:

    ls -l myfile.txt
    

Bài tập 2: Đổi chủ sở hữu với chown

  1. Tạo một tệp:

    touch ownedfile.txt
    
  2. Thay đổi chủ sở hữu thành người dùng user1 (cần quyền admin):

    sudo chown user1 ownedfile.txt
    
  3. Kiểm tra thay đổi:

    ls -l ownedfile.txt
    

Bài tập 3: Thử nghiệm với umask

  1. Kiểm tra mask hiện tại:

    umask
    
  2. Đặt mask thành 027:

    umask 027
    
  3. Tạo một tệp mới:

    touch newfile.txt
    
  4. 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

  1. 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êm sudo.
  2. 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.
  3. 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ằng umask, nó sẽ không hoạt động. Hãy sử dụng chmod.

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, chownumask, 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.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION