用户切换命令
系统管理员应该养成良好的习惯:以一个普通用户登录系统进行不同操作,当需要超级用户身份进行系统管理时再切换超级用户执行系统管理命令。
有如下两种方式: su 直接切换为超级用户普通用户要切换为超级用户必须知道超级用户的口令适用于系统中只有单个系统管理员的情况 sudo 直接使用 sudo 命令前缀执行系统管理命令执行系统管理命令时无需知道超级用户的口令,使用普通用户自己的口令即可由于执行系统管理命令时无需知晓超级用户口令,所以适用于系统中有多个系统管理员的情况,因为这样不会泄露超级用户口令。当然系统只有单个系统管理员时也可以使用。
su su 用于切换当前用户到指定的用户账号
命令的格式如下:
su [-|-p] [-c command] [username]
其中:
- : 在切换当前用户时切换用户工作环境
-p : 在切换当前用户时不切换用户工作环境,即保持当前用户工作环境,此为缺省值
-c command : 以指定的用户身份执行命令 command
username : 为要切换的用户,省略时表示 root
sudo sudo(su“do”) 允许系统管理员(root)为几个用户或组委派权利,使之能运行部分或全部由 root (或另一个)用户执行的命令。
sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。sudo 是设置了 SUID 位的执行文件。
sudo 具有以下特点:
sudo 能够限制指定用户在指定主机上运行某些命令。
sudo 可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
sudo 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。
它默认的存放位置是 /etc/sudoe rs。
sudo 使用时间戳文件来完成类似“检票”的系统。当用户执行 sudo 并且输入密码后,用户获得了一张默认存活期为5分钟的“
入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。
sudo 命令的格式为:
sudo -V | -h | -k | -l | -v
sudo [-Hb] [-u username|#uid] { -i | -s | <command> }
其中:
-V : 显示版本信息,并退出。
-h : 显示帮助信息。
-l : 显示当前用户(执行 sudo 的使用者)的权限,只有在 /e tc/sudoe rs 里的用户才能使用该选项。
-v : 延长密码有效期限5分钟。
-k : 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 5 分钟)。
-H : 将环境变数中的 $HO ME 指定为要变更身份的使用者家目录(如不加 -u 参数就是 /root ) 。
-b : 在后台执行指令。
-u username|#uid : 以指定的用户作为新的身份。身略此参数表示以 root 的身份执行指令。
-i : 模拟一个新用户身份的初始 Shell。
-s : 执行环境变量 $SHELL 所指定的 she ll ,或是 /e tc/passwd 里所指定的 she ll。
command : 为以新用户身份要执行的命令。
用户状态命令
常用的用户状态命令包括:whoam i、id、groups、ne wgrp 等。
whoam i:用于显示当前用户的名称
groups:用于显示指定用户所属的组
id:用户显示用户身份
newgrp:用户转换用户的当前组到指定的附加组,用户必须属于该组才可以进行
下面给出这些命令的使用举例:
# 创建一个新组staff
[root@cnetos5 ~]# groupadd staff
# 将用户crq 加入staff 附加组,并为其设置口令
[root@cnetos5 ~]# usermod -G staff crq
# 显示当前用户的名称
[root@cnetos5 ~]# whoami
root
# 显示当前用户所属的组
[root@cnetos5 ~]# groups
root bin daemon sys adm disk wheel
# 显示指定用户所属的组
[root@cnetos5 ~]# groups crq
crq : crq staff
# 显示用户当前的uid、gid和用户所属的组列表
[root@cnetos5 ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),
2(daemon),3(sys),4(adm),6(disk),10(wheel)
#切换当前用户到crq(超级用户切换到普通用户无需口令),同时切换用户工作环境
[root@cnetos5 ~]# su - crq
[crq@cnetos5 ~]$
# 显示用户当前的uid、gid和用户所属的组列表
[crq@cnetos5 ~]$ id
uid=504(crq) gid=504(crq) groups=504(crq),3001(staff)
# 创建一个新文件,并查看其用户和组
[crq@cnetos5 ~]$ touch abc
[crq@cnetos5 ~]$ ll abc
-rw-rw-r-- 1 crq crq 0 Dec 19 02:13 abc
# 切换用户的当前组到指定的附加组staff
[crq@cnetos5 ~]$ newgrp staff
# 显示用户当前的uid、gid和用户所属的组列表
[crq@cnetos5 ~]$ id
uid=504(crq) gid=3001(staff) groups=504(crq),3001(staff)
# 创建一个新文件,并查看其用户和组(比较abc和xyz的组)
[crq@cnetos5 ~]$ touch xyz
[crq@cnetos5 ~]$ ll
total 0
-rw-rw-r-- 1 crq crq 0 Dec 19 02:13 abc
-rw-r--r-- 1 crq staff 0 Dec 19 02:14 xyz
# 返回上一次 crq 的登录
[crq@cnetos5 ~]$ exit
exit