簡體   English   中英

Sudo不提示輸入密碼Mac bash腳本

[英]Sudo not prompting for password Mac bash script

我正在嘗試編寫一個腳本,在/ etc / hosts后面追加一行,這意味着我需要使用sudoer特權。 但是,如果我從桌面運行腳本,則不會提示輸入密碼。 我只是獲得許可被拒絕。

示例腳本:

#!/bin/bash
sudo echo '131.253.13.32        www.google.com' >> /etc/hosts
dscacheutil -flushcache

終端彈出,並說拒絕權限,但從不實際提示輸入sudo密碼。 有沒有辦法解決這個問題?

sudo不適用於重定向操作符 您可以使用echo | sudo tee -a echo | sudo tee -asudo bash -c 'echo >>'

echo 131.253.13.32 www.google.com | sudo tee -a /etc/hosts
sudo bash -c 'echo 131.253.13.32 www.google.com >> /etc/hosts'

您在這里所做的實際上是:

  1. 切換到根目錄並運行echo

  2. 切換回自己並嘗試將sudo的輸出附加到/etc/hosts

那是行不通的,因為在添加到/etc/hosts時需要是root用戶,而不是在運行echo時需要root用戶。

最簡單的方法是

sudo bash -c "sudo echo '131.253.13.32        www.google.com' >> /etc/hosts"

這將以bash本身的身份運行root。 但是,這並不是特別安全,因為您現在以root身份調用Shell,這可能會做很多令人討厭的事情(特別是,它將執行環境變量BASH_ENV中文件名的內容)一個,因此您可能會更謹慎一些:

sudo env -i bash -c "sudo echo '131.253.13.32        www.google.com' >> /etc/hosts"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM