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.标志            //保留

 

用法:chage [选项] 登录
选项:
  -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是否有特殊要求

1.使用useradd命令新增账户,注意: adduser命令软链接指向useradd命令
  ‘-u'  指定用户的UID,不能和现有ID冲突  
  ' -g'  指定用户用户默认基本组
  '-G'  指定用户附加组,用逗号隔开添加多个附加组
  '-d'   指定用户家目录
  ‘-C'  指定用户注释信息
  '-M'   不建立家目录
  '-S'  指定用户默认shell
  ’-r'   创建系统账户,没有家目录
 
 
创建一个普通用户,即 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命令修改用户组

 

   -u  指定用户的UID,不能和现有ID冲突  
   -g  指定用户用户默认基本组
  -G  指定用户附加组,用逗号隔开添加多个附加组
  -d   指定用户家目录
  -C  指定用户注释信息
  -M  不建立家目录
  -S  指定用户默认shell
  -r  创建系统账户,没有家目录
  
  -L  锁定用户
  -U  解锁用户
[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  //用正则表达式,排除空行和注释行的内容,显示文件更加简洁

 

[root@yxlll ~]# groupadd test 11
用法: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.命令名

    

 

//授权方式,授权用户所有管理员的所有权限

 

 

 

 

 

 

 

posted @ 2020-09-23 19:42  yxlll  阅读(239)  评论(0编辑  收藏  举报