2011-08-01 23 views
122

Tôi có script.sh phải được chạy dưới dạng user2. Tuy nhiên, tập lệnh này chỉ có thể chạy dưới user1 trong ứng dụng của tôi.cách chạy tập lệnh với tư cách người dùng khác không có mật khẩu

Tôi muốn các lệnh sau đây để chạy:

su user2 -C script.sh 

nhưng có thể chạy mà không cần mật khẩu.

Tôi cũng muốn điều này rất hạn chế, như trong user1 chỉ có thể chạy script.sh dưới user2 và không có gì khác.

Tôi đã thử làm điều này với tệp sudoers và chỉ bị lẫn lộn vô tận sau nhiều giờ thử.

Nếu ai đó có thể cung cấp một ví dụ rõ ràng về cách điều này có thể được thực hiện (thay vì một cái gì đó chung chung như sử dụng sudoers), nó sẽ được đánh giá rất nhiều.

+13

Tôi không nhất thiết phải đóng cửa. Đây là câu hỏi về cách lập trình hệ thống theo một cách cụ thể; như vậy, nó là về lập trình vỏ và nằm trong phạm vi của SO, đó là câu hỏi về lập trình. Rõ ràng là một số người không thấy điều này như vậy ngoài chủ đề mà nó nên được bỏ phiếu; câu hỏi và câu trả lời đều có số lượng phiếu bầu đáng kể. –

Trả lời

97

Gọi visudo và thêm này:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh 

Các đường dẫn lệnh phải tuyệt đối! Sau đó, gọi sudo -u user2 /home/user2/bin/test.sh từ vỏ user1. Làm xong.

+2

Có một mô tả [mô tả tốt đẹp về sudoers] (https://help.ubuntu.com/community/Sudoers) trên trợ giúp của Ubuntu. Trang người dùng cho sudoers là xấu xí: ( – Mifeet

165

thử chạy:

su -c "Your command right here" -s /bin/sh username 

này sẽ chạy lệnh như tên người dùng cho rằng bạn có quyền sudo là người dùng đó.

+10

Nó hoạt động như người dùng bình thường với đầy đủ quyền sudo như thế này: 'sudo su -c" Lệnh của bạn ngay tại đây "-s/bin/sh otheruser' – rubo77

+5

Chỉ cần lưu ý cho bất kỳ người dùng mac nào, rõ ràng cú pháp có một chút khác biệt: 'su username -c" command "'. – NHDaly

+1

Nếu bạn cố gắng bắt đầu 'screen' là một người dùng khác thì điều này có thể hữu ích - http://www.linuxquestions.org/questions/linux-software -2/chạy-screen-command-cho-khác-người dùng-at-startup-401990/# post2041890 – Mint

Các vấn đề liên quan