目录
1.Linux的命令格式
2.用户与用户组管理
2.1用户管理
添加用户
设置用户密码
删除用户
修改用户
2.2用户组管理
新增用户组
删除用户组
修改用户组属性
用户组切换
用户组管理
用户切换
1. su
2.sudo
1.Linux的命令格式
Linux系统中几乎所有操作,如文件、账户、软件包的管理、磁盘分区、性能监控、网络配置等都可通过命令实现,实现这些功能的命令大多遵循如下格式:
命令名称 [选项] [命令作用的对象]
命令的选项分为短选项和长选项;短选项可组合使用,而长选项只能单独使用。
2.用户与用户组管理
Linux是一个多用户、多任务的分时操作系统,在Linux主机上可同时登陆多个用户,为了对用户的状态进行追踪,并对其可访问的资源进行控制,每名用户在使用Linux之前,必须向系统申请一个账号,并设置密码,之后才能登陆并访问系统资源。
Linux用户可以分为两大类:超级用户和普通用户。
其中超级用户拥有操作Linux系统的所有权限。
2.1用户管理
添加用户
添加用户的命令为 useradd ,使用该命令可在系统中创建一个新账号。useradd命令的格式如下:
useradd [选项] 用户名
useradd命令可通过一些选项,在创建用户的同时为新增的账号设置一些属性,若不设置除用户名外的其他属性,则这些属性由系统设置为默认值。
选项 | 说明 |
---|---|
-d | 指定用户登录时的目录 |
-c | 指定账户的备注文字 |
-e | 指定账号的有效期限 |
-f | 缓冲天数,密码过期时在指定天数后关闭该账号 |
-g | 指定用户所属组 |
-G | 指定用户所属的附加用户组 |
-m | 自动建立用户的登录目录 |
-r | 创建系统账号 |
-s | 指定用户的登录shell |
-u | 指定用户的用户ID,若添加-o选项,则用户ID可与其他用户重复 |
例:
#创建新用户bxg,指定用户主目录为/usr/bxg并自动创建登录目录
[root@localhost ~]# useradd -d /usr/bxg -m bxg
#创建新用户 itcast ,设置其用户id为876
[root@localhost ~]# useradd itcast -u 876
Linux系统中的用户名和用户ID都是唯一的,其中用户名由字母、数字、下划线组成,且不能以数字开头。
设置用户密码
通过passwd命令为用户设置密码,其格式如下:
passwd [选项] 用户名
常用选项:
选项 | 说明 |
---|---|
-l | 锁定密码,锁定后密码无效,无法登录(新用户默认锁定) |
-d | 删除密码,仅系统管理员可使用 |
-S | 列出密码相关信息,仅系统管理员可使用 |
-f | 强行执行 |
#为新用户bxg设置密码
[root@localhost ~]# passwd bxg
更改用户bxg的密码。
新的密码:
重新输入新的密码:
passwd: 所有的身份验证令牌已经成功更新。
Linux系统建议用户密码至少为8个字符,若没有8个字符会打印警告信息,此警告不会对用户账户的使用造成影响。用户可再次输入密码并确认密码,完成密码设置。
密码信息存储在/etc的shadow文件中。
删除用户
若用户不再使用,可用userdel 命令将该用户从系统删除,出删除用户账户外,userdel命令还可以删除与指定用户相关的文件和信息。
userdel [选项] 用户名
选项 | 说明 |
---|---|
-f | 强制删除用户,即便该用户为当前用户 |
-r | 删除用户的同时,删除与用户相关的所有文件 |
#删除用户bxg及相关文件
[root@localhost ~]# userdel -r bxg
修改用户
usermod命令用户修改用户信息。
usermod 选项 参数
在使用usermod命令修改用户信息的时候,必须先确认该用户没有在电脑上执行任何程序。usermod命令的常用选项:
选项 | 说明 |
---|---|
-c | 修改用户账号的备注信息 |
-d | 修改用户的登录目录 |
-e | 修改账号的有效期限 |
-f | 修改缓冲天数,即修改密码过期后关闭账号的时间 |
-g | 修改用户所属组 |
-G | 修改用户所属的附属组 |
-l | 修改用户账号名称 |
-L | 锁定用户密码,使密码失效 |
-s | 修改用户登录后使用的Shell |
-u | 修改用户ID |
-U | 解除密码锁定 |
# 修改用户bxg的用户id为678
[root@localhost ~]# usermod -u 678 bxg
2.2用户组管理
为了方便对用户的管理,Linux系统设置了用户组的概念,一般将权限相同的用户放在同一个用户组中。
新增用户组
增加用户组的方式有两种:一种由系统默认创建——在创建新用户时,若无特别指定,系统会为新用户创建与其同名的用户组;另一种是使用groupadd命令主动添加,该命令的格式如下:
groupadd [选项] 参数
选项 | 说明 |
---|---|
-g | 指定新建用户组的组ID |
-r | 创建系统用户组,组ID取值范围为1~499 |
-o | 允许创建组ID已存在的用户组 |
# 创建一个用户组 group1 ,指定其组ID为550
[root@localhost ~]# groupadd -g 550 group1
Linux系统将用户组信息存储于 /etc/group 文件中。
删除用户组
使用 groupdel 命令可以删除多余的用户组,该命令的格式如下:
groupdel 用户组名
例:
# 删除用户组 group1 ,指定其组ID为550
[root@localhost ~]# groupdel group1
修改用户组属性
用户组的组ID、组名等属性都可以被修改,修改用户组属性的命令为gruopmod,其命令格式如下:
groupmod [选项] group1
选项 | 说明 |
---|---|
-g | 为用户组指定新的组ID |
-n | 修改用户组的组名 |
-o | 允许创建组ID已存在的用户组 |
# 创建一个组 group1 ,指定其组ID为550
[root@localhost ~]# groupadd -g 550 group1
# 在组 ID550 已存在的情况下,将用户组 itheima 的组 ID 改为 550
[root@localhost ~]# groupmod -o itheima -g 550
# 修改用户组 group1的组名为itcast
[root@localhost ~]# groupmod group1 -n itcast
用户组切换
用户组分为基本组(也称默认组)和附属组。
附属组是用户所属的除基本组之外的组,用户的基本组唯一,附属组不唯一;用户可从附属组移除,但不能从基本组中移除。
如果一个用户属于多个组,当需要切换到其它组执行操作时,可使用newgrp命令切换用户组:
newgrp 用户组
# 切换用户 root 的工作组为 itcast
[root@localhost ~]# newgrp itcast
用户组管理
gpasswd 命令用于管理用户组:
gpasswd 选项 参数
选项 | 说明 |
---|---|
-a | 添加用户到用户组 |
-d | 从用户组中删除用户 |
-r | 删除密码 |
-R | 限制用户登入组,只有组中成员才可以用 newgrp 加入用户组 |
注意:使用usermod命令的 -g 选项为用户设置附属组时,将会覆盖用户原有的附属组,若想为用户设置多个附属组,需使用gpasswd命令将用户逐个添加到不同的用户组中。
# 将用户 itheima添加到用户组 itcast
[root@localhost ~]# gpasswd -a itheima itcast
用户切换
Linux系统提供了两种切换用户的方式: 一种是通过Linux系统图形化界面菜单中的 “切换用户" 选项切换用户,另一种是在终端使用命令su或sudo切换用户。
通过图形界面菜单中的 “切换用户” 选项切换用户的方式如图2-1所示。
Linux运维人员一般通过用户切换命令实现用户切换。
1. su
使用 su 命令切换用户是最简单的用户切换方式,该命令可在任意用户之间进行切换,其基本格式如下:
su [选项] [用户名]
若选项和用户名缺省,则表示切换到 root 用户,但此时仍保留原来用户的工作环境;若使用“su -”,则表示从当前用户切换到root用户,并切换到root用户的工作目录。
su命令的常用选项如下:
选项 | 说明 |
---|---|
-c | 执行完指定的指令后,切换回原来的用户 |
-l | 切换用户的同时,切换到对应用户的工作目录,环境变量也会随之改变 |
-m,-p | 切换用户时,不改变环境变量 |
-s | 指定要执行的shell |
使用su命令时,由root用户切换到其他用户,可以不输入密码;由普通用户切换到目标用户时,需要输人目标用户的密码。
2.sudo
虽然使用su命令相当方便,但由于需要知道目标用户的密码,所以su命令是不安全的,若想保障系统的安全,可以使用 sudo 命令切换用户。
sudo [选项] [参数]
sudo 可使当前用户以其他身份来执行命令、若不指定用户名,则默认以 root 身份执行。在使用sudo 命令时,用户需要输人自己的密码,此次密码验证在之后的5分钟内有效,若超时需重新验证。
sudo命令的常用选项如下:
选项 | 说明 |
---|---|
-b | 在后台执行命令 |
-h | 显示帮助 |
-H | 将HOME环境变量设置为新身份的HOME环境变量 |
-k | 结束密码的有效期限 |
-l | 列出目前用户可执行与无法执行的命令 |
-p | 改变询问密码的提示符号 |
-s | 执行指定的shell |
-u | 以指定的用户作为新的身份,即切换到指定用户。默认切换到root用户 |
在使用 sudo 命令之前,需要先在 etc 目录下的 sudoers 文件中对可执行 sudo 指令的用户进行设置。sudoers 文件中的内容遵循一定的语法规范,为防止因语法有误导致的错误,Linux系统提供了 visudo 命令,使用该命令修改文件后,系统会在保存退出时对sudoers文件的语法进行检查。此外,visudo 命令亦可防止其他用户同时修改sudoers文件。下面将介绍使用root用户编辑sudoers 文件,为其他用户提升权限的方法。
首先在root用户下使用visudo命令打开sudoers文件,如下所示:
[root@localhost ~]# visudo
观察sudoers文件,可以在其中找到如下的语句:
# Allow root to run any commands anywhere
root ALL=(ALL) ALL
第一条语句是注释行,第二条语句是对root 用户的权限设置,它的作用是:使root用户能够在任何情境下执行任何命令。sudoers文件中的所有权限设置语句都符合如下格式:
账户名 主机名称=(可切换的身份) 可用的命令
以上格式中包含4个参数,每个参数的含义如下:
- 账户名:该参数是要设置权限的账号名,只有账号名被写入sudoers文件时,该用户才能使用sudo命令。root 用户默认可以使用sudo命令。
- 主机名称:该参数决定此条语句中账户名对应的用户可以从哪些网络主机连接当前Linux主机,root用户默认可以来自任何一台网络主机。
- 可切换的身份:该参数决定此条语句中的用户可以在哪些用户身份之间进行切换、执行哪些命令。root 用户默认可切换为任意用户。
- 可执行的命令:该参数指定此条语句中的用户可以执行哪些命令。注意,命令的路径应为绝对路径。root 用户默认可以使用任意命令。
以上语句中的参数ALL是一个特殊的关键字,分别代表任何主机、任何身份和任何命令。以用户itheima为例,若要使用户itheima能以root用户的身份执行/bin/more命令,则应在sudoers文件中添加如下内容:
itheima ALL=(root)/bin/more
保存退出后,切换到用户itheima,使用命令 “sudo -l” 可查看该用户可以使用的命令。
通过在配置文件中逐条添加配置信息的方法提升用户权限在一定程度上保障了系统安全,但当需要操作的用户较多时,如此操作显然相对麻烦。Linux 系统支持为用户组内的整组用户统一设置权限。
在sudoers文件中有如下所示的语句:
# %wheel ALL=(ALL) ALL
以上语句中,“%” 声明之后的字符串是一个用户组,该语句表示任何加入用户组wheel的用户,都能通过任意主机连接、以任何身份执行全部命令。因此若想提升某些用户的权限为ALL,将它们添加到用户组wheel中即可。当然此条语句前的“#”仍然表示注释,若要使此条命令生效,需将“#”删除。以用户组itheima为例,若要使该组中的所有用户能以root的身份执行命令/bin/ more ,则应在sudoers文件中添加如下命令:
%itheima ALL=(root)/bin/more
root作为系统中唯一的超级用户,权限极大,可以执行的命令极多,其中不乏非常危险的命令,如“rm -rf”。若是一个普通用户的权限被提升的太多,很可能会危及整个系统,为了防止这种情况,sudo命令中可以在配置sudoers文件时,对某些用户的权限进行控制。假如在itheima用户被提升至root 权限时,要禁止该用户使用/bin/more命令,可以使用以下语句:
itheima ALL= (root) ! /bin/more
以上语句通过 “!” 符号禁止用户执行某些命令。