文件及内容处理 - id、su
1. id:查看用户的uid,gid及归属的用户组
id命令的功能说明
id
命令用于显示用户的ID
,以及所属群组的ID
。id
会显示用户以及所属群组的实际与有效ID
。若两个ID
相同,则仅显示实际ID
。若仅指定用户名称,则显示目前用户的ID
。id命令的语法格式
id
[OPTION]... [USER]id
[-gGnru][--help][--version][用户名称]id命令的常用参数说明:
id
参数不多,表1为id
命令的参数及说明:表1:
id
命令的参数及说明
参数选项 | 解释说明 |
---|---|
-g或--group | 显示用户所属群组的ID。 |
-G或--groups | 显示用户所属附加群组的ID。 |
-n或--name | 显示用户,所属群组或附加群组的名称。 |
-r或--real | 显示实际ID。 |
-u或--user | 显示用户ID。 |
-help | 显示帮助。 |
-version | 显示版本信息。 |
id命令的实践操作
范例1: 不加参数,默认当前用户
[[email protected] ~]# id
uid=0(root) gid=0(root) groups=0(root)
范例2: 显示当前用户的GID
[[email protected] ~]# id -g
0
范例3: 显示当前用户的UID
[[email protected] ~]# id -u
0
范例4: 显示指定用户信息
[[email protected] ~]# id usertest
uid=1005(usertest) gid=1005(usertest) groups=1005(usertest)
2. su:切换用户身份
su命令的功能说明
?su
命令用于变更为其他使用者的身份,除root
外,需要键入该使用者的密码。使用权限:所有使用者。su命令的语法格式
su
[options...] [-] [user [args...]]su
[-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]su命令的常用参数说明:
su
参数不多,表1为su
命令的参数及说明:表1:
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 参数 |
su命令的实践操作
范例1: 由超级用户
root
切换到普通用户usertest
(加参数-
)
[[email protected] ~]# whoami
root #当前用户为root
[[email protected] ~]# su - usertest
Last login: Thu May 23 15:07:22 CST 2019 on pts/0
[[email protected] ~]$ whoami
usertest #切换到普通用户
[[email protected] ~]$ env |grep "^PWD"
PWD=/home/usertest #家目录改变了, 是因为加了参数 -
范例2: 由普通用户
usertest
切换到超级用户root
(不加参数-
)
[[email protected] ~]$ whoami
usertest
[[email protected] ~]$ su root
Password: #需要输入root密码
[[email protected] /home/usertest]# whoami
root
[[email protected] /home/usertest]# env |grep "^PWD"
PWD=/home/usertest #家目录没有变,环境变量也没有变
退到普通用户重新测试一下:
[[email protected] ~]$ whoami
usertest
[[email protected] ~]$ su - root
Password:
Last login: Thu May 23 15:16:39 CST 2019 on pts/0
[[email protected] ~]# env |grep "^PWD"
PWD=/root #连环境变量一起切换了
范例3: 普通用户使用
root
身份执行命令
[[email protected] ~]$ whoami
usertest #当前用户
[[email protected] ~]$ ls -l /root #先直接查看
ls: cannot open directory /root: Permission denied #没有权限
[[email protected] ~]$ su - -c "ls -l /root" #使用参数
Password: #输入root密码
total 0
drwxr-xr-x 4 root root 128 May 17 09:55 key_client #显示内容
drwxr-xr-x 4 root root 147 May 17 14:39 key_server
范例4: 让系统开机时自动以普通用户启动指定的服务脚本
[[email protected] ~]# tail -1 /etc/rc.local
su - usertest -c ‘/bin/sh /server/scripts/deploy.sh‘
企业面试案例:
使用
oldboy
用户登录到Linux
系统后,发现提示符为如下所示异常情况,请问该如何恢复到正常的Linux
命令行提示符情况?-bash-4.2$ -bash-4.2$
解答:
首先模拟故障重现,如下步骤:[[email protected] ~]# su - oldboy <--> 切换oldboy用户下 Last login: Sat Mar 30 09:42:31 CST 2019 from 10.0.0.1 on pts/0 [[email protected] ~]$ rm -f .bash* <-->故障原因就是用户家目录下的环境变量不存在了 [[email protected] ~]$ logout <-->快捷键(Ctrl+d)退出当前环境 [[email protected] ~]# su - oldboy <-->重新切到oldboy用户下 Last login: Sat Mar 30 12:19:06 CST 2019 on pts/0 -bash-4.2$ <-->故障重现
下面是故障恢复方案及步骤:
方法1:永久生效(正确方法)-bash-4.2$ cp /etc/skel/.bash* ~/ <-->从/etc/skel中将所有环境变量文件复制回来,注意用户 -bash-4.2$ logout <-->快捷键(Ctrl+d)退出当前环境 [[email protected] ~]# su - oldboy <-->重新切到oldboy用户下 Last login: Sat Mar 30 12:19:55 CST 2019 on pts/0 [[email protected] ~]$ <-->故障排除 -bash-4.2$ source ./.bash_profile ./.bashrc <-->若还未生效,则执行此命令。 [[email protected] ~]$ <-->故障排除 -bash-4.2$ cp /etc/skel/.bash* . <-->没权限拷贝怎么办 cp: cannot create regular file ‘./.bash_logout’: Permission denied cp: cannot create regular file ‘./.bash_profile’: Permission denied cp: cannot create regular file ‘./.bashrc’: Permission denied -bash-4.2$ logout <-->重新切到oldboy用户下 [[email protected] ~]# cd /home/oldboy [[email protected] /home/oldboy# cp /etc/skel/.bash* . [[email protected] /home/oldboy]# su - oldboy Last login: Sat Mar 30 17:00:52 CST 2019 on pts/0 [[email protected] ~]$
方法2:临时生效(不推荐)
执行以下命令:export PS1=‘[\[\e[34;1m\]\[email protected]\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\] \w\[\e[0m\]]\$‘
今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津
原文地址:https://blog.51cto.com/14068656/2413628