Linux:sudo命令 :在执行命令时保留用户环境

前言:


在调用某些脚本时,有可能需要root权限。这就需要在执行脚本时,使用sudo命令。

但很尴尬的是,脚本中需要修改当前用户的配置文件。

于是导致:

  • 不使用sudo命令,无法执行脚本。

  • 使用sudo命令,修改的是/root目录下的配置文件。

无法修改当前用户的配置文件。


通过查看sudo 命令的帮助,解决了上述问题。

使用sudo 命令时,加上参数-E

[adams@tmp]$ sudo --help
sudo - 以其他用户身份执行一条命令

usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...

选项:
  -A, --askpass               使用助手程序进行密码提示
  -b, --background            在后台运行命令
  -C, --close-from=num        关闭所有 >= num 的文件描述符
  -E, --preserve-env          在执行命令时保留用户环境
  -e, --edit                  编辑文件而非执行命令
  -g, --group=group           以指定的用户组或 ID 执行命令
  -H, --set-home              将 HOME 变量设为目标用户的主目录。
  -h, --help                  显示帮助消息并退出
  -h, --host=host             在主机上运行命令(如果插件支持)
  -i, --login                 以目标用户身份运行一个登录 shell;可同时指定一条命令
  -K, --remove-timestamp      完全移除时间戳文件
  -k, --reset-timestamp       无效的时间戳文件
  -l, --list                  列出用户权限或检查某个特定命令;对于长格式,使用两次
  -n, --non-interactive       非交互模式,不提示
  -P, --preserve-groups       保留组向量,而非设置为目标的组向量
  -p, --prompt=prompt         使用指定的密码提示
  -r, --role=role             以指定的角色创建 SELinux 安全环境
  -S, --stdin                 从标准输入读取密码
  -s, --shell                 以目标用户运行 shell;可同时指定一条命令
  -t, --type=type             以指定的类型创建 SELinux 安全环境
  -U, --other-user=user       在列表模式中显示用户的权限
  -u, --user=user             以指定用户或 ID 运行命令(或编辑文件)
  -V, --version               显示版本信息并退出
  -v, --validate              更新用户的时间戳而不执行命令
  --                          停止处理命令行参数
[adams@tmp]$ 

测试过程:

[adams@tmp]$ cat test.sh 
#!/bin/bash

echo ${HOME}

[adams@tmp]$ sh test.sh 
/home/adams
[adams@tmp]$ sudo sh test.sh 
[sudo] password for adams: 
/root
[adams@tmp]$ sudo -E sh test.sh 
/home/adams
[adams@tmp]$ 
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读