Tôi có một kịch bản thực thi ba chức năng : A && B && C
.
Chức năng B
cần phải được chạy như một siêu người dùng, trong khi A
và C
không.
Tôi có một số giải pháp nhưng cả hai đều không thỏa mãn:
sudo toàn bộ kịch bản:
sudo 'A && B && C'
Đó có vẻ là một ý tưởng tồi để chạy
A
vàC
là siêu người dùng nếu không cần thiếtlàm cho kịch bản tương tác:
A && sudo B && C
Tôi có thể phải nhập mật khẩu của mình, nhưng tôi muốn tập lệnh của mình không tương tác, vì mỗi chức năng có thể mất một chút thời gian và tôi không muốn tập lệnh chờ tôi. Chà, đó cũng là lý do tại sao nó là một kịch bản ở nơi đầu tiên, vì vậy tôi không phải xem nó chạy.
Giải pháp ngu ngốc:
sudo : && A && sudo -n B && C
Đầu tiên có vẻ ngu ngốc khi chạy no-op
sudo
trước, và tôi cũng phải vượt qua ngón tay của mình rằng A sẽ không mất nhiều hơn$sudo_timeout
.Giải pháp giả thuyết (tôi muốn bạn nói với tôi rằng nó tồn tại):
sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C'
Điều đó sẽ nhắc mật khẩu của tôi ngay từ đầu, và sau đó chỉ sử dụng thông tin đăng nhập đó khi cần.
Ý kiến của bạn về tất cả điều này là gì? Tôi rất ngạc nhiên rằng không có giải pháp cho vấn đề đó, vì tôi nghĩ đó là một vấn đề khá phổ biến (còn về make all && sudo make install
)
A
vàC
các phần rõ ràng bằng cách sử dụngsu -l some_non_priviliged_user
. Không có vấn đề thời gian chờ, và không có quyền riêng tư cho A và C. Tôi không nghĩ rằng 4 là có thể,sudo
dường như là "trạng thái toàn cầu" cho người dùng.