当前位置: 首页 > Linux

通过更改sudoer文件来配置sudo的默认主目录和环境变量

时间:2023-04-06 04:16:03 Linux

此问题主要会导致部分软件环境变量出现问题。比如使用zsh后,sudo-s后主题消失,或者其他软件类似现象。原因是使用sudo-s后,当前用户为root用户,环境变量发生变化,导致配置文件失效。解决方法:修改sudoers文件:sudovisudosudovim/etc/sudoers添加:Defaults:用户名!env_reset注意:上面修改的只是当前用户的环境变量规则,也就是说在当前用户下使用sudo不会改变环境变量,但是sudo-s后root用户进入,然后root用户使用sudo,那么环境变量还是沿用root用户的配置。如果要在root后保留当前环境配置,则需要进行其他设置,请参见下文。参考:主要是受下篇启动如何让sudo保留我的环境变量?在Solaris5.10上使用sudo1.7.4p4,在RHEL4u6上使用sudo1.6.7p5我看不到如何保留我的环境变量,例如$PYTHONPATH.我已经将这一行添加到sudoers,但它没有任何区别:Defaults!env_resetAm我做错了什么,或者sudo安装根本不遵守env_reset标志?编辑:至少在Solaris上,我们发现这个问题取决于外壳!标准的rootshell是Bourne,另一方面,如果我们在sudo(sudobash)下运行bash,!env_preset将保留环境(包括PATH和LD_LIBRARY_PATH)。这是我不得不说的相当令人困惑的行为。这篇文章展示了对当前用户的变量设置即使在执行sudosu时如何为所有用户设置环境变量?有没有任何方法可以指定sudo应该为所有用户保留某些环境变量仅指定命令?出于某些目的,我想要我的$HOME环境。当我保存变量运行某些命令。对于其他目的和其他命令,我希望它重置。这可以用/etc/sudoers来完成吗?编辑:谢谢你的回答。我想知道我是否可以问一个后续问题,即“那么,为什么这不起作用?”在我尝试开始工作的示例中,我希望sudonano读取我的$HOME/.nanorc。如果我使用这个:Defaults:simonenv_keep=HOME,它会完美地工作。如果我使用这个:Defaults!/bin/nanoenv_keep=HOME或者这个:Cmnd_AliasNANO=/usr/bin/nano,/bin/nano,/bin/rnanoDefaults!NANOenv_keep=HOME它根本不起作用。关于为什么的任何建议?(顺便说一句,我正在进行Debian测试。)(注意:我不认为它是nano特定的,顺便说一句——我可以用一个简单地回显$HOME的单行bash脚本重现该行为)。其他文章`/etc/sudoers`—仅为一个命令指定`env_keep`?如何将sudo设置为不更改Ubuntu中的$HOME以及如何禁用此行为?