在脚本中没有密码的sudo用户运行命令(.sh文件)

时间:2017-12-21 16:48:22

标签: linux sudo

我正在尝试创建一个可以从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时,我仍然需要输入密码。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

是的,系统要求您输入用户密码以确认这是用户,您可以这样做:

#!/bin/bash

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

这样,脚本不会要求您输入密码,您可以做的另一件事是使用十六进制密码并使用'\\ x'

进行连接