Shell命令-用户用户组管理之id、su
文件及内容处理 - 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: 不加参数,默认当前用户
[root@m01 ~]# id
uid=0(root) gid=0(root) groups=0(root)
范例2: 显示当前用户的GID
[root@m01 ~]# id -g
0
范例3: 显示当前用户的UID
[root@m01 ~]# id -u
0
范例4: 显示指定用户信息
[root@m01 ~]# 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(加参数-)
[root@m01 ~]# whoami
root #当前用户为root
[root@m01 ~]# su - usertest
Last login: Thu May 23 15:07:22 CST 2019 on pts/0
[usertest@m01 ~]$ whoami
usertest #切换到普通用户
[usertest@m01 ~]$ env |grep "^PWD"
PWD=/home/usertest #家目录改变了, 是因为加了参数 -
范例2: 由普通用户
usertest切换到超级用户root(不加参数-)
[usertest@m01 ~]$ whoami
usertest
[usertest@m01 ~]$ su root
Password: #需要输入root密码
[root@m01 /home/usertest]# whoami
root
[root@m01 /home/usertest]# env |grep "^PWD"
PWD=/home/usertest #家目录没有变,环境变量也没有变
退到普通用户重新测试一下:
[usertest@m01 ~]$ whoami
usertest
[usertest@m01 ~]$ su - root
Password:
Last login: Thu May 23 15:16:39 CST 2019 on pts/0
[root@m01 ~]# env |grep "^PWD"
PWD=/root #连环境变量一起切换了
范例3: 普通用户使用
root身份执行命令
[usertest@m01 ~]$ whoami
usertest #当前用户
[usertest@m01 ~]$ ls -l /root #先直接查看
ls: cannot open directory /root: Permission denied #没有权限
[usertest@m01 ~]$ 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: 让系统开机时自动以普通用户启动指定的服务脚本
[root@m01 ~]# tail -1 /etc/rc.local
su - usertest -c '/bin/sh /server/scripts/deploy.sh'
企业面试案例:
使用
oldboy用户登录到Linux系统后,发现提示符为如下所示异常情况,请问该如何恢复到正常的Linux命令行提示符情况?
-bash-4.2$
-bash-4.2$
解答:
首先模拟故障重现,如下步骤:
[root@oldboyedu ~]# su - oldboy <--> 切换oldboy用户下
Last login: Sat Mar 30 09:42:31 CST 2019 from 10.0.0.1 on pts/0
[oldboy@oldboyedu ~]$ rm -f .bash* <-->故障原因就是用户家目录下的环境变量不存在了
[oldboy@oldboyedu ~]$ logout <-->快捷键(Ctrl+d)退出当前环境
[root@oldboyedu ~]# 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)退出当前环境
[root@oldboyedu ~]# su - oldboy <-->重新切到oldboy用户下
Last login: Sat Mar 30 12:19:55 CST 2019 on pts/0
[oldboy@oldboyedu ~]$ <-->故障排除
-bash-4.2$ source ./.bash_profile ./.bashrc <-->若还未生效,则执行此命令。
[oldboy@oldboyedu ~]$ <-->故障排除
-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用户下
[root@oldboyedu ~]# cd /home/oldboy
[root@oldboyedu /home/oldboy# cp /etc/skel/.bash* .
[root@oldboyedu /home/oldboy]# su - oldboy
Last login: Sat Mar 30 17:00:52 CST 2019 on pts/0
[oldboy@oldboyedu ~]$
方法2:临时生效(不推荐)
执行以下命令:
export PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\] \w\[\e[0m\]]\$'
今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津
Shell命令-用户用户组管理之id、su的更多相关文章
- Shell命令-用户用户组管理之useradd、usermod
文件及内容处理 - useradd.usermod 1. useradd:添加用户 useradd命令的功能说明 useradd 命令用于建立用户帐号.useradd 可用来建立用户帐号.帐号建好之后 ...
- Shell命令-用户用户组管理之visudo、sudo
文件及内容处理 - visudo.sudo 1. visudo:编辑/etc/sudoers文件的专属命令 visudo命令的功能说明 visudo命令专门用来编辑/etc/sudoers这个文件的. ...
- Shell命令-用户用户组管理之userdel、groupadd
文件及内容处理 - userdel.groupadd 1. userdel:删除用户 userdel命令的功能说明 userdel 命令用于删除用户帐号.userdel 可删除用户帐号与相关的文件.若 ...
- Shell命令-用户用户组管理之passwd、chage
文件及内容处理 - passwd.chage 1. passwd:修改用户密码 passwd命令的功能说明 passwd命令用来更改使用者的密码 passwd命令的语法格式 passwd [-k] [ ...
- Linux命令--用户用户组管理
新增用户组 : groupadd groupadd [-g GID] 组名 不加-g 则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的 修改用户组信息 : groupmod grou ...
- 数据仓库003 - 复习Linux shell命令 - 用户用户组 sudo 权限 du-sh find
一.用户用户组 [root@localhost ~]# ll /usr/sbin/user* -rwxr-x--- root root -- /usr/sbin/useradd -rwxr-x--- ...
- Linux学习之用户管理命令与用户组管理命令(十五)
Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel ...
- linux笔记:用户管理命令和用户组管理命令
用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手 ...
- linux下用户管理命令、用户组管理命令
useradd 添加新用户 1.基本语法 useradd 用户名 (功能描述:添加新用户) useradd -g 组名 用户名 (功能描述:添加新用户到某 ...
随机推荐
- Flutter 基础控件
内容: Button Image.Icon Switch.Checkbox TextField Form 1.Button RaisedButton 漂浮按钮 FlatButton 扁平按钮 Outl ...
- STL 中 list 的使用
list 容器实现了双向链表的数据结构,数据元素是通过链表指针串连成逻辑意义上的线性表,这样,对链表的任一位置的元素进行插入.删除和查找都是极快速的.由于list对象的节点并不要求在一段连续的内存中, ...
- 201871010109-胡欢欢《面向对象程序设计(java)》第十六周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- BZOJ2339/LG3214 「HNOI2011」 卡农 组合数学
问题描述 BZOJ2339 本题的一些心得 对于这种无序集合计数类问题,可以通过对方案数除以某个数的阶乘,使得无序化变为有序化. 设计DP方程时候,应该先有序的列出状态转移方程每一项的来源,并一项项推 ...
- __module__和__class__
目录 一.__module__ 二.__class__ # lib/aa.py class C: def __init__(self): self.name = 'SB' # index.py fro ...
- java图形界面 计算器实现
编写程序实现一个简单计算器的基本功能,具体可以模仿Windows附件中的计算器或模拟常见的实物计算器. package beizi; import java.awt.EventQueue; impor ...
- Samba基础配置
本文环境:CentOS 7 简介 在UNIX-like之间共享文件系统主要是通过NFS实现的,而Windows之间共享文件系统主要是通过基于NetBIOS的网上邻居实现的,1984年Andrew Tr ...
- IT兄弟连 HTML5教程 HTML5的基本语法 简单HTML实例制作
现在学习HTML5的方式 目前HTML还处于HTML4与HTML5之间的过渡使用阶段.移动端的Web界面开发已经全面使用HTML5的技术,而在PC端由于用户升级浏览器周期较长,面临着页面的兼容性问题, ...
- Python-round函数
round函数:对给定的数进行四舍五入,只有一个参数的情况下,是将其四舍五入后为整型,第二个参数是保留几位小数 a = round(2.523456) print(a) print('a的类型',ty ...
- Jenkins操作学习 --初始化安装
前言 说到持续集成,可以说是当下比较热门的话题了,也是很多公司和It从业者推崇的热门技术,但在项目中真正实际应用起来的并不太多,但通过持续集成带来的好处还是值得学习和推广的. 1.什么是jenkins ...