资讯专栏INFORMATION COLUMN

通过更改sudoer文件来配置sudo 默认home目录以及环境变量

HollisChuang / 2798人阅读

摘要:解决方法修改文件添加用户名注意以上修改的仅仅是当前用户的环境变量规则,也就是说,在当前用户下使用不会更改环境变量,但是后进入的是用户,再提权即用户使用,那么环境变量依然遵循用户的配置。

这个问题主要会引起一些软件环境变量方面的困扰,比如使用了 zshsudo -s后发现主题消失,或者其它软件类似的现象,主要原因是使用了sudo -s后当前用户为root用户,环境变量改变,导致配置文件失效。

解决方法: 修改sudoers文件:
sudo visudo
sudo vim/etc/sudoers
添加:
Defaults:用户名 !env_reset

注意:以上修改的仅仅是当前用户的环境变量规则,也就是说,在当前用户下使用sudo不会更改环境变量,但是sudo -s后进入的是root用户,再提权即root用户使用sudo,那么环境变量依然遵循root用户的配置。
如果想root后也保留当前环境配置,需要额外设置,参考下文。

参考:

主要是受到下篇启发

How do I make sudo preserve my environment variables?

Using sudo 1.7.4p4 on Solaris 5.10 and sudo 1.6.7p5 on RHEL4 u6 I can"t see how to preserve my environment variables, for instance $PYTHONPATH. I"ve added this line to sudoers, but it doesn"t make any difference:

Defaults !env_reset

Am I doing something wrong, or is the sudo installation simply not respecting the env_reset flag?

Edit: At least on Solaris, we"ve found that this issue depends on the shell! The standard root shell is Bourne, if we run bash under sudo (sudo bash) on the other hand, !env_preset will preserve the environment (including PATH and LD_LIBRARY_PATH). This is rather confusing behaviour I have to say.

这篇文章展示了对当前用户的变量设置

How do I set environment variable for all users even when doing sudo su?
Is there any way to specify that sudo should preserve certain environment variables for specified commands only? For some purposes I"d like my $HOME env. variable preserved when I run certain commands. For other purposes and other commands, I want it reset. Can this be done with /etc/sudoers?

Edit:

Thank you for the answers. I wonder if I might ask a follow-up question, which is "Why, then, does this not work?"

In the example I"m trying to get working, I want sudo nano to read my $HOME/.nanorc. If I use this:

Defaults:simon env_keep=HOME
it works perfectly. If I use this:

Defaults!/bin/nano env_keep=HOME
or this:

Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
it"s not working at all. Any suggestions as to why? (I"m on Debian testing, btw.)

(Note: I don"t think it"s nano specific, btw -- I can reproduce the behaviour with a one-line bash script that simply echos $HOME).

其他文章

`/etc/sudoers` — specify `env_keep` for one command only?
How is sudo set to not change $HOME in Ubuntu and how to disable this behavior?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10784.html

相关文章

  • linux-文件权限以及用户权限

    摘要:写入具有删除移动修改目录内文件的权限。,执行该用户具有进入目录的权限。 rwx root用户除外 root用户不受任何限制 文件: r(read,读取):对文件而言,具有读取文件内容的权限; w(write,写入):对文件而言,具有新增、修改文件内容的权限; x(execute,执行):对文件而言,具有执行文件的权限; [skyuser1@VM_158_86_centos test]$...

    Joonas 评论0 收藏0
  • linux的用户管理

    摘要:用户管理基础用户存在的意义限定权力用户组存在得意义开放权力查看当前用户查看当前用户系统中用户的查看用户身份的唯一表示查看用户查看用户的初始组查看用户所在的所有组的查看名字而不显示数字,需要与其他命令组合使用示意图用户切换用户名表 1.用户管理基础 用户存在的意义:限定权力用户组存在得意义:开放权力 1.查看当前用户 whoami #查看当前用户 2.系统中用户的查看 id:用户身份的唯...

    Guakin_Huang 评论0 收藏0
  • VPS搭建个人Hexo博客

    摘要:原文地址作为一个天天造的人,必然要经常访问谷歌等网站,所以前些日子买了自己搭了梯子。今天就跟大家分享一下,如何使用搭建个人博客。创建用户,建立裸库,配置。 原文地址:https://www.xksblog.top/use-V... 作为一个天天造BUG的人,必然要经常访问谷歌等网站,所以前些日子买了VPS自己搭了梯子。但如果只是用VPS来搭梯子那就太浪费了,所以又折腾了一天,把自己之...

    warmcheng 评论0 收藏0
  • 搭建团队git工作环境 [完整流程记录]

    摘要:服务器环境客户机环境本文使用管理员进行操作服务器安装若碰到如下报错无错忽略这里直接恢复权限为即可需要管理员权限。 服务器环境 Linux CentOS 6.5 (IP:192.168.1.101) 客户机环境 Mac (IP:192.168.1.100) 本文使用管理员进行操作 1. [服务器] 安装git $ sudo yum install git 若sudo碰到如下报错(无错...

    lucas 评论0 收藏0
  • Ubuntu-16 下更改用户名

    摘要:但是改用户名及涉及到的配置文件的时候,一定要小心,因为稍有疏忽,就会造成重启后无法登陆的情况。本篇文章基于如下假设已有的用户名为,此账户有权限,并且此账户有修改下面涉及到的配置文件的权限期望的用户名为。 有些时候,我们不满意安装时起的用户名,但是之前已经在这个用户上做了好多配置,所以最好的方式是修改用户名为我们期望的,而不是重新创建一个新的用户名,来重新做配置。 但是改用户名及涉及到的...

    fnngj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<