shell命令--su
0、su命令的专属图床
点此快速打开文章【图床_shell命令su】
1、su命令的功能说明
su
命令用于变更为其他使用者的身份,除 root
外,需要键入该使用者的密码。使用权限:所有使用者。
2、su命令的语法格式
SYNOPSIS
su [options...] [-] [user [args...]]
3、su命令的选项说明
- -f 或 --fast:不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
- -m -p或--preserve-environment:执行 su 时不改变环境变数
- -c command 或 --command=command:变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
- -s shell或 --shell=shell:指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
- --help:显示说明文件
- --version:显示版本资讯
- - -l 或 --login:这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
- USER:欲变更的使用者帐号
- ARG:传入新的 shell 参数
4、su命令的实践操作
范例1:由超级用户
root
切换到普通用户 usertest
(加参数 -
)
useradd usertest
whoami
su - usertest
whoami
env |grep "^PWD" -->家目录改变了, 是因为加了参数 -
范例2:由普通用户
usertest
切换到超级用户root
不加参数 -
whoami
su root -->输入root密码
whoami
env |grep "^PWD" -->家目录没有变,环境变量也没有变
加参数 -
su - usertest -->切换成普通用户,此时也可以使用Ctrl+d切换
whoami
su - root
whoami
env |grep "^PWD" -->家目录改变了, 是因为加了参数 -
范例3:普通用户使用
root
身份执行命令
su - usertest -->切换成普通用户,此时也可以使用Ctrl+d切换
whoami
ls -l /root -->先直接查看,看看是否可以
su - -c "ls -l /root" -->还是需要输入root密码的
范例4:让系统开机时自动以普通用户启动指定的服务脚本
echo "su - usertest -c '/bin/sh /server/scripts/deploy.sh'" >>/etc/rc.local
tail -1 /etc/rc.local
企业面试案例
使用
usertest
用户登录到 Linux
系统后,发现提示符为如下所示异常情况,请问该如何恢复到正常的 Linux
命令行提示符情况?
-bash-4.2$
-bash-4.2$
首先模拟故障重现,如下步骤:
useradd usertest -->有此用户请忽略
su - usertest
rm -f .bash*
exit -->也可使用快捷键Ctrl+d
su - usertest -->切换用户,故障重现
下面是故障恢复方案及步骤:
cp -ar /etc/skel/.bash* ~/
exit -->也可使用快捷键Ctrl+d
su - usertest
source ./.bash_profile ./.bashrc -->若还未生效,则执行此命令
提示:
若是没有权限复制文件,则切换到 root 用户下再复制
su - root
cp -ar /etc/skel/.bash* /home/usertest