目录
用户和组管理
用户管理
密码管理
组管理
用户创建命令useradd
用户删除命令userdel
查看用户帐号的信息命令id
usermod 修改用户帐号属性的命令
切换用户命令su
密码管理命令passwd
密码生成工具openssl
创建组命令groupadd
删除组命令groupdel
各配置文件说明
密码复杂性
用户和组概念
用户分类
Linux安全上下文
Linux用户组类别
何为用户何为组?
Linux用户和组相关的配置文件
用户和组相关的管理命令
何为用户何为组?
用户和组概念
例子 |
---|
进火车站刷脸 |
上下班刷指纹 |
天地会接头暗号 |
用户存在的目的是为了实现资源的分派。
例子 |
---|
共享单车抱回家 |
总经理行使权利 |
Authentication:认证
Authorization:授权
Accouting:审计
用户分类
Linux用户分为管理员和普通用户两种:
用户类别 | 用户ID |
---|---|
管理员 | 0 |
普通用户 | 1-65535 |
其中普通用户又分为系统用户和登录用户两种:
用户类别 | 用户ID |
---|---|
系统用户 | 1-999(为守护类进程获取系统资源而完成权限指派的用户) |
登录用户 | 1000-60000(为了完成交互式登录使用的用户) |
Linux安全上下文
运行中的程序:进程(process)
1.2 以进程发起者的身份运行
1.2.1 root:cat
1.2.2 tom:cat
1.3 进程所能够访问的所有资源的权限取决于进程的发起者的身份
Linux通过安全上下文的概念完成用户权限的指派。
2.2 先判断用户是否是某文件的属主
2.3 再判断用户是否属于某个组
2.4 最后定其为其他用户
Linux用户组类别
用户组类别 | 特性 |
---|---|
私有组 |
创建用户时,如果没有为其指定所属的组, 系统会自动为其创建一个与用户名相同的组 |
基本组 | 用户的默认组 |
附加组(额外组) | 默认组以外的其它组 |
Linux用户和组相关的配置文件
各配置文件说明
配置文件 | 作用 |
---|---|
/etc/passwd | 用户及其属性信息(名称、uid、基本组id等等) |
/etc/group | 组及其属性信息 |
/etc/shadow | 用户密码及其相关属性 |
/etc/gshadow | 组密码及其相关属性。在用户执行基本组切换时使用 |
配置文件 | /etc/passwd | /etc/group |
---|---|---|
第一字段 | 用户名 | 组名 |
第二字段 | 密码占位符 | 组密码 |
第三字段 | UID | GID |
第四字段 | GID | 以当前组为附加组的用户列表(分隔符为逗号) |
第五字段 | 用户的描述信息 | |
第六字段 | 用户家目录 | |
第七字段 | 用户的登录shell |
配置文件 | /etc/shadow |
---|---|
第一字段 | 登录名 |
第二字段 | 加密后的密码 |
第三字段 | 最近一次更改密码的日期 |
第四字段 | 密码的最小使用期限 |
第五字段 | 密码的最大使用期限 |
第六字段 | 密码警告时间段 |
第七字段 | 密码禁用期 |
第八字段 | 帐号的过期日期 |
第九字段 | 保留字段 |
密码复杂性
密码复杂性策略:
1.2 使用数字、大写字母、小写字母及特殊字符中至少3种
1.3 足够长
1.4 使用随机密码,不要使用有意义的单词或数字
1.5 定期更换,不要使用最近曾经使用过的密码
用户和组相关的管理命令
用户管理
用户创建命令useradd
-u UID
useradd命令用来建立用户账号和创建用户的起始目录,使用权限是终极用户。-g:指定用户所属的起始群组。-G:指定用户所属的附加群组。
[root@lnh ~]# id root uid=0(root) gid=0(root) groups=0(root) //查看root用户信息 [root@lnh ~]# useradd xbz [root@lnh ~]# id xbz uid=1000(xbz) gid=1000(xbz) groups=1000(xbz) //查看用户id, 组id ,所属组 [root@lnh ~]# useradd -u 2000 xbz1 [root@lnh ~]# id xbz1 uid=2000(xbz1) gid=2000(xbz1) groups=2000(xbz1) //定义用户id,一般组id也会和其一样
-g GID
[root@lnh ~]# useradd -g 2000 xbz1 [root@lnh ~]# id xbz1 uid=1001(xbz1) gid=2000(xbz1) groups=2000(xbz1) //定义gid组id
-G groupname(组名)
[root@lnh ~]# useradd -G xbz1 xbz2 [root@lnh ~]# id xbz2 uid=1002(xbz2) gid=1002(xbz2) groups=1002(xbz2),2000(xbz1) //给xbz2添加xbz1附属组
-c "COMMENT"
[root@lnh ~]# useradd -c xbz1 xbz3 [root@lnh ~]# id xbz3 uid=1003(xbz3) gid=1003(xbz3) groups=1003(xbz3) [root@lnh ~]# useradd -c xx hh [root@lnh ~]# tail -5 /etc/passwd xbz:x:1000:1000::/home/xbz:/bin/bash xbz1:x:1001:2000::/home/xbz1:/bin/bash xbz2:x:1002:1002::/home/xbz2:/bin/bash xbz3:x:1003:1003/home/xbz3:/bin/bash hh:x:1004:1004/home/hh:/bin/bash //注释信息
-d
[root@lnh ~]# useradd -d /home/xbz5 xbz5 [root@lnh ~]# cd ~xbz5/ [root@lnh xbz5]# pwd /home/xbz5 //指定用户的家目录。此目录必须不能事先存在, 否则将不会从/home/xbz5中复制环境设置文件
-s,-M,-r
[root@lnh ~]# useradd -rMs /sbin/nologin tsb [root@lnh ~]# ll /home/ total 0 drwx------. 2 hh hh 62 Jul 3 18:24 hh drwx------. 2 xbz xbz 62 Jul 3 17:44 xbz //-r添加一个系统用户,-M创建用户时不创建家目录,-s登录shell不允许登录这个用户
用户删除命令userdel
[root@lnh ~]# userdel aaa [root@lnh ~]# ls /home/ aaa bbb [root@lnh ~]# userdel -r bbb [root@lnh ~]# ls /home/ aaa //直接用userdel删除,其是默认不删除家目录,-r删除是连着家目录一起删除
查看用户帐号的信息命令id
id,-u,-g,-G
[root@lnh ~]# id xbz uid=1000(xbz) gid=1000(xbz) groups=1000(xbz) //查看用户信息 [root@lnh ~]# id -u xbz 1000 //用户id [root@lnh ~]# id -g xbz 1000 //组id [root@lnh ~]# id -G xbz 1000 //附属组
usermod 修改用户帐号属性的命令
-u UID ,-g GID,-ag
[root@lnh ~]# id tsb uid=995(tsb) gid=992(tsb) groups=992(tsb) [root@lnh ~]# usermod -u 111 tsb //-u 修改用户id,不能和其他用户相同 [root@lnh ~]# usermod -g 993 tsb [root@lnh ~]# id tsb uid=111(tsb) gid=993(rngd) groups=993(rngd) //修改组id,组必须事先存在 [root@lnh ~]# usermod -G xxxb tsb [root@lnh ~]# id tsb uid=111(tsb) gid=993(rngd) groups=993(rngd),1112(xxxb) [root@lnh ~]# usermod -G xbz tsb [root@lnh ~]# id tsb uid=111(tsb) gid=993(rngd) groups=993(rngd),1000(xbz) [root@lnh ~]# usermod -aG xxxb tsb [root@lnh ~]# id tsb uid=111(tsb) gid=993(rngd) groups=993(rngd),1000(xbz),1112(xxxb) //-G修改附加组,没有加-a会覆盖前面的附加组
-md
[root@lnh ~]# ll /home/ total 0 drwx------. 2 1007 1007 62 Jul 3 18:53 aaa drwx------. 2 xxxb xxxb 62 Jul 3 19:04 xxxb [root@lnh ~]# usermod -md /opt/shan xxxb [root@lnh ~]# ll /home/ total 0 drwx------. 2 1007 1007 62 Jul 3 18:53 aaa [root@lnh ~]# ll /opt/ total 0 drwx------. 2 xxxb xxxb 62 Jul 3 19:04 shan -rw-r--r--. 1 root root 0 Jul 3 07:55 xbz //改变用户家目录的同时把原来家目录的文件移动到新的家目录中
-e -f
[root@lnh ~]# usermod -e 2022-7-7 xxxb [root@lnh ~]# usermod -f 2 xxxb [root@lnh ~]# cat /etc/shadow |grep xxxb xxxb19176:0:99999:7:2:19180: //-e YYYY-MM-DD 指明用户帐号过期日期 //-f 设置过期的延缓期限
-L -U
[root@lnh ~]# passwd xxxb Changing password for user xxxb. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully. [root@lnh ~]# usermod -L xxxb [root@lnh ~]# cat /etc/shadow |grep xxxb xxxb:!$6$6RKtLUh/iJRAf5aq$J7MIzJ2sY2VrS5FmeNvrampnjO2S1HyRQKVJz2wYrRI0Qq35CrE/QyxjE6K8mhEV15JqmFOem9ICO0FbeEP6M/:19176:0:99999:7:2:19180: [root@lnh ~]# usermod -U xxxb [root@lnh ~]# cat /etc/shadow |grep xxxb xxxb:$6$6RKtLUh/iJRAf5aq$J7MIzJ2sY2VrS5FmeNvrampnjO2S1HyRQKVJz2wYrRI0Qq35CrE/QyxjE6K8mhEV15JqmFOem9ICO0FbeEP6M/:19176:0:99999:7:2:19180: //-L锁定帐号,被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号 //-U 解锁帐号
-s shell
[root@lnh ~]# usermod -s /sbin/nologin xxxb [root@lnh ~]# cat /etc/passwd |grep xxxb xxxb:x:1122:1112::/opt/shan:/sbin/nologin -s//禁止其登录shell进入xxxb
切换用户命令su
切换用户的方式 | 特点 |
---|---|
su USERNAME | 非登录式切换,即不会读取目标用户的配置文件 |
su - USERNAME | 登录式切换,即会读取目标用户的配置文件。完全切换 |
su - | 不指定用户时默认切换至root用户 |
root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码 |
[root@lnh ~]# su tushanbu [tushanbu@lnh root]$ su - Password: Last login: Sun Jul 3 19:56:01 CST 2022 from 192.168.222.1 on pts/0 [root@lnh ~]# su - tushanbu Last login: Sun Jul 3 19:57:00 CST 2022 on pts/0 [tushanbu@lnh ~]$ su - Password: Last login: Sun Jul 3 19:57:31 CST 2022 on pts/0 //在root用户下可以直接su tushanbu进入,su -是不指定用户默认切换到root用户,su - tushanbu是登录的方式进行切换 [root@lnh ~]# su - tushanbu -c "mkdir xxx" [root@lnh ~]# ls /home/tushanbu/ xxx //不进入用户进行创建
bash的配置文件:
配置文件类型 | 配置文件路径 |
---|---|
全局配置 |
etc/profile /etc/profile.d/*.sh /etc/bashrc |
个人配置 |
~/.bash_profile ~/.bashrc |
配置文件类型 | 功能 |
---|---|
profile类 | 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本 |
bashrc类 | 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名 |
登录式shell如何读取配置文件? | |
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc |
非登录式shell如何读取配置文件?
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
密码管理
密码管理命令passwd
passwd , --stdin
[root@lnh ~]# passwd tushanbu Changing password for user tushanbu. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully. //在root下可以直接进行设置密码 [root@lnh ~]# echo 1 |passwd --stdin tushanbu Changing password for user tushanbu. passwd: all authentication tokens updated successfully. //标准输入获取用户密码
-l ,-u ,-d
[root@lnh ~]# passwd -l tushanbu Locking password for user tushanbu. passwd: Success //锁定用户 [root@lnh ~]# passwd -u tushanbu Unlocking password for user tushanbu. passwd: Success //解锁用户 [root@lnh ~]# passwd -d tushanbu Removing password for user tushanbu. passwd: Success //删除用户密码
-n ,-x,-w,-i
[root@lnh ~]# passwd -n 20 tushanbu Adjusting aging data for user tushanbu. passwd: Success //-n mindays最短使用天数20天 [root@lnh ~]# passwd -x 200 tushanbu Adjusting aging data for user tushanbu. passwd: Success //-x maxdays最长使用天数200天 [root@lnh ~]# passwd -w 10 tushanbu Adjusting aging data for user tushanbu. passwd: Success //-w warndays提前10天前发出过期警告 [root@lnh ~]# passwd -i 10 tushanbu Adjusting aging data for user tushanbu. passwd: Success //-i inactivedays可以延期10天 [root@lnh ~]# cat /etc/passwd |grep tushanbu tushanbu1123:1123::/home/tushanbu:/bin/bash
密码生成工具openssl
//语法:openssl command [ command_opts ] [ command_args ]
command //包含标准命令、消息摘要命令、加密命令
version //查看程序版本号
dgst //提取特征码
passwd //生成密码
rand //生成伪随机数
[root@lnh ~]# openssl dgst -md5 /etc/fstab MD5(/etc/fstab)= 431fca5169ffb3a30eb83c94a11dc2f6 //提取特征码 [root@lnh ~]# openssl passwd -1 -salt hellotom Password: $1$hellotom$o9rUZ07NstylvbqW9RrdV/ //生成密码 openssl passwd -1 -salt string string一般为8位 [root@lnh ~]# openssl rand -base64 20 aDsYyelB9h6ksGSke6A3bN4OzfI= //生成随机数 openssl rand -base64 NUM,NUM表示随机数的长度 [root@lnh ~]# tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 |xargs VnRr0QqXyGGS5SHuv1Rl1KK3TYPbcb //生成30位的密码
组管理
创建组命令groupadd
-g GID ,-r
[root@lnh ~]# groupadd bnx //创建组 [root@lnh ~]# groupadd -g 1222 xnx //指定组id [root@lnh ~]# groupadd -r xbn //-r 创建一个系统组 [root@lnh ~]# cat /etc/passwd |grep xnx [root@lnh ~]# cat /etc/passwd |grep xbn [root@lnh ~]# cat /etc/group |grep xbn xbn991: [root@lnh ~]# cat /etc/group |grep xnx xnx1222: [root@lnh ~]# cat /etc/group |grep bnx bnx2001:
删除组命令groupdel
[root@lnh ~]# groupdel bnx [root@lnh ~]# groupdel xbn [root@lnh ~]# groupdel xnx [root@lnh ~]# cat /etc/group |grep bnx [root@lnh ~]# cat /etc/group |grep xbn [root@lnh ~]# cat /etc/group |grep xnx
-
Linux
+关注
关注
87文章
11304浏览量
209498
原文标题:用户与组管理全攻略:确保权限分配无懈可击
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论