我可以授予脚本提升的文件访问权限并以当前用户身份运行它吗?

我可以授予脚本提升的文件访问权限并以当前用户身份运行它吗?

我有一个脚本(我称之为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

相关内容