Khoa học công nghệ

Quyền đối với tệp trong Linux là gì và Làm cách nào để đảm bảo quyền của tệp được bảo mật?

Quyền đối với tệp.

Trong Linux, quyền đối với tệp xác định mức độ đặc quyền cho chủ sở hữu tệp và mọi người khác. Điều quan trọng là đảm bảo mọi tệp giao diện web đều được đặt quyền của chúng một cách chính xác, để một quy trình bị xâm phạm không thể ghi vào những nơi mà nó không nên.

Quyền đối với tệp là gì?

Quyền tệp theo dõi quyền cho ba nhóm khác nhau. Mỗi nhóm được biểu diễn bằng ba bit:

  • NS: Quyền “Đọc” cho phép một quá trình đọc nội dung của tệp đó vào bộ nhớ.
  • w: Quyền “Ghi” cấp cho một quy trình truy cập để ghi đè lên vị trí thực trên đĩa nơi lưu trữ tệp đó.
  • NS: Quyền “Thực thi” dành cho các chương trình và cho phép tệp đó được thực thi.

Trong terminal, các quyền được hiển thị như sau:

Quyền được hiển thị.

Chữ “d” đầu tiên cho biết tệp có phải là một thư mục hay không. Nhóm ba người đầu tiên dành cho chủ sở hữu tệp. Trong trường hợp này, chủ sở hữu tệp có toàn quyền truy cập đọc, ghi và thực thi. Nhóm ba tiếp theo là “chủ sở hữu nhóm”, biểu thị quyền truy cập cho nhóm mà tệp thuộc về, trong trường hợp này, chỉ đọc. Nhóm tiếp theo là những người khác, chỉ được đọc.

Nói chung, các tệp có quyền “mọi người” đang mở không an toàn lắm. Bạn sẽ muốn đảm bảo rằng nhóm cuối cùng được đặt thành chỉ đọc hoặc không có quyền truy cập đối với hầu hết các tệp.

Dưới mui xe, chúng được lưu trữ dưới dạng nhị phân, với mỗi quyền đại diện cho một bit. Ví dụ, rw-110 ở dạng nhị phân, là 6 ở dạng thập phân. Vì vậy, chuỗi quyền:

rwxrw-r--

… Có thể được lưu trữ dưới dạng “764.” Quyền đối với tệp thường sẽ được gọi theo cách này; “777” biểu thị toàn quyền truy cập, “700” là riêng tư, “644” là chỉ đọc. Về mặt kỹ thuật, điều này được gọi là bát phân, không phải số thập phân, vì có tám giá trị có thể có cho mỗi chữ số.

Đối với thư mục, các quyền sử dụng các ký tự giống nhau, nhưng hơi khác một chút:

  • NS: Quyền liệt kê. Cho phép mở thư mục và cho phép sử dụng ls. Yêu cầu thuộc tính x được đặt.
  • w: Viết quyền. Cho phép tạo tệp mới, xóa tệp và đổi tên tệp. Không ngăn cản việc thay đổi nội dung của các tệp hỗ trợ ghi hiện có trong thư mục.
  • NS: Khả năng xâm nhập. Cho phép sử dụng cd. Đây là hệ thống được tôn trọng trên toàn hệ thống và sẽ ngăn không cho thư mục được mở trong trình khám phá tệp GUI.

Trên một số hệ thống, đặc biệt là macOS, có thể có “@” sau chuỗi quyền tệp. Điều này có nghĩa là tệp có các thuộc tính mở rộng mà bạn có thể kiểm tra ls -l@. Ví dụ, com.apple.quarantine thuộc tính được gán cho các tệp thực thi chưa được mở, để Gatekeeper có thể chặn bạn nhấp đúp vào nó, buộc bạn phải nhấp chuột phải> mở và sau đó không cần nhắc bạn nếu bạn Thực ra chắc chắn bạn muốn mở nó.

Chủ sở hữu tệp và nhóm là gì?

Chủ sở hữu tệp chỉ là một người dùng cụ thể, nhưng người dùng trong hệ thống Unix không hoạt động giống như cách họ làm trong Windows. Unix có thể có những người dùng khác nhau cho các quy trình riêng lẻ như mysqlnginx. Điều này có thể làm cho các quyền trở nên rất chi tiết; ví dụ: một phiên bản của MySQL chạy trong mysql người dùng có thể truy cập cơ sở dữ liệu của riêng mình, nhưng nginx người dùng không thể.

Các nhóm người dùng hoạt động theo cách tương tự nhưng hỗ trợ việc có nhiều người dùng có cùng quyền. Người dùng có thể được thêm và xóa khỏi nhóm và họ là tùy chọn để thiết lập quyền đối với tệp.

Cách kiểm tra quyền đối với tệp của thư mục

Bạn có thể xem các quyền đối với tệp và thư mục bằng cách chạy ls -l trong thiết bị đầu cuối của bạn. Quyền đối với tệp được hiển thị ở ngoài cùng bên phải:

Quyền đối với tệp được hiển thị ở ngoài cùng bên phải.

Nếu bạn muốn hiển thị các quyền đối với tệp cho một tệp hoặc thư mục cụ thể, bạn sẽ cần chuyển ls đầu ra cho grep:

ls -la | grep filename

Lưu ý rằng thư mục hiện tại và thư mục mẹ có quyền của chúng được hiển thị dưới dạng ... khi sử dụng -a lá cờ. Tuy nhiên, ngay cả điều này cũng chỉ hiển thị hai cấp độ quyền. Để hiển thị quyền cho mọi thư mục mẹ, bạn sẽ cần sử dụng namei yêu cầu:

namei -l `pwd`

Lệnh này có thể không được cài đặt trên mọi bản phân phối Linux. Trên macOS, bạn sẽ phải cài đặt nó từ brew.

Để tìm kiếm các tệp riêng lẻ trong các thư mục có thể có quyền sai đó, bạn có thể sử dụng find lệnh với -perm lá cờ:

find ~ -type f -perm 777

Điều này tìm kiếm đệ quy và có thể mất một chút thời gian nếu bạn đang chạy nó trên thư mục gốc.

Cách thay đổi quyền và quyền sở hữu tệp

Thay đổi quyền đối với tệp thật đơn giản với chmod yêu cầu:

chmod 700 filename

Bạn cũng có thể thêm quyền mà không cần chỉ định chuỗi quyền đầy đủ. Đây là một phím tắt, nhưng có thể tiết kiệm thời gian. Ví dụ: nếu bạn không thể mở tệp tập lệnh, bạn có thể thêm quyền cho chủ sở hữu để thực thi với:

chmod u+x filename

Điều này thêm quyền thực thi (x) cho chủ sở hữu hiện tại (u, cho “người dùng”).

Thay đổi chủ sở hữu hoạt động tương tự với chown yêu cầu:

chown owner:group filename

“: Group” là tùy chọn. Cả hai chmodchown có thể được chạy đệ quy trên các thư mục, để thay đổi quyền đối với tệp cho mọi thứ trong các thư mục đó. Để làm điều này, hãy sử dụng chữ hoa -R lá cờ:

chmod 700 -R directory

Bạn cũng có thể dùng chmod như là -exec tùy chọn cho find, cho phép bạn thay đổi quyền đối với tệp trong toàn hệ thống. Ví dụ: lệnh này sẽ tìm các tệp có quyền ghi mở và đặt chúng thành chỉ đọc:

find / -type f -perm 777 -print -exec chmod 744 {} ;

Leave a Comment

Stt buồn về cuộc sống mới nhất 2021