Sudo环境变量继承】的更多相关文章

sudo中默认配置会重置环境变量,所以使用sudo的时候需要小心这点.如何让sudo继承我们需要的环境变量?有如下两种方法: #sudo visudo 或者 #vi  /etc/sudoers     在Defaults env_keep添加JAVA_HOME和PATH就可以继承下来已有的环境变量了. 或者 1.编辑/etc/sudoers文件把Defaults env_reset改成Defaults !env_reset 2.编辑.bashrc,最后添加alias sudo='sudo env…
这是第一次在博客园中写自己的随笔,也是第一次使用Markdown的编辑环境,值得纪念一下!希望在以后学习linux的道路上能多多记录自己的学习心得和遇到问题的解决方法,朝着运维的方向迈出坚实的脚步. 问题描述 最近在编译一个开源软件时,在好不容易配置好各种编译环境之后,由于各种权限问题还是无法正常进行编译,所以索性切换到root用户下进行编译,这时自然不存在所谓的无权限问题了.但是有时候并不想在root用户和普通用户来回切换,说白了就是懒得输入root用户的密码,太长了.于是就想到了sudo命令…
1. sudo 和 root不完全等效,继承的环境变量不一样,最主要的区别还是输入的密码不同. 2. 使用sudo去执行一个程序时,出于安全的考虑,这个程序将在一个新的.最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了.由于环境变量的原因,比如pip可以执行,但是sudo pip不一定可以执行(PATH改变了,除非加上完整路径). 3. 默认情况下sudo会重置PATH环境变量,赋给PATH的值在/etc/sudoers文件中的“Defaults …
centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件  nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式  发邮件命令mail 2015-4-8 第十二节课 set unset export 上半节课 history:命令历…
sudo执行脚本找不到变量 问题 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能获取到值,如题情况如下: $ cat tesh.sh echo $var $ var=aaa $ export var # export 变量 $ sudo echo $var # sudo执行echo命令,返回变量值 aaa $ sudo bash test.sh # sudo执行脚本,不能获取变…
通过sudo -l来查看sudo的限制: $ sudo -l Matching Defaults entries for xxx on this host: env_reset, mail_badpass,secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User xxx may run the following commands on this host: (ALL : ALL) NOP…
简介 变量 普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能获取到值,如题情况如下: $ cat tesh.sh echo $var $ var=aaa $ export var # export 变量 $ sudo echo $var # sudo执行echo命令,返回变量值 aaa $ sudo bash test.sh # sudo执行脚本,不能获取变量值 $ bash te…
https://askubuntu.com/questions/57915/environment-variables-when-run-with-sudo https://www.phusionpassenger.com/library/indepth/environment_variables.html 环境变量放在sudo前面会失效,放到sudo后面可以生效…
1. sudo就是普通用户临时拥有root的权限.好处在于,大多数时候使用用户自定义的配置,少数情况可以通过sudo实现root权限做事. 故而,需要注意的一点是,在你使用了sudo后,你临时不再是原先用户,不能使用属于自己的命令.举个例子:sudo source ... 该命令会执行失败,提示没有source命令.但你去掉sudo,又可以执行了.(从侧面可以反映sudo不等于获得root所有权限.)莫要滥用sudo. 2. 系统环境变量,对应/etc/profile文件,对所有用户有效.而用户…
问题: 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本, 然后再sudo执行脚本,就找不到变量,未能获取到值. 原因 sudo运行时,会默认重置环境变量为安全的环境变量,也即,但前设置的变量都会失效,只有少数配置文件中指定的环境变量能保存下来. sudo的配置文件是 /etc/sudoers 需要root权限才能读取: 在/etc/sudoers中修改:Defaults    env_reset为:Defaults   …
编译Linux内核的最后是make modules_install install,这两个一般都需要root权限,即sudo,而一般我交叉编译内核时都是在.bashrc中export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 等等,而sudo默认会复位掉环境变量,导致设置的变量无效. sudo visudo 执行以上命令,在打在的文件中 Defaults env_reset行下面加一行 Defaults env_keep="ARCH CROSSED_…
现象,我在/etc/profile里设置全局代理,然后使用命令 1.curl http://www.baidu.com  走代理 2.sudo curl http://www.baidu.com 并没有走代理 使用env和sudo env查看环境变量,发现代理设置只存在于env里,sudo env里并没有代理的信息 那么如何使用sudo的时候,把环境变量也带进去呢? 方法一. 在/etc/sudoers中添加以下内容作用相同: Defaults !env_reset 方法二. 可以把需要传递环境…
如果系统不能通过root登陆,而是需要使用其他用户sudo的方式登陆root,那么root的环境变量很难设置,修改/etc/profile也没有用.可以通过下面这个方式解决 修改sudoer的配置文件 visudo 在 Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin 这一行,后面追加你想要的环境变量,这个设置实时生效.比如,我想把/usr/local/bin添加进去,改后如下 Defaults    secure_path = /s…
参考这里:https://www.cnblogs.com/zhongshiqiang/p/10839666.html 使用sudo -E 保留当前用户环境,这时就不会存在找不到环境变量的问题了.…
文件末尾加入下面 JAVA_HOME 是jdk主目录 export JAVA_HOME=/usr/jdkexport JRE_HOME=${JAVA_HOME}/jre  export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  export PATH=${JAVA_HOME}/bin:$PATH 保存 source /etc/profile 尝试一下 java -version 就可以查看java版本 说明配置成功 如果你尝试sudo java…
出于安全方面的考虑,使用sudo执行命令将在一个最小化的环境中执行,环境变量都重置成默认状态.所以PATH这个变量不包括用户自定义设置的内容 在sudo用户的主目录里的.bashrc中添加如下内容即可解决 $ vim ~/.bashrc alias sudo="sudo env PATH=$PATH" 有这样一个shell脚本,其内容如下,没有给其x权限 vim test.sh #!/bin/bash echo "${PATH}" # 执行该脚本,可以看到echo输…
出于安全方面的考虑,使用sudo执行命令将在一个最小化的环境中执行,环境变量都重置成默认状态. 所以PATH这个变量不包括用户自定义设置的内容,如找不到/usr/local/bin/下面的命令在sudo用户的主目录里的.bashrc中添加如下内容即可解决 $ vim ~/.bashrc #在最下面添加如下一行 alias sudo="sudo env PATH=$PATH" source ~/.bashrc 之后sudo就有可以找到/usr/local/bin下面的命令了…
1   命令:  visudo              98gg      98行             yy           复制当前行             p             粘贴            改成   zhang   ALL(ALL)  NOPASSWD:ALL     2  修改PATH环境变量路径 PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径.比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,…
修改环境变量PATH 最近为root添加一个环境变量发现sudo su进去没有变化所以总结了一下所有设置环境变量的方法: 查看PATH:echo $PATH 直接在命令行修改,就可以使用,但是只有在当前的窗口和用户有用, 关闭以后就失效了,所以如果是临时使用可以这样设置 export PATH=/usr/test/bin:$PATH 修改家目录下.bashrc文件,只对当前用户有用,是永久的,除非删除或者修改该文件. 如果只是自己使用添加的命令的推荐使用. 修改文件以后有两种方法使其起作用: 关…
环境变量与文件查找 本节介绍环境变量的作用与用法,及几种搜索文件的方法.学会这些技巧高效地使用 Linux. 一.环境变量 1.变量 要解释环境变量,得先明白变量是什么,准确的说应该是 Shell 变量,所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中.通常变量与值是一对一的关系,可以通过表达式读取它的值赋值给其它变量,也可以直接指定数值赋值给任意变量.为了便于运算和处理,大部分的编程语言会区分变量的类型,用于分别记录数值.字符或者…
一https://www.cnblogs.com/hanshuai/p/9604730.html :whereis java //查找java 安装路径:which java //查找java 执行路径:ls -lrt /usr/bin/java :ls -lrt /etc/alternatives/java:dir :ls 列出本目录下所有文件名:pwd 显示当前路径 echo `pwd` | ls :env 显示所有环境变量 https://www.cnblogs.com/hongzg198…
Shell变量有局部变量.环境变量之分.局部变量就是指在某个Shell中生效的变量,只在此次登录中有效.环境变量通常又称“全局变量”,虽然在Shell中变量默认就是全局的,但是为了让子Shall继承当前Shell的变量,需要使用export内建命令将其导出为环境变量. 一.linux系统变量的类型 按变量的生存周期划分: 永久的:需要修改配置文件,变量永久生效.临时的:使用export命令声明即可,变量在关闭shell时失效. 在配置永久的环境变量时,又可以按照作用范围分为: 用户环境变量系统环…
CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系.下面以PATH变量为例. 1.修改/etc/profile文件,将影响全局,所有用户./etc/profile在系统启动后第一个用户登录时运行.在/etc/profile文件中添加 export PATH=/someapplication/bin:$PATH 要使修改生效,可以重启系统,或者执行 source /etc/profile ech…
百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile,为了使profile文件更改成功时,出现command not found. 是因为用户权限不够,虽然普通用户已经用sudo获取了权限(这里不是很理解为什么,也是百度出的答案,如不对,还请指正呐!). 输入 sudo -s 输入 source /etc/profile 此时输入 java -vers…
一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量. 所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)[1]: 1.系统级: (1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个…
Ubuntu下启动的时候的的加载环境变量的过程大致为: /etc/enviroment /etc/profile   -->/etc/bash.bashrc   --> /etc/profile     -->/etc/profile.d 下的所有.sh文件 ~/.profile (或~/.bash_profile 或 ~/.bash_login)   -->~/.bashrc (如果在运行bash才运行)     -->~/.bash_aliases     -->/…
Mac 启动加载文件位置(可设置环境变量) ------------------------------------------------------- (1)首先要知道你使用的Mac OS X是什么样的Shell,使用命令 echo $SHELL 如果输出的是:csh或者是tcsh,那么你用的就是C Shell. 如果输出的是:bash,sh,zsh,那么你的用的可能就是Bourne Shell的一个变种. Mac OS X 10.2之前默认的是C Shell. Mac OS X 10.3之…
近期因要学习一门技术,必须在Linux下运行,故开始学习如何使用Linux. 在安装jdk时出现了困难,环境变量配置不成功,花了一天时间才搞定,特分享出来,供大家参考. Linux下安装jdk,步骤如下 1:下载jdk包:本章使用的为后缀为tar.gz的文件(不需要安装),如jdk-7u67-linux-i586.tar.gz 2: 把jdk文件保存至Linux下目录:通过控制台,使用mkdir命令生成user/java目录,并把文件放入其下 3:解压tar.gz文件:通过控制台,进入user/…
linux中环境变量分为系统环境变量和用户环境变量(和window中一样),系统环境变量对所有系统用户都有效,用户环境变量只对当前用户有效,我们以ubuntu为例说明 用户环境变量 用户环境变量通常存储在下面文件中 ~/.profile ~/.bash_profile或~/.bash_login ~/.profile 系统环境变量 系统环境变量通常存储在下面文件中 /etc/environment /etc/profile /etc/bash.bashrc 修改环境变量 如想将一个路径加入到$P…
在上文中曾说到: 所谓的环境变量的真实面目其实就是个任意字符串 Bash 在启动时会将 environ 数组中包含 = 号的字符串导入成为自己的变量 Bash 在启动外部命令时会将自己内部标记为环境变量的变量重组成字符串数组赋值给 environ 本文中继续深入讲三点: environ 数组中可能存在 = 左边名字相同的元素,也就是同名的环境变量,Bash 是怎么导入的? Bash 还可以从环境变量中导入函数,甚至同时导入两个同名的变量和函数 Bash 还可以同时导出两个同名的变量和函数 如果有…