修改权限与根脚本执行。 什么更好?
每次暂停后,当我唤醒我的笔记本电脑时,它从不连接到任何网络,必须重新启动NetworkManager。 所以,出于懒惰,我写了这个脚本按预期工作正常。
我使用了if
块来检查脚本是否总是由root用户执行:
if [ $(id -u) -ne 0 ] then echo "ERROR : Root Priveleges Required" exit NOT_ROOT else netrestart fi
我给了这个脚本这个权限(执行这个命令时是root):
chmod u+x netrestart
现在,当我以非root用户身份运行此脚本时,它会显示此信息
bash: ./netrestart: Permission denied
然后,使用sudo
运行脚本运行正常
sudo ./netrestart
我认为这使得脚本中的根检查毫无用处。 现在我有两个问题:
-
我要删除那部分代码还是仍在脚本中使用?
-
什么更好,怎么样?
- 检查用户是否是脚本中的root用户并为每个人提供执行权限,即
chmod 755 netrestart
- 在脚本本身设置正确的所需权限,不包括检查脚本中是否为root用户,即
chmod 711 netrestart
- 检查用户是否是脚本中的root用户并为每个人提供执行权限,即
我认为您的脚本可以压缩为:
#!/bin/bash NOT_ROOT=2 sudo service network-manager restart || exit $NOT_ROOT if service network-manager status then echo "Successfully Restarted NetworkManager" else echo "ERROR : Failed to work" exit 1 fi
sudo
将检查您的root访问权限,并在必要时提示。 service ... status
检查将更可靠地告诉您NetworkManager是否正常启动。
您可以将此脚本的执行权限授予每个人, sudo
将负责权限检查。