2017-06-20 65 views
1

有沒有辦法讓sudo在Ruby腳本中保持活躍狀態​​?即我可以要求用戶在腳本期間輸入一次他們的sudo密碼?在Ruby腳本中保持sudo活着

在bash,你可以這樣做:

while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &

信用:Cowboy

+1

請記住,每次執行系統命令時,都是在單獨的子shell中執行此操作。我想在很多情況下,需要提升權限的腳本可以使用sudo運行,例如, 'sudo script.rb',而不是試圖在腳本中做某件事。 –

+0

我強烈建議不要這樣做。這將意味着可能違反安全規定,出現問題的可能性很大。 @TomFenech也是正確的。 –

回答

-1

做到這一點的最好辦法,在我opion是德如下:

  1. 添加新用戶加入系統
  2. 加入車輪組
  3. 補助燙髮使用sudo沒有密碼
  4. 須藤visudo命令
  5. 用戶名ALL =(ALL)NOPASSWD:ALL這裏#change 「用戶名」 新用戶名

授予此燙髮新用戶有風險但有效。

+0

我的擔憂是這是非常不安全的。我只希望腳本在用戶輸入密碼後擁有sudo。 –

+0

正如我所說的,要做到這一點,你需要延長時間須藤: $ sudo的visudo命令 和改變 默認timestamp_timeout = -1 – Julian

+0

您可以配置'sudo'允許用戶僅執行* *您沒有密碼的腳本;它不一定是全部或沒有。 – chepner

0

有兩種情況,都不需要你做憑證或授權的任何程序緩存:

  1. 用戶可以與sudo運行任意程序。

    只需要腳本與sudo一起運行,而不是在腳本中調用sudo。假設最糟糕的是,無論如何你的用戶會這樣做。

  2. 用戶只能用sudo運行某些程序。

    在這種情況下,可以假定用戶可以運行腳本所需的命令sudo,但不允許腳本本身運行。無論是

    A)可以讓系統管理員進一步配置sudo,以允許用戶在沒有密碼運行這些命令,或

    二)系統管理員將做出的改變,在這種情況下你不應該繞過這個決定。

在任何情況下,確定何時或是否需要密碼sudo不是您的程序的工作。