[英]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.