Ai là người khác trong các quyền của Linux, và điều đó có nghĩa là gì?


13

Tôi không thể tìm thấy câu trả lời cho ba câu hỏi sau:

  • 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/wwwmục tiêu apachevà chúng ta nhập chmod 700nó sẽ hoạt động, phải không?

  • Sự khác biệt giữa "thực thi" và "đọc" là gì?

  • 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ì?

Câu trả lời:


16

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/wwwmục tiêu apachevà chúng ta nhập chmod 700nó 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 -lvà 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 chmodmộ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ó 600quyề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/wwwnữ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ể để apachesở hữu /var/wwwthư 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 người sử dụng Apache để một mới www-usersnhó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 rootvà 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.


Cảm ơn bạn thực sự thực sự đã giúp tôi rất nhiều! Tôi không thể cảm ơn đủ, một câu hỏi nữa, đâu là dòng giữa "tệp" và "thực thi", ví dụ như các tệp PHP được thực thi hoặc đọc bởi Apache? Một lần nữa cảm ơn rất nhiều!
RandomKek

.phptập tin thường không thể thực thi. Nói một cách đơn giản, chúng chỉ được đọc bởi Apache khi bạn trỏ trình duyệt của mình vào ví dụ http://example.com/file.phpTrước khi Apache có thể hiển thị đầu ra, chúng phải được giải thích bởi cài đặt PHP của bạn, nhưng Apache xử lý vấn đề đó. Về mặt lý thuyết, bạn có thể làm cho một tệp PHP có thể thực thi được và chạy nó như một tập lệnh - giống như chúng ta đã làm với testtệp của chúng tôi , nhưng điều này hiếm khi được sử dụng.
slhck

5

Chỉ muốn thêm quyền thực thi có ý nghĩa hiệu quả khác nhau cho các thư mục:

Đối với tệp :

  • Đọc: Nếu nội dung tập tin có thể được đọc
  • Viết: Nếu người dùng hoặc quá trình có thể ghi vào tệp (thay đổi nội dung của nó)
  • Thực thi: Nếu tập tin có thể được thực thi

Đối với thư mục :

  • Đọc: Nếu danh sách thư mục có thể được lấy
  • Viết: Nếu người dùng hoặc quá trình có thể thay đổi nội dung thư mục bằng cách nào đó: tạo mới hoặc xóa các tệp hiện có trong thư mục hoặc đổi tên tệp.
  • Thực thi: Nếu người dùng hoặc quá trình có thể truy cập vào thư mục, nghĩa là đi đến nó (làm cho nó trở thành thư mục làm việc hiện tại)

Không, không có quyền xóa riêng cho các thư mục.

(Có thông tin này ở đây .)


0

Tôi không phải là chuyên gia Linux, nhưng tôi cố gắng trả lời.

Mỗi mục hệ thống tệp có một người dùng và nhóm liên quan. Các quyền của người dùng được xử lý bởi các cờ "người dùng". Quyền người dùng của người dùng là một phần của cùng một nhóm được xử lý bởi các cờ "nhóm". Tất cả người dùng khác được xử lý bởi các cờ "khác".

"Đọc" có nghĩa là những gì nó nói. "thực thi" có nghĩa là bạn có thể khởi chạy tệp (ví dụ: lệnh) hoặc bạn có thể liệt kê thư mục.

Về sự cho phép mặc định, tôi không chắc chắn. Tôi đoán, nó có thể được cấu hình bằng cách nào đó và do đó có thể khác nhau cho mỗi người dùng.


0

Để cung cấp cho bạn một câu trả lời đúng cho câu hỏi 2, ít nhất, đây là bảng tóm tắt cho thấy những gì bạn có thể / không thể làm:

+--------------------------------------------------+
| Execute Yes (./file.sh) | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute Yes (./file.sh) | Read No (ERROR)        |
|--------------------------------------------------|
| Execute No (ERROR)      | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute No (ERROR)      | Read No (ERROR)        |
+--------------------------------------------------+

Điều quan trọng cần nhớ, đó không phải là việc NGƯỜI DÙNG đọc tệp tệp vào bộ nhớ để thực thi nó, đó là KernEL thực hiện việc đó thay mặt cho NGƯỜI DÙNG.


0

Nó có thể là khó khăn nếu bạn muốn loại trừ tất cả những người khác. Nhìn vào danh sách này từ tệp / etc / passwd của tôi (quyền và những gì không được xóa cho rõ ràng):

root daemon bin sys đồng bộ trò chơi người đàn ông lp mail tin tức uucp proxy danh sách sao lưu dữ liệu www irc gnats libuuid syslog messagebus usbmux haldaemon không ai

a {đây là tôi và bên dưới đây là những thứ tôi đã cài đặt, trên hết là đi kèm với hệ thống}

avahi mysql xung rtkit san rụt rè didiwiki

Vì vậy, ví dụ, xóa quyền khỏi lp hoặc uucp và bạn sẽ ngừng in. xóa quyền từ bin, sys hoặc daemon và có thể nhiều thứ sẽ bị hỏng. irc, trò chơi, thư, tin tức và sao lưu có thể được gỡ bỏ một cách an toàn (trừ khi bạn sử dụng chúng thông qua hệ thống, không phải trình duyệt). phần còn lại tôi để lại cho các kỹ năng công cụ tìm kiếm của bạn.

Đây là linux Ubuntu / bodhi và các hệ thống khác có thể có ít tính năng bổ sung hơn. tuy nhiên tất cả những thứ khác là để ngăn chặn việc chạy mọi thứ như root. Tôi tưởng tượng có thể tạo ra một hệ thống trong đó mỗi tệp chỉ có thể được đọc / ghi / thực thi bởi một trong những người dùng hệ thống (root bar) nhưng tôi không chắc nó đã được thử.

Thực thi là sự cho phép để chạy mã. Đọc chỉ được phép nhìn (và sao chép?).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.