Linux系统用户管理
Linux系统的用户管理
1.用户管理*****
2.Linux用户命令****
3.用户创建的原理***
4.密码管理***
5.组命令管理**
6.身份切换**** .
7. sudo提升权限*****
我们现在所使用的操作系统都是多用户操作系统
AAA认证体系
认证授权统计
用户和组存在的意义
1.系统上的每一个进程(运行的程序)都需要特定的用户运行
2.每一个文件都有特定的用户拥有
3.访问文件或目录受到用户的限制
4.进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关
5、当多个用户的权限相同时,可以归到一个组,对组进行配置权限
查看当前登录的用户信息
用户的 uid分类
0 超级管理员
1-200 系统用户,不要动(例如,xxx进程执行会有一个特定的用户组,但是这个用户不能登录)
201-999 系统用户,用来运行服务账户,不需要登陆系统(动态分配)
1000-65535(2^16) 常规用户
组类别
基本组 优先使用基本组,用户只能属于一个基本组,用户默认基本组
附加组 基本组不能满足授权要求,创建附加组,用户可以属于多个附加组
私有组 私有组,创建用户时如果没有指定基本组,系统会创建和用户同名的组
注:一个新用户,没有规定组就是默认私有组,其实就是基本组,当再需要加包含到别的组时就是附加组,基本组的优先级高
1、用户管理
用户的账号信息存在 /etc/passwd中,密码存在 /etc/shadow中
如果2个文件出问题会导致无法正常登录Linux
/etc/passwd 账户文件
[root@yxlll ~]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash
以 :为分隔符,分成7个字段
字段名称 注释说明
1.用户名称 //用户的账号名称
2.密码占位符 //存放账户的口令,暂用x表示,密码保存在/etc/shadow
3.用户的UID //用户标识号
4.用户基本组GID //组标识号
5.用户注释 //用户详细信息
6.用户家目录 //用户家目录, root家目录是/ root普通用户的家目录存在/home/username,可自定义
7.用户登录Shell //用户登录Linux使用的shell cat /etc/shells
/bin/bash 登录
/sbin/nologin 无法登录
/etc/shadow 用户密码文件
[root@yxlll ~]# head -1 /etc/shadow root:$6$q3cxb/GDYej/n$qCNj5kVGF.2olXgggZliryOb.BWprWoQms9z.rjU1PEuKkkHaj7gN13Bvj04aPvLa8xUXhmDu7tk662ZgHFcy.:18514:0:99999:7:::
字段名称 注释说明
1.用户登陆名 //用户的账号名称
2.加密后的密码 //用户密码,这是加密过的口令(未设密码时为! !,未设置密码和密码为空是2个概念,默认 !! )
$a$b$c a表示加密算法 b表示salt随机值,盐 c加密后的值
3.最近一次密码更改时间 //从1970年到最近一次更改密码时间之间过了多少天
4.密码最少使用几天 //密码最少使用几天才可以更改密码(0表示无限制)
5.密码最长使用几天 //密码使用多少天需要修改密码(默认99999永不过期)
6.密码到期前警告期限 //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
7.密码到期后保持活动的天数 //在此期限内,用户依然可以登陆系统并更改密码,指定天数过后,账户被锁定
8.账户到期时间 //从1970年起,账户在这个日期前可使用,到期后失效.
9.标志 //保留
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays MAX_DAYS set maximum number of days before password
change to MAX_DAYS
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
date -s "20200923" 更改时间 useradd yxlaa1 创建用户 echo "yxl123" |passwd --stdin yxlaa1 修改密码 su - yxlaa1 登录用户 exit 登出
2、Linux用户命令
添加用户前需要确定
确定用户的默认组是否有特殊要求
确定用户是否允许登陆
确定用户的密码策略
确定用户的有效期
确定用户的uid是否有特殊要求
‘-C' 指定用户注释信息
创建一个普通用户,即 Uid>1000
[root@yxlll ~]# groupadd sa [root@yxlll ~]# groupadd dba [root@yxlll ~]# groupadd students [root@yxlll ~]# useradd -u 5001 -g students -G sa,dba -c "2020 yxl" -d /home/yxlll -s /bin/bash yxlllaa1 [root@yxlll ~]# tail -1 /etc/passwd yxlllaa1:x:5001:1002:2020 yxl:/home/yxlll:/bin/bash
创建一个用户,没有家目录,那么就是 -M 或者 -r
[root@yxlll ~]# useradd -M -s /sbin/nologin Mysql [root@yxlll ~]# tail -1 /etc/passwd Mysql:x:5002:5002::/home/Mysql:/sbin/nologin [root@yxlll ~]# useradd -r -s /sbin/nologin dba useradd:dba 组已经存在 - 如果您想将此用户加入到该组,请使用 -g 参数。 [root@yxlll ~]# useradd -r -g dba -s /sbin/nologin dba [root@yxlll ~]# tail -1 /etc/passwd dba:x:997:1001::/home/dba:/sbin/nologin [root@yxlll ~]# tail -3 /etc/passwd yxlllaa1:x:5001:1002:2020 yxl:/home/yxlll:/bin/bash Mysql:x:5002:5002::/home/Mysql:/sbin/nologin dba:x:997:1001::/home/dba:/sbin/nologin
使用 usermod命令修改用户组
-C 指定用户注释信息
[root@yxlll ~]# usermod -u 250 Mysql [root@yxlll ~]# tail -3 /etc/passwd yxlllaa1:x:5001:1002:2020 yxl:/home/yxlll:/bin/bash Mysql:x:250:5002::/home/Mysql:/sbin/nologin dba:x:997:1001::/home/dba:/sbin/nologin
使用 chfn修改用户信息
[root@yxlll ~]# finger yxlllaa1 Login: yxlllaa1 Name: 2020 yxl Directory: /home/yxlll Shell: /bin/bash Never logged in. No mail. No Plan. [root@yxlll ~]# id yxlllaa1 uid=5001(yxlllaa1) gid=1002(students) 组=1002(students),1000(sa),1001(dba) [root@yxlll ~]# chfn yxlllaaq chfn: user "yxlllaaq" does not exist. [root@yxlll ~]# chfn yxlllaa1 Changing finger information for yxlllaa1. 名称 [2020 yxl]: yxl 办公 []: yxlaaa 办公电话 []: 12345678 住宅电话 []: 13234567891 Finger information changed. [root@yxlll ~]# finger yxlllaa1 Login: yxlllaa1 Name: yxl Directory: /home/yxlll Shell: /bin/bash Office: yxlaaa, 12345678 Home Phone: +1-323-456-7891 Never logged in. No mail. No Plan.
3、用户创建的原理和流程
取模板
4、密码设置
随机生成密码,保存备份
4.1、系统内置的变量产生密码 md5
4.2、 mkpasswd密码生成工具
//-l 密码长度 -d 数字 -C 大写字母数 -c 小写字母数
[root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 ,EOMbl478KxcFfd [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 {BgTVYpl6e61nsB [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 Eme1@E6e4QhvAMk [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 3DccxkeO+YBxY27 [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 dTSsFo*Ua30Cjb3
5、组命令管理
组账号信息保存在 /etc/group 和 /etc/gshadow两个文件中
/etc/group 组账号信息
[root@yxlll ~]# tail /etc/group //获取最后10行(默认)的组信息数据 postfix:x:89: chrony:x:996: nscd:x:28: tcpdump:x:72: slocate:x:21: apache:x:48: sa:x:1000:yxlllaa1 dba:x:1001:yxlllaa1 students:x:1002: Mysql:x:5002:
组信息一般用 :分割,一般有4个信息
组账号名称 :密码信息(存放在 gshadow中) :组GID号 :组成员(一般不显示)
使用 groupadd命令增加组
[root@yxlll ~]# egrep -v "^#|^$" /etc/login.defs //用正则表达式,排除空行和注释行的内容,显示文件更加简洁
用法:groupadd [选项] 组
-f, --force 如果组已经存在则成功退出
并且如果 GID 已经存在则取消 -g
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR directory prefix
使用 groupdel删除组
注意:只能删除附加组,不能删除基本组
6、身份切换
su 切换身份 su - yxlllaa1
shell分类
交互式 shell 等待用户输入执行提交的命令,exit退出
非交互式 shell 执行 shell脚本,执行结束自动退出
1、把交互命令转化成同等功能的非交互命令
2、提前做好应答文件
个人配置文件: ~/ . bash_ profile ~/ . bashrc
全局配置文件: /etc/profile /etc/profile.d/*.sh /etc/bashrd
字符串环境变量文件: /etc/locale. conf (CentOS7)
维持当前身份去执行用户身份的内容
命令: su -c username
例如,在 roo身份下,以 yxlllaa1身份去操作
7、sudo提升权限
su切换用户身份,再切回 root身份时需要密码,这样不安全,使用 sudo执行 root身份才能执行的命令,
默认只有 root用户才能使用 sudo,普通用户想要使用需要更改设定文件,即 /etc/sudoers
[root@yxlll ~]# [root@yxlll ~]# grep wheel /etc/sudoers ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
// wheel组 在任何主机名 以任何身份 执行任何命令 # %wheel ALL=(ALL) NOPASSWD: ALL
// 1.用户名/组名 2.主机名 3.角色名 4.命令名
//授权方式,授权用户所有管理员的所有权限