我有一个脚本(我称之为dusort.sh
),用于判断驱动器中给定文件夹中哪些文件占用了最多的空间。它本质上可以归结为以下内容:
#!/bin/bash
du --all --human-readable --max-depth=1 $1 | sort -h -r
我需要使用 运行命令,sudo
否则du
无法读取某些目录(/
、docker 卷目录等)。有没有办法让我每次想要检查文件大小时都可以运行此命令,而无需输入 root 用户密码?
我尝试过更改文件所有权
sudo chown root:root dusort.sh
但这似乎没有影响。运行此命令而不收到Permission denied
文件警告的唯一方法是这样的:
sudo ./dusort.sh
答案1
哇!好的,我找到了一个可行的解决方案lx07。为了得到我想要的解决方案,即以 root 权限运行脚本没有每次输入sudo
或键入密码都有两个步骤。
首先,将这两行添加到您的/etc/sudoers
文件中(使用 编辑sudo visudo
)
myusername ALL = (ALL) ALL
myusername ALL = (root) NOPASSWD: /path/to/myscript.sh
其次,添加别名以 sudo为script.sh
前缀。在我的例子中,我将其添加到~/.bash_aliases
alias myscript='sudo /path/to/myscript.sh'
现在您可以以 root 身份运行脚本,而无需指定 sudo 或输入密码!
$ myscript
# it runs as root!
答案2
您可以更改 /etc/sudoers 文件并添加以下行:
Cmnd_Alias MONITORING=/usr/bin/du
your_username ALL=(ALL) NOPASSWD:MONITORING
如果您不是唯一使用这些脚本的人,请创建一个包含 whe 用户的组并将最后一行替换为:%group_name ALL=(ALL) NOPASSWD:MONITORING
这样,每次执行脚本时就不需要输入密码
如果您已经拥有 sudo 权限,只需在脚本中附加 sudo:
sudo du --all --human-readable --max-depth=1 $1 | sort -h -r