簡體   English   中英

使用sudo命令時是否應該首先獲取文件?

[英]Is it possible that when using sudo command it should first source a file?

我需要運行一堆使用sudo的腳本(使用sudo)作為所有的配置文件。 最初,我將file.sh放在/etc/profile.d中,當我以root身份運行腳本時,一切正常(因為當我連接到計算機時,它首先獲取了file.sh,並且該文件中的所有var都可用),但現在出於安全原因,我需要與其他具有sudo權限的用戶一起運行它們。

當使用sudo運行時,即使我是root並執行sudo,/ etc / profile.d中的“配置文件”也不會被獲取-相同。

不能使用“ sudo -E”,這種解決方案“ Defaults env_keep + =” ftp_proxy http_proxy https_proxy no_proxy“”對我不起作用,因為文件中的var發生了很大變化,並且更容易拋出文件,與所有var一起放置在/etc/profile.d/之類的位置,而不是在/ etc / sudoers中添加選項。

以后編輯(工作):

將原始sudo命令移至sudo.orig。 創建了一個新的sudo bash腳本

[root@NS1 bin]# cat sudo
#!/bin/bash
source /etc/profile.d/set_env_vmdeploy.sh
sh /usr/bin/sudo.orig "$@"

並賦予它權限

[root@NS1 bin]# chmod 4111 sudo
[root@NS1 bin]# ll sudo*
---s--x--x 1 root root     78 May  7 13:42 sudo
---s--x--x 1 root root 123832 Jul 31  2014 sudo.orig

如果要sudo執行子外殼程序中的所有配置文件腳本,則可以告訴它調用該外殼程序作為登錄外殼程序: sudo -i /usr/local/bin/my_script.sh (請注意,子外殼程序將以工作目錄設置為/root開頭,並且還會產生其他意外的副作用。)

或者,使用命令參數顯式調用bash: sudo /bin/bash -c "source ./config.sh; ./real_script.sh"

暫無
暫無

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

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