Ai là "người khác", nếu chúng tôi cung cấp cho tất cả các dịch vụ trên máy chủ của mình một người dùng, "những người khác" không tồn tại phải không? Ví dụ: nếu chúng ta đặt Apache cho người dùng và chúng ta đặt /var/www
mục tiêu apache
và chúng ta nhập chmod 700
nó sẽ hoạt động, phải không?
Đây là cách các quyền hoạt động, được giải thích một cách ngắn gọn:
Chữ số đầu tiên dành cho chủ sở hữu thực sự của một tệp (kiểm tra xem ai sở hữu tệp đó ls -l
và sửa đổi nó với chown
)
Chữ số thứ hai dành cho nhóm tệp (mặc dù chủ sở hữu tệp không nhất thiết phải ở cùng nhóm sở hữu tệp)
Chữ số thứ ba là bất kỳ ai khác, có nghĩa là không phải chủ sở hữu tệp và tất cả mọi người không trong nhóm.
Vì vậy, nếu bạn gửi chmod
một tệp tới 700 và nó thuộc sở hữu của nó apache
, ngay cả người dùng "bình thường" của bạn cũng không thể đọc, viết hoặc thực thi nó. Điều này rất hạn chế và chỉ cần thiết trong những trường hợp hiếm hoi - ví dụ: khi bạn muốn bảo mật khóa riêng SSH của mình, nó sẽ có 600
quyền. Đối với Apache, điều này thậm chí có thể dẫn đến các vấn đề khác, ngoài thực tế là với tài khoản người dùng thông thường của bạn, bạn sẽ không thể chỉnh sửa bất kỳ tệp nào trong đó /var/www
nữa.
Vì vậy, nói chung, bạn không cần phải xóa quyền đọc ( x00
) cho người khác.
Bạn có thể để apache
sở hữu /var/www
thư mục, nhưng với 644
(chỉ đọc cho người khác) có thể. Một cách khác tôi thường sử dụng là thêm người dùng của riêng bạn và người sử dụng Apache để một mới www-users
nhóm, và sau đó chmodding file trong /var/www
để 775
. Theo cách này, cả bạn và Apache đều có thể ghi vào các tệp. Xem ở đây để biết thêm: Quyền nhóm cho apache
Sự khác biệt giữa "thực thi" và "đọc" là gì?
Các tập tin thực thi có thể được chạy trực tiếp bởi người dùng - trực tiếp từ trình bao. Để chứng minh điều này, hãy viết một tệp ngắn và gọi nó là "kiểm tra". Thêm nội dung sau:
echo "I am executable"
Lưu các tập tin. Bây giờ, trong vỏ của bạn, cố gắng nhập ./test
. Bạn sẽ nhận được lỗi " -bash: ./test: Quyền bị từ chối ". Điều này là do theo mặc định, các tệp mới được tạo không mang theo quyền thực thi. Nếu bạn thêm quyền thực thi, nó sẽ hoạt động.
$ chmod +x test
$ ./test
I am executable
Bây giờ, đây chỉ là một tập lệnh thử nghiệm, nhưng thông thường, tất cả các tệp nhị phân (như các chương trình được biên dịch) cũng cần bộ quyền thực thi, vì vậy bạn thực sự có thể chạy và làm gì đó với chúng, và không chỉ đọc.
Đây là ví dụ các chương trình hệ thống chủ yếu được tìm thấy trong /bin
. Chạy ls -l /bin
để kiểm tra quyền của họ. Như bạn có thể thấy, chúng thuộc sở hữu của root
và bạn không thể thay đổi chúng, nhưng bạn luôn có thể thực thi chúng.
Vì vậy, đây cũng là một tính năng bảo mật, vì bạn có thể hạn chế thực thi các tập lệnh và nhị phân nhất định cho một số người dùng.
Để tìm hiểu thêm về quyền hạn Unix, hãy đọc bài viết Wikipedia . Các quyền cơ bản mà bạn biết là "đọc-ghi-thực thi" đã có từ lâu, nhưng chỉ là một phần của những gì bạn gọi là Danh sách điều khiển truy cập - cung cấp nhiều chức năng hơn thế này.
Các quyền tập tin mặc định cho toàn bộ hệ thống sau khi cài đặt sạch (ví dụ như trong Ubuntu) là gì?
Họ thay đổi theo thư mục và chủ sở hữu. Một số tệp và thư mục được bảo lưu hệ thống và sở hữu bởi root
. Tuy nhiên, trong hầu hết các trường hợp, bạn sẽ có thể đọc chúng bằng tài khoản người dùng thông thường của bạn.
Các thư mục khác như thư mục nhà của bạn rõ ràng thuộc về người dùng của bạn. Việc từ chối quyền đọc đối với người dùng khác trên máy sẽ có ý nghĩa nếu nó được chia sẻ giữa nhiều người - sau tất cả, bạn không muốn nội dung riêng tư của mình bị lộ.
Cuối cùng, một số tệp được thực thi theo mặc định (ví dụ: trong /bin
), nhưng các tệp khác thì không (ví dụ: tệp cấu hình trong /etc
).
Các hệ thống tập tin tiêu chuẩn cấp bậc quy định cụ thể việc sử dụng dành cho các thư mục được tìm thấy trong hệ thống Linux. Bạn gần như có thể "đoán" những quyền nào sẽ được dựa trên những gì bạn muốn làm với một thư mục.