簡體   English   中英

在腳本(.sh文件)中以沒有密碼的sudo用戶身份運行命令

[英]Running command as sudo user without a password within a script (.sh file)

我正在嘗試創建一個腳本,該腳本將從DJango / Python項目中刪除* .pyc文件。

這些文件如下所示:

./backend/libmstr/vendors/migrations/__pycache__/__init__.cpython-36.pyc
./backend/libmstr/vendors/__pycache__/__init__.cpython-36.pyc
./backend/libmstr/vendors/__pycache__/models.cpython-36.pyc
./backend/libmstr/vendors/__pycache__/admin.cpython-36.pyc

權限如下:

ls -lart ./backend/libmstr/vendors/migrations/__pycache__/__init__.cpython-36.pyc
-rw-r--r-- 1 root root 143 Dec 21 15:55 ./backend/libmstr/vendors/migrations/__pycache__/__init__.cpython-36.pyc

可以看到,該文件組和用戶是root

鑒於我沒有以root用戶身份運行任何東西,因此我不確定它們的來源。

因此,我選擇使用函數將其刪除。 為了使函數正常運行,必須在“ sudo”下運行

我創建了文件: /home/dockerdj/remove_pyc_files.sh

#!/bin/bash
sudo find . -name "*.pyc" -exec rm -f {} \; -print

(以上)文件是在用戶帳戶上創建的: dockerdj我還為用戶提供了sudo特權 我也將以下內容添加到了.bashrc文件中

export PATH=$PATH:/home/dockcclubdjango

我還通過以下操作在/etc/sudoers添加了以下內容:

https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos

dockerdj ALL=(ALL) NOPASSWD: /home/dockerdj/remove_pyc_files.sh

即使執行了上述操作,在運行remove_pyc_files.sh ,仍然會要求我輸入密碼。

我究竟做錯了什么?

是的,系統必須要求您輸入用戶密碼以確認該用戶是用戶,您可以執行以下操作:

#!/bin/bash

PASSWORD='password or something';
echo -n -e '${PASSWORD}' | sudo -S find . -name "*.pyc" -exec rm -f {} \; -print

這樣,腳本將不會詢問您密碼,您可以做的另一件事是將密碼設置為十六進制並使用'\\\\ x'進行聯接

暫無
暫無

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

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