Thủ thuật nhân bản trong Linux này sẽ giúp bạn tránh khỏi những vấn đề về quyền

Tác giả AI+, T.Sáu 21, 2024, 05:38:17 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Bảo mật cao cũng đi kèm với sự đau đầu về những thiết lập.

  • Quyền của tệp Linux rất quan trọng để kiểm soát và việc sao chép cài đặt tệp được định cấu hình chính xác có thể nhanh chóng khắc phục các quyền bị rối.
  • Những lỗi đơn giản với lệnh chown và chmod có thể gây ra sự hỗn loạn, nhưng nhân bản chown và chmod có thể khôi phục quyền truy cập tệp một cách hiệu quả.
  • Bạn cũng có thể sử dụng kỹ thuật nhân bản tương tự với Danh sách điều khiển truy cập.


Kiểm soát quyền truy cập tệp Linux ai có thể làm gì với tệp và thư mục. Nhưng nếu chúng bị hỏng, việc khôi phục chúng có thể là một cơn ác mộng. Sao chép quyền của tệp đang hoạt động là giải pháp nhanh nhất.

1. Sự lộn xộn và căng thẳng của các quyền không hợp lệ

Trên Linux, các tập tin và thư mục có một bộ quyền. Họ kiểm soát những hành động nào có thể được thực hiện và bởi ai.

Quyền cho phép hoặc từ chối ai đó đọc từ tệp, ghi vào tệp hoặc thực thi tệp đó. Đối với một tệp, việc thực thi có nghĩa là chạy một tập lệnh hoặc ứng dụng. Đối với một thư mục, thực thi có nghĩa là thay đổi thư mục đó bằng lệnh cd.

Quyền ảnh hưởng trực tiếp đến hoạt động bình thường và bảo mật của máy tính của bạn. Các quyền được thiết lập không hợp lý có thể gây ra sự tàn phá, khiến dữ liệu của bạn nằm ngoài tầm với của bạn một cách hiệu quả.

Các tập tin cũng có chủ sở hữu. Người dùng mới khi được tạo sẽ được thêm vào một nhóm có cùng tên với tên đăng nhập người dùng của họ. Theo mặc định, người dùng sở hữu tất cả các tệp do họ tạo và nhóm của tệp được đặt thành nhóm của người dùng. Một tập tin hoặc thư mục có ba bộ quyền. Một dành cho chủ sở hữu, một dành cho các thành viên trong nhóm của tệp và một dành cho những người không thuộc hai danh mục đầu tiên.

Việc giải nén các tệp lưu trữ cũ hoặc khôi phục thông tin từ các bản sao lưu được thực hiện trên các máy tính khác nhau có thể để lại cho bạn các tệp nhưng đáng tiếc là các quyền không chính xác. Bạn có thể rơi vào tình huống tương tự nếu mắc lỗi với lệnh chown và chmod. Lệnh chmod đặt quyền truy cập tệp và lệnh chown đặt quyền sở hữu tệp.

Việc sửa các loại tình trạng lỗi này bằng tay rất tẻ nhạt. Câu trả lời là sử dụng chown và chmod để sao chép cài đặt của tệp được cấu hình chính xác.

2. Vấn đề?

Tôi cần một số tập tin từ tập tin lưu trữ mà tôi đã được gửi. Tôi đã giải nén tệp lưu trữ nhưng thư mục được giải nén có huy hiệu ổ khóa trên biểu tượng của nó.


Tôi đã phải cung cấp mật khẩu root để vào thư mục. Nhấp đúp vào riêng nó là không đủ.


Kiểm tra bằng ls (một lần nữa, sử dụng sudo) sẽ phát hiện ra vấn đề.

Mã nguồn [Chọn]
sudo ls -hld project

Người dùng root sở hữu thư mục và không ai có quyền đọc hoặc ghi.

Các tệp và thư mục con cũng thuộc quyền sở hữu của root và các quyền là sự kết hợp của các cài đặt không chính xác khác nhau.

Mã nguồn [Chọn]
sudo ls -hl project

Trước tiên hãy giải quyết các vấn đề về quyền sở hữu.

3. Nhân bản quyền sở hữu với chown

Tôi muốn đặt quyền sở hữu tập tin cho tôi. Tên người dùng của tôi là dave. Chúng tôi sẽ sử dụng lệnh chown và sao chép cài đặt quyền sở hữu từ một thư mục được đặt chính xác.

Mã nguồn [Chọn]
sudo chown -R --reference=/home/dave/Downloads project

Tùy chọn --reference chown biết thư mục nào sẽ sao chép cài đặt quyền. Tùy chọn -R (đệ quy) yêu cầu chown đặt các quyền mới trên thư mục đích cũng như trên tất cả các tệp và thư mục con.

Chúng tôi có thể kiểm tra với ls rằng người dùng dave hiện là chủ sở hữu của các tệp và thư mục. Chúng tôi vẫn cần sử dụng sudo vì chúng tôi chưa phân loại các quyền.

Mã nguồn [Chọn]
sudo ls -hl project

Bây giờ chúng tôi đã lấy lại quyền sở hữu các tệp và thư mục, chúng tôi có thể sửa các quyền.

4. Nhân bản quyền với chmod

Đây là một quá trình rất giống với quá trình chúng ta đã sử dụng với chown, nhưng chúng ta cần cẩn thận hơn một chút với các quyền.

Thiết lập quyền sở hữu là dễ dàng. Tất cả các tệp và thư mục đều thuộc sở hữu của cùng một người dùng, vì vậy chúng đều nhận được các cài đặt giống nhau. Nhưng các thư mục và tệp thực thi phải được đặt quyền x (thực thi) cho chúng. Các tập tin thông thường không cần thiết lập quyền đó. Vì vậy, chúng ta cần tạo một số bộ quyền và áp dụng chúng cho các tệp thích hợp. Chúng ta có thể làm điều này trong ba bước.

Trước tiên, chúng tôi sẽ sử dụng tệp thông thường làm tệp tham chiếu. Điều này sẽ đặt quyền như thể mọi thứ đều là một tệp thông thường. Sau đó, chúng tôi sẽ sử dụng tệp thực thi tham chiếu để đặt quyền cho bất kỳ tập lệnh shell nào. Cuối cùng, chúng ta sẽ sử dụng chmod theo cách truyền thống để đặt quyền thực thi cho các thư mục.

Bước đầu tiên của chúng tôi là sử dụng tệp thông thường làm tệp tham chiếu:

Mã nguồn [Chọn]
sudo chmod -R --reference=/home/dave/Downloads/existing.dat project

Chúng ta có thể sử dụng ls để xem điều này có tác dụng gì.

Mã nguồn [Chọn]
sudo ls -hld project

sudo ls -hl project


Các quyền từ tệp tham chiếu (đọc và ghi đối với chủ sở hữu và nhóm và chỉ đọc đối với những người khác) đã được sao chép trên tất cả các tệp và thư mục.

Chúng tôi cần khôi phục quyền thực thi trên bất kỳ tập lệnh nào. Chúng tôi có một tập lệnh tham chiếu mà chúng tôi có thể lấy quyền từ đó.

Mã nguồn [Chọn]
sudo chmod -R --reference=/home/dave/Downloads/existing.sh project/*.sh

Chúng ta đang sử dụng ký tự đại diện "*" vì nó sẽ xử lý mọi tệp tập lệnh trong toàn bộ cây thư mục, bất kể tên của nó là gì.

Chúng ta có thể thấy rằng quyền thực thi đã được đặt trên tệp "appveyor.sh".

Mã nguồn [Chọn]
sudo ls -hl project

Khôi phục quyền thực thi trên các thư mục bao gồm một thủ thuật đơn giản. Chúng tôi không thể sử dụng ký tự đại diện vì nó cũng có thể khớp với các tệp. Vì vậy, những gì chúng tôi làm là sử dụng cờ cấp phép chữ X viết hoa. Điều này có nghĩa là "chỉ đặt bit thực thi nếu mục tiêu là một tệp có bit thực thi đã được đặt hoặc đó là một thư mục."

Chúng tôi có thể sử dụng điều này vì các tập lệnh thực thi của chúng tôi đã có tập bit thực thi và chúng sẽ giữ lại nó. Tất cả các thư mục trong cây thư mục cũng sẽ có tập bit thực thi.

Mã nguồn [Chọn]
sudo chmod -R +X project

Bây giờ chúng tôi đã đưa mọi thứ trở lại trạng thái hoạt động với quyền sở hữu chính xác, quyền chính xác và thư mục cho phép bạn đưa đĩa CD vào chúng.

Mã nguồn [Chọn]
ls -hl project

5. Nhân bản mọi thứ với setfacl

Nếu đang sử dụng Danh sách kiểm soát truy cập (ACL), bạn vẫn có thể sao chép cài đặt từ tệp được đặt chính xác sang các tệp khác. ACL cung cấp cho bạn quyền kiểm soát chi tiết, cho phép bạn thực hiện những việc như chỉ định quyền trên cơ sở từng người dùng, với những người dùng khác nhau có các quyền khác nhau.

Để sao chép cài đặt, chúng ta cần chuyển các cài đặt từ tệp được định cấu hình chính xác sang lệnh để đặt quyền.

Chúng ta có thể xem cài đặt ACL trên tệp hiện có bằng lệnh getfacl.

Mã nguồn [Chọn]
getfacl existing.file

Chủ sở hữu, dave có quyền đọc, viết và thực thi. Người dùng mary có quyền đọc và ghi. Để sao chép các cài đặt này vào các tệp trong thư mục dự án, chúng tôi sử dụng lệnh setfacl. Chúng tôi dẫn vào đầu ra từ lệnh getfacl để đảm bảo rằng chúng tôi nhận được cài đặt ACL mà chúng tôi muốn. Các tệp mà chúng tôi muốn áp dụng cài đặt ACL nằm trong thư mục có tên là "nguồn".

Mã nguồn [Chọn]
getfacl /home/dave/Downloads/existing.file | setfacl --set-file=- source

Tùy chọn --set-file thường lấy tên của tệp mà bạn muốn sao chép cài đặt từ. Việc sử dụng một dấu gạch nối "-" làm tên tệp sẽ yêu cầu setfacl sử dụng stdin làm nguồn dữ liệu. Đây sẽ là dữ liệu đường ống của chúng tôi.

Nhìn vào bất kỳ tệp nào trong thư mục nguồn sẽ xác minh rằng cài đặt ACL được sao chép đã được áp dụng.

Mã nguồn [Chọn]
getfacl terminal.c

6. Thoát khỏi sự hỗn loạn, trật tự

Nhìn thấy tình trạng lộn xộn mà đôi khi bạn gặp phải sau khi tải xuống, khôi phục hoặc hủy lưu trữ các tệp có thể khiến trái tim bạn chùng xuống. Nhưng thật dễ dàng để mang lại trật tự cho sự hỗn loạn chỉ bằng một vài lệnh, được sử dụng theo đúng thứ tự.