详细讲解Linux切换用户su指令误区

1.背景

为了安全起见,通常在Linux环境下进行的一般作业建议使用一般账号

这是因为root账号的权限过于庞大,常常会因为不小心的误操作导致系统错误,严重了还会致使系统瘫痪、崩溃。

因此建议只有在需要时才切换到root账号下进行相关操作。

su是Linux环境下切换用户的操作指令

2.su指令

很多朋友在使用该指令时,往往使用如下形式:

例:从一般账号moonlit切换到root账号

$ su

那么这么做有什么不对的地方么?

我们这就来观察下账号切换前后的数据对比。

[[email protected] ~] $

切换前执行下列语句,查看环境中包含moonlit的变量:

$ env | grep ‘moonlit‘

屏幕显示如下:

USER=moonlit

MAIL=/var/spool/mail/moonlit

PATH=/usr/java/jdk1.7.0_60/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/moonlit/bin

PWD=/home/moonlit

HOME=/home/moonlit

LOGNAME=moonlit

执行切换:

$ su

Password:

输入密码后屏幕转换为:

[[email protected] ~] #

输入#pwd查看当前路径

/home/moonlit

咦,怎么还是在moonlit账号的家目录下?

再输入# env | grep ‘moonlit‘

屏幕输出:

USER=moonlit

PATH=/usr/java/jdk1.7.0_60/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/moonlit/bin

MAIL=/var/spool/mail/moonlit

PWD=/home/moonlit

LOGNAME=moonlit

看到了吧?环境木有变啊。

因为没有改变成root的环境,可能造成很多root指令错误或者无效哦。

想要完全转换用户到root可以用如下指令:

[[email protected] ~]$ su
-

键入root密码后变为[[email protected] ~]#

#pwd一下:

/root

再# env | grep ‘moonlit‘一下:

神马都没有哦。

# env一下:

这时候屏幕会将变量全部显示出来,比较多,不一一列举了,可以看到当前的家目录、PATH、MAIL等等已经全部却换为root的变量了。

最后,你可以下达#exit来退出当前root用户返回moonlit。

3.总结

其实没有-的时候系统是按照non-login shell的方式切换用户的,

而加上-时,系统是按照login shell切换的。

时间: 2024-10-09 14:15:42

详细讲解Linux切换用户su指令误区的相关文章

linux 切换用户身份、su、sudo、/etc/sudoers

Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到.这时就需要用su命令临时切换到root身份来做事了. su:substitute['s?bst?tju?t]代替 user su 的语法为: su [OPTION选项参数] [用户] -, -l, --login 登录并改变到所切换的用户环境: -c, --commmand=COMMAND 执行一个命令,然后退出所切换到的用户环境: 用su命令切换用户后,可以用 exit 命令或快捷键[Ctrl+D]可返回原登录用户

Linux su命令参数及用法详解--Linux切换用户命令

建议大家切换用户的时候 使用  su -  root  这样,否则可能发现某些命令执行不了 关于su .su - 及 sudo的区别 请往下看 1.命令作用 su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码. 2.使用方式 su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 3.参数说明 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种

切换用户su命令、授权sudo命令、限制root远程登录

su命令 用来切换用户的 ctrl+d退出来 su - 彻底切换用户,包括自己的配置.环境变量 [[email protected] ~]# whoami root [[email protected] ~]# su - awei 上一次登录:一 5月  7 15:44:46 CST 2018pts/1 上 [[email protected] ~]$ id uid=1000(awei) gid=1000(awei) 组=1000(awei) 环境=unconfined_u:unconfined

linux之切换用户su(switch user)

1.切换至root su 或 su root然后输入密码 这种只切换身份,不切换home工作目录 su - 或 su - root然后输入密码 这种不仅切换身份,而且切换home工作目录 2.切换至普通用户(比如:oracle) su oracle然后输入密码 这种只切换身份,不切换home工作目录 或 su - oracle然后输入密码 这种不仅切换身份,而且切换home 原文地址:https://www.cnblogs.com/czz-hl/p/9611178.html

linux普通用户su root切换提示没有文件或目录

用root无法远程和本地登录 普通用户可以远程登录,但是无法切换root 解决办法: 重启服务器进入单用户模式: 在grub上相应要启动的内核上按"e"(一般就有一个,直接按e)进入下一界面,选择第二行kernel 打头的,继续按"e"在进入文本界面后,空格,输入"single"回车进入grub界面后,按"b"即进入single模式 如果系统没有普通用户,那就新建useradd aaa ,定义密码passwd aaa回车输入密

linux创建用户su登录后显示为 bash-4.1$

今天自己做关于用户配置的练习,之后发现一个问题: su user1之后显示的为: [[email protected] ~]# su user1 -s /bin/bash bash-4.1$ 而不是正常的 [[email protected] ~]# su user1 [[email protected] root]$ 经过解决发现是 缺少环境配置文件.所以通过复制的方法将配置文件复制到用户家目录下.最终解决: 具体原因: 那么为什么需要这样文件,这就是跟linux的机制有关联了,因为在linu

详细讲解Linux驱动程序

一  编写Linux驱动程序 1.建立Linux驱动骨架 Linux内核在使用驱动时需要装载与卸载驱动 装载驱动:建立设备文件.分配内存地址空间等:module_init 函数处理驱动初始化 卸载驱动:删除设备文件.释放内存地址空间等:module_exit函数处理退出 包含这两个函数的两个宏的C程序文件也可看做是Linux驱动的骨架 2.注册和注销设备文件 任何一个Linux驱动都需要有一个设备文件,否则应用程序将无法与驱动程序交互. 建立设备文件:在第一步编写的处理Linux初始化工作的函数

linux切换用户提示bash-4.1$

此问题为配置文件异常导致 cp -pr /etc/skel/.bash* /home/test/     #test为用户目录

更改linux 切换用户时的标识符和颜色

原创,来自amunlinux 更改centos 操作系统默认的环境标识符, 更改前: 普通用户是'$'符号,无变量颜色显示 超级用户是'#'符号,无变量颜色显示 更改后: 只对当前用户生效 最所有用户生效 个人觉得还是挺好看的,去掉了原有的 中括号' [ ] ',而添加了颜色, #export PS1='\[\e]2;\[email protected]\h\a\]\[\e[01;36m\]\u\[\e[01;35m\]@\[\e[01;32m\]\H\[\e[00m\]:\[\e[01;34m