linux su命令之用户之间切换(包含su和su-的区别)案例详解_LINUX_操作系统

来源:脚本之家  责任编辑:小易  

su 是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。

普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密码,直接可切换成功。

su 命令的基本格式如下:

[root@localhost ~]# su [选项] 用户名

选项:

-:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。 -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。 -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。 -m:和 -p 一样; -c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。

【例 1】

[lamp@localhost ~]$ su -root
密码: <-- 输入 root 用户的密码
#"-"代表连带环境变量一起切换,不能省略

【例 2】

[lamp@localhost ~]$ whoami
lamp
#当前我是lamp
[lamp@localhost ~]$ su - -c "useradd user1" root
密码:
#不切换成root,但是执行useradd命令添加user1用户
[lamp@localhost ~]$ whoami
lamp
#我还是lamp
[lamp@localhost ~]$ grep "user1' /etc/passwd
userl:x:502:504::/home/user1:/bin/bash
#user用户已经添加了

除了像例 2 这样,执行一条命令后用户身份会随即自动切换回来,其他切换用户的方式不会自动切换,只能使用 exit 命令进行手动切换,例如:

[lamp@localhost ~]$ whoami
lamp
#当前我是lamp
[lamp@localhost ~]$ su - lamp1
Password:   <--输入lamp1用户的密码
#切换至 lamp1 用户的工作环境
[lamp@localhost ~]$ whoami
lamp1
#什么也不做,立即退出切换环境
[lamp1@localhost ~]$ exit
logout
[lamp@localhost ~]$ whoami
lamp

su 和 su - 的区别

注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。

举个例子,普通用户 lamp 通过 su 命令切换成 root 用户,但没有使用 - 选项,这样情况下,虽然看似是 root 用户,但系统中的 $PATH 环境变量依然是 lamp 的(而不是 root 的),因此当前工作环境中,并不包含 /sbin、/usr/sbin等超级用户命令的保存路径,这就导致很多管理员命令根本无法使用。不仅如此,当 root 用户接受邮件时,会发现收到的是 lamp 用户的邮件,因为环境变量 $MAIL 也没有切换。

初学者可以这样理解它们之间的区别,即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误(例如无法使用 service 命令)。

通过下面这个例子,可直观的看到 su 和 su - 的区别:

[lamp@localhost ~]$ whoami
lamp
#查询用户身份,我是lamp
[lamp@localhost ~]$ su root
密码:
<-输入root密码
#切换到root,但是没有切换环境变量。注意:普通用户切换到root需要密码
[root@localhost ~]# env | grep lamp
#查看环境变量,提取包含lamp的行
USER=lamp
#用户名还是lamp,而不是root
PATH=/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lamp/bin
#命令査找的路径不包含超级用户路径
MAIL=/var/spool/mail/lamp
PWD=/home/lamp
LOGNAME=lamp
#邮箱、主目录、目前用户名还是lamp

可以看到,在不使用 su - 的情况下,虽然用户身份成功切换,但环境变量依旧用的是原用户的,切换并不完整。

到此这篇关于linux su命令之用户之间切换(包含su和su-的区别)案例详解的文章就介绍到这了,更多相关linux su命令之用户之间切换(包含su和su-的区别)内容请搜索真格学网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持真格学网!


  • 本文相关:
  • sublime text 3特别版 for linux v3.3176 64位(附注册码+安装教程)
  • 寿司浏览器专业版(sushi browser pro) v0.16.6 linux版
  • schrodinger suites 2018-1 中文特别版 win/linux版(附安装破解教程) 6
  • ds simulia suite 2018 linux64位 安装特别版(附破解文件+破解步骤)
  • avl workspace suite 2016 (发动机设计优化分析) 破解安装版 (附安装教
  • oasys suite(有限元分析软件) v13.1 for linux 64位 官方免费版(附安装
  • gt-suite v2016 b2 for win/linux 安装特别版(附破解文件)
  • linux su 命令 到 root 是怎样 将用户名 和密码 一起输入 而不必 ...
  • Linux中切换用户的命令是su或su -。
  • linux 仅允许Admin用户组用户使用su命令切换到root用户。
  • Linux视频教程:用户管理命令userdel和su
  • 怎样把linux客户端用户禁止用 su命令来切换用户
  • 在linux中,切换用户命令:su root和su - root有何不同?现在只知道...
  • Red Hat enterprise Linux6.5 中普通用户su命令到其他用户提示...
  • linux系统的su命令
  • 关于linux中的su命令
  • linux 下普通用户怎么切换到root用户?su和sudo都不好用,是我的...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全主页操作系统linuxsugt-suite v2016 b2 for win/linux 安装特别版(附破解文件)bios系统安装系统进程windows系列linuxredhat/centosubuntu/debianfedorasolaris麒麟系统红旗linuxunix/bsd苹果mac注册表鸿蒙系统其它系统linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结linux crontab定时执行任务 命令格式与详细例子linux top 命令解析 比较详细linux下提示bash:command not found linux中zip压缩和unzip解压缩命令详解linux下配置ip地址四种方法(图文方法)史上最全的linux系统 iso下载linux su和sudo命令的区别linux ln 命令使用参数详解(ln -s 软链接)linux下磁盘分区详解 图文linux su命令之用户之间切换(包含su和su-的区别)案例centos7安装clickhouse并设置用户名密码案例详解deepin20子网掩码在哪? deepin查看子网掩码的技巧deepin20文件怎么共享? deepin文件共享给windows的技deepin20怎么新增字体? deepin20安装字体的教程linux系统下安装dubbo-admin的详细过程linux环境下使用tc工具模拟延时和丢包linux如何给文件权限? linux给文件添加可执行权限的技深度操作系统 deepin 20.2 发布 deepin20.2更新内容汇deepin20桌面图标样式怎么修改? deepin更换图标主题的
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved