linux用户和组的管理
一、用户名的认知
1、用户名的引入:人的认知倾向字符串,而机器只认0101的ASCII代码)
名称解析:用户名<---->UID
①用户认证 验证该用户是否有权限登录该主机
--认证机制:linux默认的认证机制叫shadow 通常称为影子口令
密码存放位置/etc/shadow
[root@localhost tmp]# head -3 /etc/shadow root:$6$aClk7n/uMXB25Oxe$1xOFEgeyIah/WYYSa6GeT7G72Z3JFgMkuo73wIuIzl3JLMxWI4njZG9a3zjaG9nO2cChgGVFYWvi5T5xyIKjv/:16526:0:99999:7::: bin:*:15980:0:99999:7::: daemon:*:15980:0:99999:7:::
--安全上下文:进程是继承了,发起该进程的用户的权限。
②用户授权 该用户是否有权限能访问该文件
③审计 记录用户的所有操作
2、用户类别
管理员 root UID:0
普通用户分两种
1、系统用户 (作用:他们是为了在后台运行某个服务进程而特别建立,不能进行交互式登录的用户 UID的范围 1-499)
2、可交互式登录的用户,UID的范围 500-65535
/etc/passwd 是系统识别用户的一个文件,在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割
[root@localhost home]# tail -1 /etc/passwd jiuren:x:500:500::/home/jiuren:/bin/bash
jiuren: 用户名
x :密码占位符 存在别处
500:UID
500:GID
::用户的注释(描述信息)这里没有注释
/home/jiuren:用户的家目录
/bin/bash:用户所使用的默认SHELL类型
二、组的概念
容器:存放用户及权限
group name <---->GID
组的类别:
管理员组 root GIU:0
普通组
1、系统组 GID:1-499)
2、用户组(2种) GID:500-65535
☆用户的私有组 (组名和用户名一样,且通常指包含一个用户)
☆用户的非私有组(2种)
★用户的基本组 (用户执行操作时,用户所属的组,就称为基本组)
★用户的附加组 (除了基本组以外的组)
/etc/group
该文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用户组的用户之间具有相似的特征 。
在/etc/group 中的每条记录分四个字段:
[root@localhost home]# head -3 /etc/group root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon
拿daemon这个组来举例说明:
daemon:组名
x:组密码占位符
2:GID
bin,daemon:该组下的用户名列表
三、用户和组管理相关的命令
useradd [选项] 参数(用户名)添加用户
-u UID 指定用户UID
[root@localhost tmp]# useradd -u 888 zhang [root@localhost tmp]# id zhang uid=888(zhang) gid=888(zhang) groups=888(zhang)
-c comment'描述信息'
[root@localhost tmp]# useradd -c "this is xiaoli" xiaoli [root@localhost tmp]# id xiaoli uid=889(xiaoli) gid=889(xiaoli) groups=889(xiaoli)
-d home_dir 指定用户的家目录,此目录应该不存在,若存在创建用户时会报警
[root@localhost tmp]# useradd -d /tmp/wang wang [root@localhost tmp]# tail -1 /etc/passwd wang:x:890:890::/tmp/wang:/bin/bash
-s shell 指定用户的默认shell /etc/shells 用户可选择的shell
[root@localhost tmp]# useradd -s /bin/csh xiaozhao [root@localhost tmp]# tail -1 /etc/passwd xiaozhao:x:891:891::/home/xiaozhao:/bin/csh
-g GID或组名 指定用户的基本组
[root@localhost tmp]# useradd -g abc aaa [root@localhost tmp]# id aaa uid=892(aaa) gid=5005(abc) groups=5005(abc)
-G GID或组名 指定用户的附加组
[root@localhost tmp]# useradd -G def bbb [root@localhost tmp]# id bbb uid=893(bbb) gid=893(bbb) groups=893(bbb),5006(def)
-r 创建系统用户
[root@localhost tmp]# useradd -r log [root@localhost tmp]# id log uid=498(log) gid=498(log) groups=498(log)
注: /etc/defaulat/useradd 默认创建用户时所设的选项和参数
usermod [选项] 用户名
-u UID 修改UID
[root@localhost tmp]# tail -1 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin [root@localhost tmp]# useradd -u 500 jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=500(jiuren) groups=500(jiuren)
-c 修改描述信息
[root@localhost tmp]# usermod -c "jiurenjiaoyu" jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren:x:500:500:jiurenjiaoyu:/home/jiuren:/bin/bash
-d 修改用户的家目录
注:通常用于-m选项一起使用,以实现移动用户的家目录(目标家目录一般不存在)
[root@localhost tmp]# usermod -d /tmp/jiaoyu -m jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren:x:500:500:jiurenjiaoyu:/tmp/jiaoyu:/bin/bash
-s 修改用户的shell类型
[root@localhost tmp]# usermod -s csh jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren:x:500:500:jiurenjiaoyu:/tmp/jiaoyu:csh
-g 组名或者GID 修改用户的基本组
[root@localhost tmp]# groupadd test [root@localhost tmp]# usermod -g test jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=5003(test) groups=5003(test)
-G 组名或者GID -a追加的形式(默认是覆盖)修改附加组
[root@localhost tmp]# usermod -G test jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=5003(test) groups=5003(test) [root@localhost tmp]# groupadd test2 [root@localhost tmp]# usermod -G test2 -a jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=5003(test) groups=5003(test),5004(test2) [root@localhost tmp]#
-l 新的用户名 更改用户名
[root@localhost tmp]# usermod -l jiuren1 jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren1:x:500:0:jiurenjiaoyu:/tmp/jiaoyu:csh
-L 锁定该用户 这个操作是放一个感叹号在你的密码前,禁用密码
[root@localhost tmp]# tail -1 /etc/shadow jiuren:$6$gFvaKNmM$U7NwVbrrPekw3XgnMee5zqZ30R9mEMEibj0j9F13rKRwyASDo9 rxOIR.i6tWna.DznvEW795PuRCErzhdIbkN.:16529:0:99999:7::: [root@localhost tmp]# usermod -L jiuren [root@localhost tmp]# tail -1 /etc/shadow jiuren:!$6$gFvaKNmM$U7NwVbrrPekw3XgnMee5zqZ30R9mEMEibj0j9F13rKRwyASDo 9rxOIR.i6tWna.DznvEW795PuRCErzhdIbkN.:16529:0:99999:7:::
-U 解锁该用户 这个操作是在加密密码前取消感叹号,恢复帐号登录
[root@localhost tmp]# usermod -U jiuren [root@localhost tmp]# tail -1 /etc/shadow jiuren:$6$gFvaKNmM$U7NwVbrrPekw3XgnMee5zqZ30R9mEMEibj0j9F13rKRwyASDo9 rxOIR.i6tWna.DznvEW795PuRCErzhdIbkN.:16529:0:99999:7:::
userdel [选项] 参数(用户名)
-r 删除用户是,同时删除用户家目录
[root@localhost home]# ls aaa bbb jiuren lost+found xiaoli xiaozhao zhang [root@localhost home]# userdel -r zhang [root@localhost home]# ls aaa bbb jiuren lost+found xiaoli xiaozhao
groupadd [选项] 参数(组名)
-g GID 指定当前创建组的ID号
[root@localhost home]# groupadd -g 999 test3 [root@localhost home]# tail -3 /etc/group bbb:x:893: log:x:498: test3:x:999:
-r 创建系统组
[root@localhost home]# groupadd -r test4 [root@localhost home]# tail -1 /etc/group test4:x:497:
groupmod [选项] 组名
-g GID 修改的是组的ID
[root@localhost home]# groupmod -g 400 test4 [root@localhost home]# tail -1 /etc/group test4:x:400:
-n 修改的是新的组名
[root@localhost home]# groupmod -n systest4 test4 [root@localhost home]# tail -1 /etc/group systest4:x:400:
groupdel 组名 删除组
[root@localhost home]# groupdel systest4 [root@localhost home]# tail -3 /etc/group bbb:x:893: log:x:498: test3:x:999:
练习1 答案在本文最后,请思考,动手试试!
创建用户gentoo UID为4001 基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001)
练习2
创建用户fedora 其描述为“Fedora Core” 默认shell为 /bin/tcsh
练习3
修改gentoo 用户的家目录为/tmp/gentoo,并且为gentoo新增附加组为netadmin
id [选项] 参数(用户名)
-u UID 仅显示UID
[root@localhost tmp]# id -u wang 890
-g GID 仅显示GID
[root@localhost tmp]# id -g aaa 5005
-n 显示用户名而非数字,需要与-ugG 结合使用
[root@localhost tmp]# id -n -u xiaozhao xiaozhao
chsh 用于 改变 用户的 登录 shell. 如果 没有在 命令行上 指定 shell, chsh 能够 做出 提示
chsh -l ==cat /etc/shells
-l 用户可以使用的安全shell
-s shell 用户名 修改用户的默认shell
[root@localhost home]# chsh -s /bin/tcsh wang Changing shell for wang. Shell changed. [root@localhost home]# tail -8 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin jiuren:x:500:5003:jiurenjiaoyu:/tmp/jiaoyu:csh xiaoli:x:889:889:this is xiaoli:/home/xiaoli:/bin/bash wang:x:890:890::/tmp/wang:/bin/tcsh #成功改变shell类型 xiaozhao:x:891:891::/home/xiaozhao:/bin/csh aaa:x:892:5005::/home/aaa:/bin/bash bbb:x:893:893::/home/bbb:/bin/bash log:x:498:498::/home/log:/bin/bash
练习1答案:
[root@localhost tmp]# groupadd gentoo [root@localhost tmp]# groupadd -g 5000 distro [root@localhost tmp]# groupadd -g 5001 peguin [root@localhost tmp]# useradd -u 4001 -g gentoo -G distro,peguin gentoo [root@localhost tmp]# id gentoo uid=4001(gentoo) gid=500(gentoo) groups=500(gentoo),5000(distro),5001(peguin)
练习2答案
[root@localhost tmp]# useradd -c "Fedora Core" -s /bin/tcsh fedora [root@localhost tmp]# tail -1 /etc/passwd fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
练习3答案
[root@localhost tmp]# groupadd netadmin [root@localhost tmp]# usermod -G netadmin -a gentoo [root@localhost tmp]# id gentoo uid=4001(gentoo) gid=500(gentoo) groups=500(gentoo),5000(distro),5001(peguin),5002(netadmin) [root@localhost tmp]# usermod -d /tmp/gentoo -m gentoo [root@localhost tmp]# ls /home/ fedora jiuren lost+found [root@localhost tmp]# tail -3 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin gentoo:x:4001:500::/tmp/gentoo:/bin/bash fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
四、/etc/shadow 存储用户认证密码
[root@localhost tmp]# head -1 /etc/shadow root:$6$aClk7n/uMXB25Oxe$1xOFEgeyIah/WYYSa6GeT7G72Z3JFgMkuo73wIuIzl3JLMxWI4njZG9a3zja G9nO2cChgGVFYWvi5T5xyIKjv/:16526:0:99999:7:::
1、每个字段的代表意思
用户名:加密后的密码:上次修改密码的时间:密码最短使用期限:密码最长使用期限:密码警告区间:密码非活动区间(用户存在,密码不能登录):账号过期(账号被注销):预留
如:7天之内不能修改--最短使用期限
30天最长--密码最长使用时间
30天到期之后警告区间
密码加密的每个字段的含义$为分隔符
·6:指定密码加密方式 使用的是 sha512字长
·aClk7n/uMXB25Oxe加密杂质
·1xOFEgeyIah/WYYSa6GeT7G72Z3JFgMkuo73wIuIzl3JLMxWI4njZG9a3zja
G9nO2cChgGVFYWvi5T5xyIKjv/ :加密生成的密码
例子 (root+杂项)进行sha512加密 形成512长度的字符串
2、修改用户密码:
管理员:passwd 回车 修改管理员root用户自身密码
passwd 用户名 修改其他普通用户的密码
普通用户:passwd 只能修改普通用户自身密码
切换登录
su :switch user
登录式切换: su - 用户名 (会读取用户的所有配置)exit 退出当前用户
非登录式切换: su 用户名 (不会读取目标用户环境配置文件)
五、权限管理
1、文件权限:针对3类对象进行定义
-rw-r--r--. 1 root root 27632 Apr 1 18:16 install.log
属主 属组 其他组(其他用户)
权限类型:r read w write x eXcutable
文件(指普通文件)
r可以查看文件的内容
w可以修改文件的内容
x可以把文件向内核提起申请,运行为一个进程
目录(目录文件)
r是否可以使用ls命令,处了-l 选项之外
w是否可以在目录中进行添加、删除操作
x可使用cd命令进入目录 ls -l的选项是否可用
2、修改文件的权限:
用法:chmod [选项]... 模式[,模式]... 文件...
-R 递归赋予权限
每种模式都应属于这类形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"
操作对像
u 文件属主权限
g 同组用户权限
o 其它用户权限
a 所有用户(包括以上三种)
权限设定
+ 增加权限
- 取消权限
= 唯一设定权限
权限类别
r 读权限
w 写权限
x 执行权限
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
s 文件属主和组id
l 给文件加锁,使其它用户无法访问
权限模型 文件名
o=+rwx 不能写成o=+r,+w,+x 如下例子
[root@localhost ~]# ls -l functions -rw-r--r-- 1 root root 19295 Apr 6 05:27 functions [root@localhost ~]# chmod o=+w,+x functions [root@localhost ~]# ls -l functions -rwxr-x-wx 1 root root 19295 Apr 6 05:27 functions #这里给属主和数组也同样加上了x权限
u和g用法同上
数值权限 rwx分别代表421
3、chown修改属主、属组
用法:chown [选项]... [所有者][:[组]] 文件...
-R 递归赋予权限
属主: 只更改属主
:属组 只更改数组
[root@localhost ~]# ls -l functions -rwxr-x-wx 1 root root 19295 Apr 6 05:27 functions [root@localhost ~]# chown jiuren: functions [root@localhost ~]# ls -l functions -rwxr-x-wx 1 jiuren jiuren 19295 Apr 6 05:27 functions #这里没有达到上面描述的效果, 是因为基本组的原因 [root@localhost ~]# chown :root functions [root@localhost ~]# ls -l functions -rwxr-x-wx 1 jiuren root 19295 Apr 6 05:27 functions #这里就可以修改用户的数组