用户与用户组
一、用户的概述
以某种身份登录,那么用户的权限就会受到限制,用户的身份决定了用户能干什么。Linux中每个用户是通过 User Id (UID)来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号。
二、用户的类型
-
超级管理员:权限最高的用户;
-
普通用户:权限受到限制的用户;
-
程序用户:不是给人登录使用的,给程序使用的。
注意:
操作系统需要用一些文件,这些文件是否可以被打开,和程序用户登录有关。
三、用户组的概述
linux系统中的用户组(group)就是具有相同特性的用户(user)集合。将多个用户集合起来,统一分配某种相同的权限(开通或关闭)。
四、用户组的类型
一个用户必须有一个基本组,附加组可有可无,也可以有多个。
-
基本组(私有组):一定要有,有且只有一个;
-
附加组(公有组):可有可无,可以有多个。
五、UID和GID
UID:用户的身份证号
GID:用户组的身份证号
系统是靠uid来区分用户身份的;
用户的uid为0就是超级管理员,不是因为它叫root。
六、以uid识别用户身份
| 系统用户 | centos 6 | centos 7 |
|---|---|---|
| uid范围 | 0-60000 | 0-60000 |
| 超级管理员 | 0 | 0 |
| 普通用户 | 500-60000 | 1000-60000 |
| 程序用户 | 1-499 | 1-999 |
用户管理
一、用户信息文件:/etc/passwd
作用:保存文件名称,宿主目录登录shell基本信息
用户信息:root:x:0:0:root:/root:/bin/bash
-
root:用户名
-
x:密码占位符
-
0:uid,0为超级管理员
-
0:gid,0为超级管理员
-
root:备注信息
-
/root:家目录位置
-
/bin/bash:登录时默认加载的shell类型
二、用户密码文件:/etc/shadow
作用:存放密码及密码策略的文件
密码信息:root:vUt1Ws1x1xbpPkx1$tRR/a/o1BNriWgOD2GgHmdSS/nXysdVDdmEV6SGbPwBXDvyf15u.wu70Hgi1aT6pbt1XmabYxTe4rnquTbyTS/::0:99999:7:::
-
第一列:root 用户名
-
第二列:vUt1Ws1x1xbpPkx1$tRR 加密的密码
-
第三列:17110 上次修改密码时间,最近一次修改密码的时间到1970年1月1日到修改密码那天的天数
-
第四列:0 不限制下次修改密码的时间
-
第五列:99999 密码有效期为99999天,约等于无限期 如果你设置3代表3天后需要修改,否则无法登录
-
第六列:7 密码到期前7天提醒你修改密码
-
第七列:密码宽限时间
-
第八列:账户失效时间
-
第九列:保留字段未启用
三、添加用户账号:useradd
useradd命令格式 :useradd [选项] 用户名
新建一个用户:
-
自动建立一个同名的基本组
-
自动建立一个同名的家目录,在/home下
| 选项 | 作用 |
|---|---|
| -u | 指定UID |
| -s | 指定登录shell的类型 |
| -M | 不建立家目录 |
| -d | 指定家目录位置(可以不存在) |
| -e | 指定用户的账户失效时间,格式2024-04-05 |
| -g | 指定基本组 |
| -G | 指定附加组 |
| -r | 随机生成一个uid1-999的用户,不建家目录 |
| -c | 备注信息 |
| -p | 密码,必须是加密后的密码 |
示例:
1)-u 指定用户的UID
[root@localhost /]# useradd -u 2000 LRJ //添加LRJ用户,并指定UID为2000
[root@localhost /]# cat /etc/passwd |grep LRJ //查看passwd中LRJ的信息
LRJ:x:2000:2000::/home/LRJ:/bin/bash
2)-s 指定登录shell的类型
[root@localhost /]# useradd -s /sbin/nologin LHEY //创建LHEY用户并指定登录shell为/sbin/nologin,该用户无法登录系统
[root@localhost /]# cat /etc/passwd |grep LHEY //查看passwd中LHEY的信息
LHEY:x:2003:2003::/home/LHEY:/sbin/nologin
3)-M 不建立家目录
[root@localhost /]# useradd -M LAIL //创建LAIL用户且不建立家目录
[root@localhost /]# ls /home //查看/home下有没有LAIL的家目录
lhey LRJ test
四、设置/更改用户口令:passwd
root用户可以指定用户名作为参数,对指定账号的密码进行管理。不指定用户名时,修改当前账号的密码。
普通用户只能执行单独的passwd命令修改自己的密码
passwd命令格式:passwd [选项] 用户名
| 选项 | 作用 |
|---|---|
| -d | 清空用户密码 |
| -l | 锁定用户无法登录 |
| -u | 解锁用户 |
| -S | 查看用户是否被锁定 |
1)设置或修改用户密码
[root@localhost ~]# passwd LHEY //设置或修改LHEY用户的密码
更改用户 LHEY 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2)-d 清除用户密码,使用用户名可直接登录
[root@localhost ~]# passwd -d LHEY //清除LHEY用户的密码
清除用户的密码 LHEY。
passwd: 操作成功
3)锁定和解锁用户
[root@localhost ~]# passwd -l LHEY //锁定LHEY用户密码,锁定后LHEY用户无法登陆
锁定用户 LHEY 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -u LHEY //解锁LHEY用户密码
解锁用户 LHEY 的密码。
passwd: 操作成功
注意:因LHEY无密码,系统提示不安全,必须使用-f才能解锁。
[root@localhost ~]# passwd -l LHEY //锁定LHEY用户密码,锁定后用户无法登陆
锁定用户 LHEY 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -u LHEY //解锁LHEY用户,因LHEY用户无密码,系统提示不安全,必须使用-f才
解锁用户 LHEY 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
五、修改用户账号的属性:usermod
对已有用户的属性进行修改
usermod命令格式:usermod [选项] 用户名
| 选项 | 作用 |
|---|---|
| -l | 更改用户的名称 |
| -u | 指定UID |
| -s | 指定登录shell的类型 |
| -d | 指定家目录位置(可以不存在) |
| -e | 指定用户的账户失效时间,格式2024-04-05 |
| -g | 指定基本组 |
| -G | 指定附加组 |
| -r | 随机生成一个uid1-999的用户,不建家目录 |
| -c | 备注信息 |
| -p | 密码,必须是加密后的密码 |
| -L | 锁定用户账户 |
| -U | 解锁用户账户 |
示例:
[root@localhost ~]# usermod -l LHEY LRJ //将LRJ的用户名改成LHEY
[root@localhost ~]# usermod -L LHEY //锁定LHEY用户
[root@localhost ~]# passwd -S LHEY //查看LHEY用户状态
LHEY LK 2024-04-05 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U LHEY //解锁LHEY用户
[root@localhost ~]# passwd -S LHEY //查看LHEY用户状态
LHEY PS 2024-04-05 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
六、删除用户:userdel
userdel命令格式:userdel [选项] 用户名
- -r:连家目录一起删
示例:
[root@localhost ~]# userdel number01
[root@localhost ~]# ls /home
number01 number02
[root@localhost ~]# userdel -r number02
[root@localhost ~]# ls /home
number01
用户组管理
一、组账号文件
组账号文件的位置:
-
/etc/group:保存组账号基本信息。
-
/etc/gshadow:保存组账号的密码信息。
group文件每行分成了4段,每个字段含义如下:
- 字段1:组账号名称。
- 字段2:密码占位符x;通常不需要设置组密码。由于安全原因,该密码被记录在/etc/gshadow中,因此显示为'x'。类似/etc/shadow文件。
- 字段3:组编号GID。
- 字段4:本组的成员用户列表 (一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔 。
示例:
[root@localhost ~]# head -3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
二、添加组账号:groupadd
groupadd命令格式:groudadd [-g GID] 组账号名
示例:
[root@localhost ~]# groupadd -g 1025 LRJ //添加LRJ用户组,指定GID为1025
[root@localhost ~]# tail -1 /etc/group //查看group文件
LRJ:x:1025:
三、删除组账号:groupdel
groupdel命令格式:groupdel 组账号名
示例:
[root@localhost ~]# groupdel LRJ //删除LRJ用户组
[root@localhost ~]# tail -4 /etc/group //查看group文件
sshd:x:74:
tcpdump:x:72:
lhey:x:1000:lhey
apache:x:48:
用户帐号的初始配置文件
一、初始配置文件的来源
新建用户账号时,从 /etc/skel 目录中复制而来, 比如默认bin/bash,默认家目录。
用户宿主目录下的初始配置文件只对当前用户有效。
二、主要的用户初始配置文件
-
~/.bash_profile : 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行 ”source /etc/profile“ 命令使profile文件被读取。
-
~/.bashrc: 这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本。
-
~/.bash_logout: 每一个允许bash shell 的用户都会执行此文件。可通过执行bash命令打开一个新的bash,使bashrc文件被读取。
备注:
-
修改/etc/profile文件中相关配置,切换bash或者用户后都需要source /etc/profile才生效;
-
修改/etc/bashrc文件中相关配置,切换bash或者用户后直接生效
三、文件/目录的权限和权属
属主:文件的主人,文件的拥有者
属组:文件的拥有组
rw- r-- r--
- r:读
文件:可以看里面的内容
文件夹:可以用ls看文件夹的文件列表
- w:写
文件:可以修改文件的内容
文件夹:新建文件(文件夹),删除文件(文件夹,移动文件(文件夹
- x:执行
文件:可以运行(命令,脚本),颜色是绿色
文件夹:执行是最小的权限,没有执行,读写无法使用
四、数字法表示文件的权限
rwx
100-----------4
010-----------2
001-----------1
111-----------7
二进制转化成十进制
最高权限为7
五、修改文件权限:chmod
chmod命令格式:chmod 【选项】 指明属主,属组,其他人+权限 文件
常用选项:
| 选项 | 作用 |
|---|---|
| -R | 递归 |
| u | 属主 |
| g | 属组 |
| o | 其他人 |
| a | 所有人 |
| + | 加上 |
| - | 减去 |
| = | 赋予 |
字符形式:chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录
“+”号代表增加权限,“-”号代表减少相应权限,“=”号代表覆盖对应的权限
数字形式:chmod nnn 文件/目录
选项:
- -R:递归修改知道目录下所有子项的权限
1.使用字符形式设置权限
示例:
[root@localhost data]# ls -l number01 //显示number01的权限
-rw-r--r--. 1 root root 0 4月 8 13:46 number01
[root@localhost data]# chmod u+x number01 //为属主增加执行权限
[root@localhost data]# ls -l number01
-rwxr--r--. 1 root root 0 4月 8 13:46 number01
[root@localhost data]# chmod g=rw number01 //为属组覆盖读写权限
[root@localhost data]# ls -l number01
-rwxrw-r--. 1 root root 0 4月 8 13:46 number01
[root@localhost data]# chmod o-r number01 //为其他人减去阅读权限
[root@localhost data]# ls -l number01
-rwxrw----. 1 root root 0 4月 8 13:46 number01
[root@localhost data]# chmod a+r number01 //为所有人增加阅读权限
[root@localhost data]# ls -l number01
-rwxrw-r--. 1 root root 0 4月 8 13:46 number01
2.使用数字形式设置权限
示例:
[root@localhost data]# ls -l number02 //显示number02的权限
-rw-r--r--. 1 root root 0 4月 8 14:02 number02
[root@localhost data]# chmod 666 number02 //设置属主、属组、其他人的权限都为读和写
[root@localhost data]# ls -l number02
-rw-rw-rw-. 1 root root 0 4月 8 14:02 number02
六、设置文件和目录的归属:chown
chown命令格式:
-
修改属主:chown 属主 文件或目录
-
修改属组:chown :属组 文件或目录
-
修改属主和属组:chown 属主:属组 文件或目录
选项:
-R:递归修改指定目录下所有文件、子目录的归属
示例:
[root@localhost test]# ls -l 1.test //查看文件1.txt的归属
-rw-r--r--. 1 root root 0 4月 8 14:26 1.test
[root@localhost test]# chown lhey:lhey 1.test //将属主修改为lhey,属组修改为lhey
[root@localhost test]# ls -l 1.test //查看文件1.txt的归属
-rw-r--r--. 1 lhey lhey 0 4月 8 14:26 1.test
七、权限掩码:umask
umask在Linux中规定了新建文件夹和新建文件的权限
默认umask为022,是你没有的权限
拿最高权限减去umask就是你的最终权限
文件夹的最高权限为777
777-022=755 所以文件夹落地的权限为rwx r-x r-x
文件的最高权限为666 执行权限对于文件而言非常危险
666-022=644 所以文件落地的权限为rw- r-- r--
直接使用umask看到当前umask的设置
umask后面跟上数值可以设置umask的值
umask 123
文件夹一样
文件权限,用666-umask结果有奇数自动加一,偶数不变
666-123=543,奇数加一,偶数不变
示例:
[root@localhost test]# umask //查看umask,为0022
0022
[root@localhost test]# umask 0000 //将umask设置为0000
[root@localhost test]# umask //查看umask,为0000
0000
[root@localhost test]# mkdir A1 //创建Al目录
[root@localhost test]# ls -l A1
总用量 0
[root@localhost test]# ls -dl A1 //查看A1目录权限,所有人都拥有读写执行权限
drwxrwxrwx. 2 root root 6 4月 8 14:43 A1
[root@localhost test]# touch B1 //创建B1文件
[root@localhost test]# ls -l B1 //查看B1目录权限,所有人都只拥有读写权限
-rw-rw-rw-. 1 root root 0 4月 8 14:45 B1
[root@localhost test]# umask 0011 //将umask设置为0011
[root@localhost test]# umask //查看umask,为0011
0011
[root@localhost test]# mkdir a1 //创建al目录
[root@localhost test]# ls -dl a1 //查看a1目录权限,属主拥有读写执行权限,属组和其他人拥有读写权限
drwxrw-rw-. 2 root root 6 4月 8 14:46 a1
[root@localhost test]# touch b1 //创建b1文件
[root@localhost test]# ls -l b1 //查看b1目录权限,所有人都只拥有读写权限
-rw-rw-rw-. 1 root root 0 4月 8 14:46 b1
八、三种特殊权限
-
suid:如果拥有该权限,把当前用户当成文件的属主
-
guid:如果拥有该权限,把当前用户当成文件的属组
-
sticky:粘贴位,拥有该权限的文件夹,该文件夹内的文件,只有超级管理员和属主可以删除