我想我可以回答这个问题。
那我应该用第二种方式吗?
您没有理由在这里遇到问题,这就是为什么:
如果只有一个命令需要以root身份运行,则run
您的程序为root
或sudo
因为sudo
在脚本内需要更长的时间。您忘了程序员是懒惰的吗?
如果您需要许多命令run
,请root
以root
或运行sudo
。
我如何提高其安全性,以避免在使用sudo运行脚本时为不需要超级用户的命令赋予超级用户特权的问题?
如果其他用户需要run
您的程序,则可sudo
以为这些程序进行设置,因为它sudo
是可自定义的,可以满足您的需求。
这是一个示例sudo
:
visudo
在编辑sudoers文件时始终使用.....
kate ALL=(ALL) NOPASSWD: /usr/local/bin/script ARG1 ARG2
sudo
这对于更改程序/脚本内的用户也非常有用,这是我的脚本之一的一行:
sudo -i -u "$user" user="$user" CURRENTDIR="$CURRENTDIR" BASHRC="$BASHRC" bash <<'EOF'
我怎么写“脚本将检测它是否以正确的权限运行,而根本不调用sudo”?
https://www.cyberciti.biz/tips/shell-root-user-check-script.html
how-do-i-determine-if-a-shell-script-is-running-with-root-permissions
bash/sh:
#!/bin/bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ]
then
echo "I AM ROOT, HEAR ME ROAR"
fi
csh:
#!/bin/csh
if ( `id -u` == "0" )
then
echo "I AM ROOT, HEAR ME ROAR"
endif
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "You must be a root user" 2>&1
exit 1
else
mount /dev/sdb1 /mnt/disk2
fi
根据绅士@terdon的要求进行编辑:
以这种方式考虑您的脚本...。
它是公共脚本吗(您将使用的其他人除外)该脚本有什么作用?它告诉你时间吗?还是在200个系统上更新iptables?如果仅使用它,它是与工作/专业相关的还是个人使用的?
您只需要事先知道用户组的组成即可。
如果是written
给予或出售给管理员,即使如此,为什么不应该script
被允许以root
?? 运行?它有什么害处?
真正的脚本/程序通常以特权用户身份运行,没有人提到那没问题,但是当程序员(大多数是像我这样的新手)谈论这些问题时,那就是真正的安全威胁........指的是试图说的,虽然不是很优雅,但有些人正在查看您对的控制system
以及您的代码....您是否将文件设置为比将要使用的更多权限,您是否已进行所有检查逻辑还是才华横溢的程序员会一眼看到代码中的危险?
如果您code needs root
使用sudo
,并且有很多,只需将其运行为root.
......我的答案就此结束
sudo
有默认的凭据缓存。您的平台上是否禁用了此功能?