Bảo vệ thư mục khỏi sudoers


7

Có khả năng không cho phép sudoers xem thư mục của bạn (chỉ bạn và root mới có thể truy cập thư mục)?


1
@depquid: Phải không? Tôi không chắc mặc định của Ubuntu /etc/sudoerslà gì, nhưng bạn không thể thêm tất cả người dùng vào adminhoặc sudonhóm.
Keith Thompson

Có hệ điều hành của tôi là Ubuntu. Có 2 người dùng nổi bật (trong nhóm sudoers) và 2 ftp (bị khóa trong các thư mục nhà của họ).
Arthur Halma

@KeithThndry Nhận ra mình đã nhầm, tôi đã xóa bình luận của mình. Nhưng sau đó tôi nhận ra nó hầu như đúng trong bối cảnh của OP. Để làm rõ, Ubuntu không sử dụng mật khẩu gốc theo mặc định, vì vậy có thể truy cập root thông qua sudo. Và quyền sử dụng sudothường được cấp bằng cách tạo một phần người dùng của nhóm quản trị viên. Và các thành viên của nhóm quản trị được phép truy cập root đầy đủ (nghĩa sudo su -là được phép). Vì vậy, "sudoers", theo thuật ngữ của OP, là người dùng có quyền truy cập root theo mặc định trên Ubuntu.
tước

1
@ArthurHalma Đừng quên rằng với một ô mặc định là 022(hoặc ít hơn), các tệp được tạo ra có thể đọc được trên thế giới. Đảm bảo ô và / hoặc quyền của bạn được đặt phù hợp, nếu không tất cả người dùng sẽ có thể đọc tệp của bạn.
tước

Câu trả lời:


10

Giả sử rằng bởi sudoers, bạn có nghĩa là những người được phép chạy các lệnh với quyền root với sudotiền tố, bởi vì chúng được đề cập trong sudoerstệp thông qua một dòng như thế bob ALL=(ALL) ALL, sau đó những người này là root. Điều gì xác định là root không biết mật khẩu của tài khoản root, nó có quyền truy cập vào tài khoản root thông qua bất kỳ phương tiện nào.

Bạn không thể bảo vệ dữ liệu của bạn từ root. Theo định nghĩa, người dùng root có thể làm mọi thứ. Quyền sẽ không giúp vì root có thể thay đổi hoặc bỏ qua các quyền. Mã hóa không giúp ích gì vì root có thể lật đổ chương trình thực hiện giải mã.

Nếu bạn không tin tưởng ai đó, đừng cấp cho họ quyền truy cập root trên máy mà bạn lưu trữ dữ liệu của mình. Nếu bạn không tin tưởng ai đó có quyền truy cập root trên máy, đừng lưu trữ dữ liệu của bạn trên đó.

Nếu người dùng cần quyền truy cập root cho một số mục đích cụ thể như thoải mái quản lý ứng dụng, cài đặt gói, v.v., sau đó cung cấp cho họ phần cứng của riêng họ hoặc cung cấp cho họ máy ảo của riêng họ. Hãy để chúng là root trong VM nhưng không phải trên máy chủ.


5

Thông thường sudotruy cập được cấp theo cách thức này:

# User privilege specification

root    ALL=(ALL) ALL
user1   ALL=(ALL) ALL

Trong kịch bản này, về cơ bản, người dùng có quyền truy cập không bị chặn để trở thành root và làm bất cứ điều gì họ muốn. Bạn có thể thận trọng hơn trong cách bạn cấp quyền truy cập vào các nhiệm vụ khác nhau trong sudo bằng cách thực hiện mọi thứ theo cách này:

user1  ALL=(root) /usr/bin/find, /bin/rm

Dưới đây chúng tôi giới hạn các lệnh mà user1 có thể sử dụng để chỉ findrm. Nếu bạn biết rằng người dùng chỉ cần một lệnh cụ thể, bạn có thể cấp cho họ quyền truy cập riêng cho lệnh đó.

Hơn nữa bạn có thể tạo tập lệnh thay vì chỉ thêm lệnh. Ví dụ:

user1  ALL=(root) /usr/local/bin/limited_script.sh

Kịch bản này sẽ là lệnh duy nhất họ có quyền truy cập, ví dụ cd /to/some/dir, bạn có thể vào tập lệnh trước, sau đó bọc bất kỳ lệnh nào họ cần để có quyền truy cập. Đây có thể là một cách để hạn chế quyền truy cập của họ.

Nhận ra rằng phương pháp này không đầy đủ bằng chứng nhưng sẽ cung cấp cho bạn một số mức độ bảo vệ.


2
sudo /usr/bin/find . -maxdepth 0 -exec any-command-you-like \;
Keith Thompson

Cảm ơn, vâng, đây không phải là một giải pháp hoàn hảo, vì trong bảo mật, đó là về các lớp. Nhưng trong trường hợp này, nó là một lớp rất mỏng.
slm

Giải pháp tốt đẹp. Nhưng tôi nghĩ câu trả lời @Gilles là đúng. Tôi sẽ không bao giờ chiến đấu an toàn nếu người khác thậm chí chỉ có một số quyền riêng tư gốc.
Arthur Halma

Chúng tôi đã nói về cơ bản điều tương tự. Câu trả lời của tôi cung cấp cho bạn một phương pháp sẽ cung cấp cho bạn khả năng cho phép người dùng chạy lệnh không truy cập vào đĩa, trong khi phương thức của anh ta thì không. Tôi tin rằng đó là những gì câu hỏi của bạn đang yêu cầu? Ngoài ra, câu trả lời của anh ta chỉ nói lên bob ALL=(ALL) ALLđó là cách tồi tệ nhất để loại bỏ các quyền sudo. Như tôi đã nói, về cơ bản không thể chặn người dùng được điều khiển vào các lệnh không chọn đồng thời trong sudo cho các mục đích bất chính. Nhưng câu trả lời của tôi thực tế là đại diện nhiều hơn về cách bạn cấp quyền sudo.
slm

4

Trừ khi các lệnh mà sudoer có thể chạy bị hạn chế trong sudoerstệp cấu hình (thông thường /etc/sudoers), hãy sudođưa ra root, vì vậy bạn không thể làm gì để ngăn sudoer truy cập vào thư mục của mình.


4

Thường sudođược sử dụng để đạt được quyền hạn gốc bởi người dùng bình thường, ít nhất là một lệnh cụ thể. Vì vậy, nếu root có thể đọc nó, thì người dùng sử dụngsudo cũng có thể.

Tôi đoán điều tốt nhất bạn có thể làm là mã hóa thư mục / tập tin theo cách nào đó thành mật khẩu cá nhân.


2

Bạn có thể có thể sử dụng ACL và trong việc thiết lập các mục nhập ACE phù hợp, bạn có thể thực hiện việc này. Tuy nhiên, nó rắc rối hơn một chút.

Dù sao, nếu bạn làm điều này, một quản trị viên sẽ giúp bạn khắc phục vấn đề với các tập tin / thư mục của bạn như thế nào? Bạn tin tưởng người dùng đáng tin cậy của bạn hoặc bạn không và chuyển sang hệ thống khác nơi bạn tin tưởng quản trị viên của mình.

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.