遇到的问题

在配置linux的时候,发现一个问题:su root切换到root用户后,/etc/profile 中配置的PATH不起效果。

问题分析和疑问

  1. 是不是~/.profile,~/.bashrc等初始化当前用户的脚本有非法的初始化操作覆盖了PATH ?
  2. /etc/profile 定义的PATH不是全局有效吗?

解决办法

疑问1很快排除了,后来google 到这里找到解决思路。
用su - root 代替 su root

跟着文中提到的几个概念(登录shell,交互shell),查了一下资料,思路终于理清了。

  1. 不同用户初始的PATH是不一样的。切换用户系统会先将PATH设为初始值,然后再根据调用的初始化脚本,添加PATH中的路径。并不是所有用户共用一个PATH
  2. su - root,产生一个登录shell去执行后面的指令。登录 shell 执行的是shell 登录的流程,会执行 /etc/profile,/etc/profile.d/下定义的*.sh都会执行。
  3. su root,产生一个非登录交互shell,非登录交互shell,只执行 用户家目录下 .profile等配置文件。

一些相关的概念

  1. shell 是用户和操作系统内核通信的接口。
  2. 由于历史的原因,产生了很多shell的办法。/etc/shells文件记录了当前系统可用的shell。linux 系统默认的shell是bash。
  3. 可以通过命令: ps -ef | grep bash 查看当前活跃的shell
  4. exit 当前shell(login shell可以用logout退出)。
  5. echo $$可以查看当前shell ID , 退出shell前后可以执行这个指令进行验证。

切换用户后,/etc/profile的配置不起效的更多相关文章

  1. Linux su切换用户后命令提示符变为bash-4.2$

    2018-9-30 19:31:41 星期日 今天遇到一个问题, 给gitlab配置webhook的时候, 一个目录总是不能正确执行git pull 命令, 无任何输出, 根据之前经验, 感觉是权限的 ...

  2. Linux环境下sudo切换用户后执行其他命令

    https://blog.csdn.net/liangxw1/article/details/80106465

  3. 切换用户后whoami打印用户的问题

    问题: 为何第二个whoami打印的还是root? root@localhost /]# [root@localhost /]# [root@localhost /]# more test.sh #! ...

  4. 菜鸟-手把手教你把Acegi应用到实际项目中(11)-切换用户

    在某些应用场合中,我们可能需要用到切换用户的功能,从而以另一用户的身份进行相关操作.这一点类似于在Linux系统中,用su命令切换到另一用户进行相关操作.      既然实际应用中有这种场合,那么我们 ...

  5. 学习Acegi应用到实际项目中(11)- 切换用户

    在某些应用场合中,可能需要用到切换用户的功能,从而以另一用户的身份进行相关操作.这一点类似于在Linux系统中,用su命令切换到另一用户进行相关操作. 既然实际应用中有这种场合,那么我们就有必要对其进 ...

  6. 切换用户身份su与sudo

    普通用户切换到root用户的方式有:su和sudo. 1,su - (su为switch user,即切换用户的简写) 格式:su -l USERNAME(-l为login,即登陆的简写) -l可以将 ...

  7. Linux系统中切换用户身份su与sudo的用法与实例

    日常操作中为了避免一些误操作,更加安全地管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root用户身份去执行. 普通用户切换到root用户的方式有:s ...

  8. linux 切换用户之后变成-bash-x.x$的解决方法

    我们平时在linux下切换用户后命令行为什么会变成-bash-3.2$呢,我们来分析一下,这就是跟linux的机制有关联了,因为在linux下每次通过useradd创建新的用户时,都会将所有的配置文件 ...

  9. Linux基础命令---切换用户su

    su 临时切换身份到另外一个用户,使用su切换用户之后,不会改变当前的工作目录,但是会改变一些环境变量. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUS ...

随机推荐

  1. zepto中的scrollTo

    //zepto没有scrollTo动画,这里扩展了一个scrollTo函数 $.fn.scrollTo = function(options) { var defaults = { scrollTop ...

  2. 潭州课堂25班:Ph201805201 tornado 项目 第七课 界面美化和静态文件处理(课堂笔记)

    tornado 相关说明 使用  Bootstrap 前端框架 可以在 bootCDN 这里找 jquery ,poppe.js 文件 美化项目 twittel 的开源项目, 在 static 目录下 ...

  3. Codechef August Challenge 2018 : Safe Partition

    传送门 (虽然是A了但是不知道复杂度是不是正确的 考虑以某个位置为结尾的合法划分 先考虑min,带来的影响是限制了最小长度,预处理出这个最小长度后,这可以在处理到这个数时,把不能算的部分去掉(不满足m ...

  4. (65)Wangdao.com第十天_JavaScript 垃圾回收机制 GC

    垃圾积累过多,致使程序运行缓慢,什么是垃圾? 当堆中某个内容,再也没有指针指向它,我们将再也用不了它,此时就是一个垃圾. 出现这种情况是因为 obj = null; 此时,js 中的垃圾回收机制会自动 ...

  5. Design Principle, Design Patterns And Refactoring

    https://refactoring.guru/smells/feature-envy https://stackoverflow.com/questions/1242994/effective-c ...

  6. 在linux服务器新添加硬盘,如何识别、挂载。

    在linux服务器新添加硬盘,如何识别.怎样挂载磁盘.过程是怎么样. fdisk - manipulate disk partition tablemkfs - build a Linux files ...

  7. Weex开发中的应用小笔记

    内容: 获取输入或其他操作使得值一直改变并在一段不改变的时间后执行下一步操作(输入搜索关键字并执行搜索) https://vuejs.org/v2/guide/computed.html?spm=a2 ...

  8. Flutter学习(一)之MaterialApp和Scaffold组件使用详解

    一,前言: MaterialApp和Scaffold是Flutter提供的两个Widget,其中: MaterialApp是一个方便的Widget,它封装了应用程序实现Material Design所 ...

  9. Tengine+Lua+GraphicsMagick

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! 使用 Tengine+Lua+GraphicsMagick 实现图片自动裁剪缩放 需求 : 图片 ...

  10. redis加固

    一.背景描述 1.漏洞描述 Redis 因配置不当存在未授权访问漏洞,可以被攻击者恶意利用. 在特定条件下,如果 Redis 以 root 身份运行,黑客可以给 root 账号写入 SSH 公钥文件, ...