Làm cách nào tôi có thể cho phép một người dùng kiện người khác mà không cho phép truy cập root?


53

Tôi muốn cho phép một số người dùng su vào tài khoản người dùng khác mà không cần phải biết mật khẩu của tài khoản đó, nhưng không cho phép truy cập vào bất kỳ tài khoản người dùng nào khác (ví dụ: root).
Chẳng hạn, tôi muốn cho phép Tom DBA su cho người dùng orory, nhưng không cho người dùng tomcat hoặc root.

Tôi tưởng tượng điều này có thể được thực hiện với tệp / etc / sudoers - có khả thi không? Nếu vậy thì thế nào?

Câu trả lời:


44

Vâng, điều này là có thể.

Trong / etc / sudoers , mục ngay sau dấu bằng là người dùng mà lệnh sẽ được phép thực thi dưới dạng.

tom  ALL=(oracle) /bin/chown tom *

Người dùng (tom) có thể gõ sudo -u oracle / bin / chown tom / home / oracle / oraclefile


5
Điều này sẽ cho phép Tom chạy các lệnh như một nhà tiên tri, nhưng không thực sự trở thành người sử dụng nhà tiên tri
gharper

11
Thế còn sudo -u oracle su -? Điều đó sẽ cho anh ta một cái vỏ mở ra như người dùng tiên tri. Đó là điều bạn muốn?
Brent

+1 cho bình luận cuối cùng đó, Brent. Đó sẽ là câu trả lời của tôi.
Annika Backstrom

3
Một cái gì đó như sau sẽ hoạt động: sudo -u oracle -s hoặc sudo -u oracle -i (-s cho shell, -i cho đăng nhập - thực hiện shell đăng nhập). Thật không may, tôi không biết rõ bạn sẽ sử dụng những gì trong / etc / sudoers để giới hạn người dùng, nhưng nếu bạn cho phép họ truy cập shell, có lẽ bạn chỉ muốn thực hiện tom ALL = (oracle) ALL như một người khác đã đề cập. Nếu họ có thể chạy shell, có lẽ bạn không quan tâm đến việc hạn chế các lệnh họ có thể chạy.
Đánh dấu

1
Lý tưởng nhất là bạn không muốn Tom chạy các lệnh với tư cách là người dùng tiên tri, thay vì trở thành người dùng tiên tri? Sự khác biệt là nhỏ, nhưng nó cung cấp một nhật ký kiểm toán tuyệt vời mà không cần phải sử dụng một vỏ kiểm toán.
Scott Pack

40

Thêm vào / etc / sudoers của bạn một cái gì đó như

tom ALL=(oracle) ALL

Sau đó, người dùng tom sẽ có thể sử dụng sudo để chạy mọi thứ như người dùng tiên tri với tùy chọn -u, mà không để tom

Tức là nhận được một shell như lời tiên tri của người dùng (tốt, với điều kiện là sudo của bạn đủ mới để có tùy chọn -i).

sudo -u oracle -i

5
Tôi đã phải sử dụng cú pháp tom ALL=(oracle)NOPASSWD:ALLđể khiến sudo không hỏi mật khẩu
snowindy 4/12/2015

9

Để CHỈ cung cấp các khả năng trong câu hỏi, hãy thêm phần sau vào / etc / sudoers:

tom            ALL=(oracle)    /bin/bash

Sau đó tom có ​​thể:

sudo -u oracle bash -i

0

Chẳng hạn, tôi muốn cho phép Tom DBA su cho người dùng orory, nhưng không cho người dùng tomcat hoặc root.

Tôi cần phải làm điều này với một hệ thống gần đây và đã có một thời gian khó khăn để tìm thấy ghi chú của tôi về thiết lập thay thế mà tôi đã sử dụng nhiều năm trước cũng cho phép cú pháp su <user>. Trong tình huống của tôi, tôi cần cho phép nhiều người dùng suđến một người dùng cụ thể.

Tạo một nhóm bằng cách sử dụng addgroup <groupName>mà người dùng khác sẽ có thể sukhông cần mật khẩu. Sau đó thêm nhóm đó vào từng người dùng mà bạn muốn có thể cho sungười dùng đó mà không cần mật khẩu: usermod -a -G <groupName> <userName>(hoặc usermod -a -G oracle tom). Các thay đổi nhóm có thể không ảnh hưởng đến lần đăng nhập tiếp theo.

Lưu ý: Trong trường hợp của bạn, bạn đã có nhóm vì oraclenhóm sẽ được tạo khi bạn tạo người dùng tiên tri với adduser oracle.

Bây giờ chỉnh sửa /etc/pam.d/suvà theo sau:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

..add dòng quy tắc auth để phần này trông như thế này:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

Thay thế <groupName>bằng oracletrong trường hợp này. Điều này sẽ cho phép bất kỳ người dùng mà là một phần của <groupName>đểsu <groupName>

Bây giờ tomcó thể su oraclevà nếu bạn cần cung cấp cho người dùng khác quyền truy cập tương tự, hãy thêm họ vào oraclenhóm.

câu hỏi tương tự ở đây

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.