我想编写一个 shell 脚本,它需要sudo
特权来执行某些任务,但还需要以当前用户身份更改某些配置。我想尽可能地自动化脚本,这样它就不需要任何用户干预。
我遇到的问题是,如果我运行整个脚本sudo
,我无法更改当前用户的配置。但如果我只是添加sudo
需要 root 权限的特定命令,我将需要不断输入密码,因为脚本很长并且sudo
会超时。
有没有办法可以在当前用户中运行脚本,但sudo
在需要时保留特权?
答案1
基本上有两种方法可以走:
将需要 root 访问权限的子任务分离到不同的程序/脚本中,并以 root 身份运行该部分(通过 setuid root 二进制文件或通过
sudo
)以 root 身份运行整个程序,并通过以下方式执行必须以普通用户身份运行的部分
su - user