管理用户账号和组帐号
1. 查看用户账号id信息
(1)命令格式
id 用户名
(2)实操
查看用户m的id信息
[root@localhost ~]# id m
(3)用户账号和组账号
uid:
用户账号ID,拥有唯一性
gid:
用户账号自己的组ID,拥有唯一性
用户账号:
① 超级管理员账号,uid 为0 的账号
② 普通用户账号,CentOS 7 之后 uid 为 1000+
③ 程序用户,CentOS 7 之后 uid 为 1-999
组账号:
① 默认组、基本组:
创建用户账号时,会自动创建出一个组,创建的用户为组长,具有唯一性
② 附加组、公共组:
通过手动添加得到的另一个组
# 给test1用户添加附加组,将test1用户添加进m组
[root@localhost ~]# gpasswd -a test1 m
2. passwd 文件
/etc/passwd 文件中存放着用户账号信息,一行一个用户账号,每行共有7个字段,每个字段用 : 隔开
(1)每个字段的含义
字段 | 含义 |
---|---|
第一字段 | 用户名 |
第二字段 | 密码占位符 |
第三字段 | uid号 |
第四字段 | gid号 |
第五字段 | 所属组 |
第六字段 | 该用户的家目录 |
第七字段 | 该用户的编译环境(如果是 /sbin/nologin 或者 /bin/false,则该用户无法登录系统) |
(2)实操
查看 /etc/passwd 文件内容后三行,并分析各个字段的含义
[root@localhost ~]# tail -n5 /etc/passwd
3. shadow 文件
/etc/shadow 文件是存放账户密码的文件
[root@localhost ~]# cat /etc/shadow
注:* 和 ! 表示密码为空
4. 创建用户
(1)命令格式
useradd [选项] 新用户名
(2)选项作用
选项 | 作用 |
---|---|
-u | 指定用户uid号(该uid号必须是没被使用过的) |
-d | 指定用户的家目录路径(与 -M 一起使用时 -d不生效) |
-M | 不建立用户的家目录 |
-e | 指定用户失效时间,可以使用 YYYY-MM-DD格式 |
-g | 指定用户的基本组(可以使用组名 或者 gid号,但该组必须要存在) |
-G | 指定用户的附加组(可以使用组名 或者 gid号,但该组必须要存在) |
-s | 指定用户登录的shell环境(/bin/bash 该用户可以登录到系统,/sbin/nologin 或者 /bin/false,则该用户无法登录系统) |
(3)实操
创建一个新用户 test2,uid为1002,家目录为 /opt/test2,所属主为test1,附加组为m,可以登录系统
[root@localhost ~]# useradd -u 1002 -d /opt/test2 -g test1 -G m -s /bin/bash test2
5. 更改账户密码信息
root 用户可以为指定用户名的账户更改密码信息,普通用户只可以对自己的账户密码信息更改
(1)命令格式
passwd [选项] 用户名
(2)选项作用
选项 | 作用 |
---|---|
-d | 清空指定用户的密码(不需要密码就可以登陆系统) |
-l | 锁定用户的密码,使用户无法登录系统(仅是命令行界面无法登录,图形化界面仍可登录) |
-uf | 解锁用户密码,f 是强制 |
-S | 查看用户密码是否被锁定 |
(3)实操
① 如上图所示,test1和test2用户密码为空,root用户可以切换至test2用户,但普通用户test2切换至test1用户时,由于密码为空,所以无法登录。请解决此问题。
方法一:进入root用户设置test1用户登录密码
[test2@localhost ~]$ su - root
[root@localhost ~]# passwd test1
[root@localhost ~]# su - test2
[test2@localhost ~]$ su - test1
方法二:进入root用户将test1用户登录密码清空,test1用户在登陆时不需要使用密码就可以登录
[test2@localhost ~]$ su - root
[root@localhost ~]# passwd -d test1
[root@localhost ~]# su - test2
[test2@localhost ~]$ su - test1
[test1@localhost ~]$
② 更改用户test2的登录密码为123456
[root@localhost ~]# echo 123456 | passwd --stdin test2
③ 锁定test1用户密码,查看是否成功锁定,再解锁
# 锁定密码
[root@localhost ~]# passwd -l test1
[root@localhost ~]# su - test2
[test2@localhost ~]$ su - test1
su: 鉴定故障
# 解锁密码
[root@localhost ~]# passwd -uf test1
[root@localhost ~]# su test2
[test2@localhost root]$ su test1
[test1@localhost root]$
6. 更改账户属性
(1)命令格式
usermod [选项] 用户名
(2)选项作用
选项 | 作用 |
---|---|
-u | 修改用户的uid号 |
-dm | 修改用户家目录位置(-m是将原家目录的内容移动至新的家目录,仅和 -d 联用) |
-e | 修改用户失效时间,可以使用 YYYY-MM-DD格式的日期 |
-g | 修改用户的基本组gid |
-G | 修改用户的附加组gid |
-s | 修改用户指定的shell环境 |
-L | 锁定用户账户 |
-U | 解锁用户账户 |
注:
usermod选项中 -u -d -e -g -G -s 的作用 与 useradd 中的选项作用相同
(3)实操
① 将用户test2 的 uid 改为 6666,基本组改为m,附加组改为test1,家目录改为 /home/test2,指定shell环境改位 /sbin/nologin,用户失效时间改位1天
[root@localhost ~]# usermod -u 6666 -g m -G test1 -dm /home/test2 -s /sbin/nologin -e 1 test2
② 锁定test1用户账户,使用户test1无法登录,再解锁test1用户账户
[root@localhost ~]# usermod -L test1
[root@localhost ~]# passwd -S test1
[root@localhost ~]# usermod -U test1
[root@localhost ~]# passwd -S test1
7. 删除用户
userdel 命令既可以删除普通用户也可以删除程序用户
(1)命令格式
userdel [-r] 用户名
(2)选项作用
选项 | 作用 |
---|---|
-r | 连用户的家目录一起删除 |
(3)实操
删除用户 test4
[root@localhost ~]# userdel -r test4
8. 主要的用户初始化文件
(1)文件来源
useradd 命令添加的新用户账号会在该用户的家目录创建出一些初始化配置文件,来自于模板目录 /etc/skel/ ,基本上都是隐藏文件
(2)主要的配置文件
补: /etc/profile 是系统全局配置文件,对所有用户生效
配置文件 | 作用 |
---|---|
~/.bash_profile | 为用户个性化定制的配置文件,仅对当前登录的用户生效 |
~/.bashrc | 用户自己设置shell函数,设置命令别名、颜色等,仅对当前登录的用户生效 |
~/.bash_logout | 用户退出bash、shell时执行的脚本,通常用来清理临时文件、关闭一些服务 |
执行顺序:
/etc/profile ---> ~/.bash_profile ---> ~/.bashrc ---> ~/.bash_logout
(3)实操
① 创建命令 grep test1 /etc/passwd 的别名 gt1,要求该别名所有用户都可以使用(需要进入 /etc/profile 文件中配置)
[root@localhost ~]# vim /etc/profile
alias gt1='grep test1 /etc/passwd'
[root@localhost ~]# source /etc/profile
[root@localhost ~]# gt1
[root@localhost ~]# su - test3
[test3@localhost ~]$ gt1
② 创建命令 grep test1 /etc/shadow 的别名 gt1s,要求该别名只有root用户可以使用,其他用户不可以使用(在~/.bash_profile 和 ~/.bashrc 文件中配置都可以,且配置方法一样)
[root@localhost ~]# vim .bash_profile
[root@localhost ~]# source ~/.bash_profile
[root@localhost ~]# gt1s
[root@localhost ~]# su - test3
[test3@localhost ~]$ gt1s
9. 组账号文件
与用户账号文件相似
(1)文件作用
文件 | 作用 |
---|---|
/etc/group | 保存组账号基本信息 共有4个字段,每个字段用 : 隔开 第一字段:表示组名 第二字段:表示组密码占位符 第三字段:gid号 第四字段:除组长之外的组成员 |
/etc/gshadow | 保存组账号的密码信息 共有4个字段,每个字段用 : 隔开 第一字段:组名 第二字段:组密码(一般不设密码,! 表示为空) |
(2)实操
① 查看 /etc/group 文件,并标出每段含义
[root@localhost ~]# cat /etc/group
② 查看 /etc/gshadow 文件,并标出每段含义
[root@localhost ~]# cat /etc/gshadow
10. 用户组创建和删除
(1)命令格式
命令 | 作用 |
---|---|
groupadd 组名 | 创建用户组 |
groupdel 组名 | 删除用户组(当用户组中有组员时不能被删除,基于用户创建的用户组也不能别删除) |
(2)实操
① 创建一个名为testgroup1的用户组
[root@localhost ~]# groupadd testgroup1
② 删除一个名为testgroup1的用户组
[root@localhost ~]# groupdel testgroup1
11. 管理用户组
(1)命令格式
gpasswd [选项] 用户名 用户组名
(2)选项作用
选项 | 作用 |
---|---|
-a | 向用户组添加一个组员 |
-d | 从用户组中删除一个组员 |
-M | 定义组员列表,以逗号分开 |
(3)实操
① 向用户组testgroup1添加一个组员 test1
[root@localhost ~]# gpasswd -a test1 testgroup1
② 将用户test1从用户组testgroup1中删除
[root@localhost ~]# gpasswd -d test1 testgroup1
③ 向用户组testgroup1 一起添加两个组员 test1 test3
[root@localhost ~]# gpasswd -M test1,test3 testgroup1
12. 文件或目录赋权
(1)命令
chmod [-R] 三方的权值 文件或目录路径
注:选项 -R 是递归的意思,三方是指文件拥有者(u)、文件拥有者所在的组(g)、其他用户(o)
(2)权值
权限 | 权值(三个权限值的合) |
---|---|
r (读) | 4 |
w (写) | 2 |
x(执行) | 1 |
补:
umask 控制新建文件或目录的权限
默认权限权限减umask等于文件权限
文件默认权限 666
目录默认权限 777
新建的文件无论umask怎么改,遇到奇数是都会进1,变为偶数
(3)实操
① 将 /data/file1 文件的权限改为所有用户都拥有它的所有的权限
[root@centos7-1 data]# chmod 777 /data/file1
② 将 /data/aa 目录下所有的子文件和子目录的权限更改为所有用户都拥有它们的所有的权限
[root@centos7-1 data]# chmod -R 777 /data/aa
13. 更改文件或目录的属主和属组
(1)命令
命令 | 作用 |
---|---|
chown [-R] 属主 文件路径 | 只更改文件的属主 |
chown [-R] :属组 文件路径 | 只更改文件的属组 |
chown [-R] 属主:属组 文件路径 | 属主和属组都更改 |
注:选项 -R 是递归的意思,更改该目录及其子目录和子文件的属主或属组都更改
(2)实操
① 将 /data/file1 文件的属主改为test1
[root@centos7-1 data]# chown test1 /data/file1
② 将 /data/file1 文件的属组改为test2
[root@centos7-1 data]# chown :test2 /data/file1
③ 将 /data/file1 文件的属主和属组都改为root
[root@centos7-1 data]# chown root:root /data/file1
④ 将 /data/aa 目录及其子目录和子文件的属主改为test1
[root@centos7-1 data]# chown -R test1 /data/aa
14. 修改主机名称
(1)命令作用
命令 | 作用 |
---|---|
hostname 主机名 | 临时修改(重启之后失效) |
vim /etc/hostname | 永久修改(第一行输入主机名,也只能识别第一行) |
hostnamectl set-hostname | 永久修改 |
(2)实操
① 临时修改主机名为CentOS7-1
[root@localhost ~]# hostname CentOS7-1
[root@localhost ~]# su
[root@CentOS7-1 ~]
② 永久修改主机名为CentOS7-1
[root@localhost ~]# hostnamectl set-hostname CentOS7-1
[root@localhost ~]# su
[root@centos7-1 ~]#