修改环境变量PATH

最近为root添加一个环境变量发现sudo su进去没有变化所以总结了一下所有设置环境变量的方法:

查看PATH:echo $PATH

  1. 直接在命令行修改,就可以使用,但是只有在当前的窗口和用户有用,

    关闭以后就失效了,所以如果是临时使用可以这样设置
export PATH=/usr/test/bin:$PATH
  1. 修改家目录下.bashrc文件,只对当前用户有用,是永久的,除非删除或者修改该文件。

    如果只是自己使用添加的命令的推荐使用。

    修改文件以后有两种方法使其起作用:

    • 关闭当前终端窗口,重新打开一个新终端窗口就能生效
    • 输入 source ~/.bashrc 命令,立即生效
vim ~/.bashrc
export PATH=/usr/test/bin:$PATH
  1. 修改profile文件,修改类似 .bashrc 但是作用范围不一样,该文件针对所有用户的环境变量。

    如果要是所有的用户都是用该变量修改这个文件。

    生效方法:系统重启或者输入 source /etc/profile 命令,立即生效

    vim /etc/profile

  2. 修改environment文件

vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"中加入 ":/usr/local/mongodb/bin"
* 生效方法:系统重启
* 有效期限:永久有效
* 用户局限:对所有用户
  1. 修改/etc/login.defs文件: 这个文件是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,

    密码的最大长度约束等内容,如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是

    说/etc/shadow的配置优先级高于/etc/login.defs,该文件里的配置对root用户无效,但是环境变量PATH有效
/*
*REQUIRED* The default PATH settings, for superuser and normal users.
*
*(they are minimal, add the rest in the shell startup files)
*/
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/ovs/bin:/ovs/sbin:/pica/bin ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/ovs/bin:/pica/bin

总结:

当我们通过ssh登录到系统的时候读取环境变量是有顺序的,也就是上面的几种设置方法可能会被覆盖。

/* linux登录时设置PATH的顺序从上到下 */
login.defs
/etc/environment
/etc/profile
~/.profile
~/.bashrc

当我们设置了PATH后,发现 sudo su 切换到root用户的PATH没有改变,只有login.defs~/.bashrc设置生效

或者使用 sudo su - 就可以获得更新的环境变量

$ man su

SU(1)

NAME
su - change user ID or become superuser DESCRIPTION
The su command is used to become another user during a login session. Invoked without a username, su defaults to becoming the superuser. The optional argument - may be used to
provide an environment similar to what the user would expect had the user logged in directly. Additional arguments may be provided after the username, in which case they are supplied to the user's login shell. In particular, an argument of -c will cause the next argument
to be treated as a command by most command interpreters. The command will be executed by the shell specified in /etc/passwd for the target user. You can use the -- argument to separate su options from the arguments supplied to the shell. The user will be prompted for a password, if appropriate. Invalid passwords will produce an error message. All attempts, both valid and invalid, are logged to detect abuse of
the system. The current environment is passed to the new shell. The value of $PATH is reset to /bin:/usr/bin for normal users, or /sbin:/bin:/usr/sbin:/usr/bin for the superuser. This may
be changed with the 'ENV_PATH' and 'ENV_SUPATH' definitions in /etc/login.defs. A subsystem login is indicated by the presence of a "*" as the first character of the login shell. The given home directory will be used as the root of a new file system which
the user is actually logged into. OPTIONS
-, -l, --login
Provide an environment similar to what the user would expect had the user logged in directly. When - is used, it must be specified before any username. For portability it is recommended to use it as last option, before any username. The other forms (-l and --login)
do not have this restriction.

sudo su 后加在 /etc/profile 的变量不能继承

通常,为了防御别人攻击,我们一般会把root给禁止远程登录,只能通过普通用户登录然后切换root的方法,

双重验证来增加安全性,普通的做法有以下几种:

  1. 登录后用su切换

这种做法是最安全,当然也是最繁琐的,因为你需要记住两个密码,一个是普通用户的密码,

一个是root用户的密码,缺一个都进不去root权限

  1. 让普通用户拥有sudoer权限,登录后用sudo su切换

通过visudo增加一行

test ALL=(ALL:ALL) ALL

那么用户test登录后可以直接输入sudo su,再输入一次自己的密码即可转换为root用户,

这种方式是比较不安全的,因为只需要知道test用户的密码,其实就相当于拥有了root权限,

不过却是比较方便的进入方式,可以限制以下test变成root后的权限,不要像上面一样全部

给ALL即可保证比较高的安全性。当然这种方式也有一个弊端就是变成root后加在

/etc/profile的变量不能继承,所以通常我们会用下面的做法

  1. sudo su - 让普通用户变成root后还能继承之前的环境变量

  2. 把环境变量写到 ~/.bashrc

实测发现,sudo su之后,/etc/profile~/.profile的变量都不会被导入,但是 ~/.bashrc 会

Linux环境变量设置的更多相关文章

  1. 转:Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH

    转:  https://www.linuxidc.com/Linux/2017-03/142338.htm 文章写比较全  转载记录 Linux环境变量设置方法总结 PATH.LD_LIBRARY_P ...

  2. linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)

    linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH) http://blog.csdn.net/wangeen/article/details/8159500 设置 Linux ...

  3. [转帖]Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH

    Linux环境变量设置方法总结 PATH.LD_LIBRARY_PATH 2018年01月17日 21:10:26 晨至曦 阅读数 7548 https://blog.csdn.net/qq_1900 ...

  4. linux环境变量设置错误后的恢复方法(转)

    原文: http://blog.csdn.net/hoholook/article/details/2793447 linux环境变量设置错误后的恢复方法 中国自学编程网收集整理  发布日期:2008 ...

  5. 【转】linux环境变量设置

    1. 显示环境变量HOME $ echo $HOME /home/terry 2. 设置一个新的环境变量WELCOME $ export WELCOME="Hello!" $ ec ...

  6. Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)

    说明:在研究中发现,对于不同版本的Linux系统有着不同的文件,但是总的入口是不变的/etc/profile,下面只是展示加载顺序的研究过程,所以会有些系统没有这个文件等问题. 一.配置文件与作用域: ...

  7. Linux 环境变量设置的几种方法

    From:http://home.eeworld.com.cn/home.php?mod=space&uid=291513&do=blog&id=40557 环境变量是和She ...

  8. linux环境变量设置和默认执行语句设置

    环境变量设置 1.export export ORACLE_HOME=/usr/local/instantclient_12_2export PATH=$ORACLE_HOME:$PATHexport ...

  9. Linux 环境变量 设置 etc profile

    一.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.永久的:需要修改配置文件,变量永久生效. 2.临时的:使用export命令声明即可,变量在关闭shell时失效. 二. ...

随机推荐

  1. 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态

    最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...

  2. “不给力啊,老湿!”:RSA加密与破解

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 加密和解密是自古就有技术了.经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫 ...

  3. 跟我一起云计算(5)——Shards

    什么是sharding Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库 (server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而 ...

  4. C++中的事件分发

    本文意在展现一个C++实现的通用事件分发系统,能够灵活的处理各种事件.对于事件处理函数的注册,希望既能注册到普通函数,注册到事件处理类,也能注册到任意类的成员函数.这样在游戏客户端的逻辑处理中,可以非 ...

  5. ABP文档 - 后台作业和工作者

    文档目录 本节内容: 简介 后台作业 关于作业持久化 创建一个后台作业 在队列里添加一个新作业 默认的后台作业管理器 后台作业存储 配置 禁用作业执行 Hangfire 集成 后台工作者 创建一个后台 ...

  6. 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解

    工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...

  7. 前端学HTTP之web攻击技术

    前面的话 简单的HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象.应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用等资源才是攻击目标.本文将详细介绍攻击web站点 ...

  8. 如何利用ETW(Event Tracing for Windows)记录日志

    ETW是Event Tracing for Windows的简称,它是Windows提供的原生的事件跟踪日志系统.由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事 ...

  9. [systemtap手记]debian体系安装过程

    Debian体系,本人测试用机 Ubuntu 11.10 uname -r 查看原本的内核版本为 3.0.0-12-generic 第一步: 安装systemtap包 $ sudo apt-get i ...

  10. bzoj3037--贪心

    题目大意: applepi手里有一本书<创世纪>,里面记录了这样一个故事--上帝手中有着N 种被称作"世界元素"的东西,现在他要把它们中的一部分投放到一个新的空间中去以 ...