cho phép sudo cho người dùng khác mà không cần mật khẩu


46

Tôi muốn có thể 'su' cho một người dùng cụ thể, cho phép tôi chạy bất kỳ lệnh nào mà không cần nhập mật khẩu.

Ví dụ:

Nếu thông tin đăng nhập của tôi là user1 và người dùng tôi muốn 'su' là user2:

Tôi sẽ sử dụng lệnh:

su - user2

nhưng sau đó nó nhắc tôi với

Password:


Hỏi người dùng khác cho mật khẩu. Ít nhất người dùng khác biết những gì đã được thực hiện dưới id của mình.
du mục toàn cầu

1
Điều này không có gì để làm với người dùng vật lý khác. Cả hai ID đều là của tôi. Tôi biết mật khẩu khi tôi tạo tài khoản. Tôi chỉ không muốn phải nhập mật khẩu mỗi lần.
zio

Nó có ổn không khi ssh cho người dùng hoặc bạn cần phải kế thừa một shell cụ thể và cần su để làm việc?
bmike

1
@zio Trường hợp sử dụng tuyệt vời. Không open -na Skypelàm việc cho bạn?
bmike

Câu trả lời:


66

sudo chỉ có thể làm điều đó cho bạn :)

Nó cần một chút cấu hình, nhưng một khi đã hoàn thành, bạn sẽ chỉ làm điều này:

sudo -u user2 -s

Và bạn sẽ đăng nhập với tên user2 mà không cần nhập mật khẩu.

Cấu hình

Để cấu hình sudo, bạn phải chỉnh sửa tệp cấu hình của nó thông qua : visudo. Lưu ý: lệnh này sẽ mở cấu hình bằng vitrình soạn thảo văn bản, nếu bạn không thích điều đó, bạn cần đặt một trình soạn thảo khác (sử dụng export EDITOR=<command>) trước khi thực hiện dòng sau. Một trình soạn thảo dòng lệnh khác đôi khi được coi là dễ dàng hơn nano, vì vậy bạn sẽ làm export EDITOR=/usr/bin/nano. Bạn thường cần đặc quyền siêu người dùng cho visudo:

sudo visudo

Tập tin này được cấu trúc trong các phần khác nhau, các bí danh, sau đó mặc định và cuối cùng ở cuối bạn có các quy tắc. Đây là nơi bạn cần thêm dòng mới. Vì vậy, bạn điều hướng ở cuối tập tin và thêm điều này:

user1    ALL=(user2) NOPASSWD: /bin/bash

Bạn có thể thay thế cũng /bin/bashbằng ALLvà sau đó bạn có thể khởi chạy bất kỳ lệnh như user2 mà không có một mật khẩu: sudo -u user2 <command>.

Nếu bạn muốn có thể chuyển sang bất kỳ người dùng nào, chỉ cần sử dụng

user1    ALL=(ALL) NOPASSWD: /bin/bash

Cập nhật

Tôi vừa thấy bình luận của bạn về Skype. Bạn có thể xem xét thêm Skype trực tiếp vào tệp cấu hình của sudo. Tôi giả sử bạn đã cài đặt Skype trong thư mục Ứng dụng của mình :

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

Sau đó, bạn sẽ gọi từ thiết bị đầu cuối:

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype

Điều này ít phức tạp hơn nhiều so với ý tưởng phím ssh, vì vậy hãy sử dụng nó trừ khi bạn cần các phím ssh để truy cập từ xa.
bmike

2
Một điều cần lưu ý từ góc độ bảo mật là việc chỉ định một lệnh cụ thể ngụ ý rằng nó phải là một lệnh chỉ đọc cho user1; Mặt khác, họ có thể ghi đè lệnh bằng một cái gì đó khác và chạy nó dưới dạng user2. Và nếu bạn không quan tâm đến điều đó, thì bạn cũng có thể chỉ định rằng user1 có thể chạy bất kỳ lệnh nào như user2 và do đó có cấu hình sudo đơn giản hơn.
Stan Kurdziel

@StanKurdziel điểm tốt! Mặc dù đó là điều cần lưu ý, nhưng thực sự hiếm khi người dùng có thể thực thi hệ thống có thể ghi được trừ khi bạn root nhưng trong trường hợp này bạn không cần sudo ;-) Nhưng bạn có quyền thêm nhận xét này vì nó rất hiếm khi mà có lẽ tôi đã bỏ qua nó hơn một lần.
Huygens

Để làm cho nó gần hơn với hành vi su - user2thay vì su user2, các lệnh có lẽ phải liên quan sudo -u user2 -i, để mô phỏng thông tin đăng nhập ban đầu là user2
Gert van den Berg

4

Tôi sẽ thiết lập khóa ssh công khai / riêng tư cho tài khoản thứ hai và lưu trữ khóa trong tài khoản đầu tiên.

Sau đó, bạn có thể chạy một lệnh như:

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

Bạn vẫn có thể gặp sự cố khi Skype bị nhầm lẫn do hai phiên bản đang chạy trên một tài khoản người dùng và các tệp được đọc / ghi bởi chương trình đó có thể xung đột. Nó cũng có thể hoạt động đủ tốt cho nhu cầu của bạn và bạn không cần iPod touch để chạy phiên bản Skype thứ hai.


1
Đây là một giải pháp bảo mật tốt cho trường hợp chung đăng nhập không cần mật khẩu vào bất kỳ tài khoản nào trên bất kỳ máy chủ nào, nhưng tôi có thể nói rằng nó có thể quá mức khi cả hai tài khoản trên cùng một máy chủ và thuộc cùng một người dùng.
calum_b

@scottishwildcat An toàn hơn nhiều so với việc thay thế kịch bản mật khẩu và cung cấp mật khẩu rõ ràng hoặc sử dụng một biến và lưu mật khẩu trong móc khóa và sử dụng một công cụ như expectđể tạo kịch bản tương tác. Tôi chỉ sử dụng sudo su - blahvà gõ mật khẩu của tôi. Tôi nghĩ rằng câu trả lời khác bao gồm sudo đủ tốt để giữ điều này như là một nhận xét.
bmike

Ồ, tôi chắc chắn không gợi ý câu trả lời của bạn nên bị loại bỏ. Tôi thậm chí còn không bình chọn, đó là một câu trả lời hoàn toàn tốt.
calum_b

Chúng tôi dường như hoàn toàn đồng ý - cảm ơn vì sự bổ sung - vui lòng chỉnh sửa nó thành câu trả lời nếu bạn có thể cải thiện nó.
bmike

Giải pháp được chấp nhận ( sudo -u user2 <...>) có lợi thế là không thể sử dụng từ xa, điều này có thể giúp bảo mật - không có khóa riêng cho user1 có thể bị đánh cắp.
Gert van den Berg
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.