江湖道

庙堂,江湖,学术!

返回顶部

liunx之用户管理

用户管理

==============================================================
groupadd,groupdel
useradd,usermod,userdel
passwd,chage
==============================================================
内容提要:
用户管理 useradd usermod userdel
组管理 groupadd groupdel
用户密码管理 passwd chage
通过 su sudo 给普通用户提权
==============================================================
Linux 是一个可以实现多用户登陆的操作系统,允许多个用户同时登陆到系统上使用资源。系统根据账户来区分每个用户的文件、进程、任务,给每个用户提供特定的工作环境。
对用户组的管理主要包括:添加、修改、删除以及配置访问系统的资源。

1.1 Linux 用户组基本概念

Users and groups:
. Every process (running program) on the system runs as a particular user.
. Every file is owned by a particular user.
. Access to files and directories are restricted by user.
. The user associated with a running process determines the files and directories accessible to that process.

用户组group,就是具有相同特征的用户的集合体。
查看当前登录的用户信息:
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root)

查看文件的owner:
[root@localhost ~]# ll /home/
drwx------. 4 alice alice 4096 Jun 2 15:59 alice
drwx------. 2 root root 16384 Jun 1 23:09 lost+found
drwxr-xr-x 2 root root 4096 Jun 2 15:33 localhost

查看运行进程的username:
[root@localhost ~]# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19360 1536 ? Ss 13:29 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 13:29 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 13:29 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 13:29 0:00 [ksoftirqd/0]

和用户组相关的一些文件:
(1)用户账号文件:

 /etc/passwd

root:x:0:0:root:/root:/bin/bash

用户名:x:uid:gid:描述:HOME:shell
(2)用户密码文件

/etc/shadow

root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

  参数一: sp_namp 用户名称

  参数二: sp_pwdp 用户加密后的密码

  参数三: sp_lstchg 用户密码最近一次修改时间,算法是今天的时间减去1,1,1970得到的时间间隔

  参数四: sp_min  用户最少多少天后才能改密码的天数(默认为0,表示可以在任何时间修改,有啥意义?有种需求叫密码永不变= =。)

  参数五: sp_max 用户最多多少天后一定要修改密码的天数,系统会强制用户修改密码(默认为99999,改为1 也能让密码改不了)

  参数六: sp_warn 过期前多少天时间会被警告(改为-1 则永远不会提示)

  参数七: sp_inact 过期后多少天内账号变为inactive状态,可登陆,但不能操作

  参数八: sp_expire 多少天后账号会过期,无法登陆

  参数九: sp_flag 保留参数

例:test01:$6$h6vM4nLR$baO2kmPoSYLHRhAvIjBHZF7Kf6vAT4fIlb.HRjJaF4dBGHb3Wsj8oBpXHujk9dXlFZy0W4VjiotrnR1p1.2nn.:18186:0:99999:7:::

查看最近一次修改密码是在那一天。

[root@localhost backup]# date -d "1970-01-01 18186 days" +%Y/%m/%d
2019/10/17

设置用户每次更新密码7天内禁止修改密码

[root@localhost backup]# passwd -n 7 test01

[root@localhost ~]# chage -d 7 test01

设置用户90天内必须修改密码

[root@localhost backup]# passwd -x 90 test01

设置用户密码过期前3天给出通知

[root@localhost ~]# passwd -w 3 test01

设置用户密码过期5天后禁止登陆系统

[root@localhost ~]# passwd -i 5 test01

设置用户初次登陆时强制修改密码

[root@localhost ~]# passwd -e test01

(3)用户组账号文件

/etc/group

root:x:0:
(4)用户组密码文件

/etc/gshadow

[root@localhost ~]# man 5 passwd
[root@localhost ~]# man 5 shadow
[root@localhost ~]# man 5 group
[root@localhost ~]# man 3 crypt

加密算法$id:
$1: MD5
$5: SHA-256
$6: SHA-512

1.2 Linux 用户组分类

1 用户分类

Linux系统中存在三种用户:root用户、系统用户(也称之为伪用户)、普通用户
系统约定: RHEL6
uid: 0 特权用户
uid: 1~499 系统用户
uid: 500+ 普通用户

The root user

. uid is 0
. all power
. This user has the power to override normal privileges on the file system
. installing or removing software and to manage system files and directorie
. Most devices can only be controlled by root

RHEL6普通用户的UID 从500开始,RHEL7则是从1000开始;

系统约定: RHEL7
uid: 0 特权用户
uid:1-999为系统用户
uid:1000+为本地用户

2 组分类

基本组(私有组)
附加组(公有组)
系统组


根据账户功能,用户组可以分为:
超级用户组:root gid为0
系统用户组:gid 1-999
本地用户组:gid 1000+

1.3 Linux 用户组管理

如果要在图形化界面下管理用户与组,需安装包:system-config-users
用户组:
[root@localhost ~]# groupadd hr
[root@localhost ~]# groupadd sale
[root@localhost ~]# groupadd it
[root@localhost ~]# groupadd fd
[root@localhost ~]# groupadd market
[root@localhost ~]# groupadd net01 -g 2000 //添加组net01,并指定gid 2000
[root@localhost ~]# grep 'net01' /etc/group //查看/etc/group中组net01信息
[root@localhost ~]# groupdel net01 //删除组net01

用户:
useradd creates users
==创建用户 未指定选项==
[root@localhost ~]# useradd user01
. 未指定该用户的主组 默认和用户同名
. 未指定该用户的附加组 默认不添加附加组
. 未指定用户的HOME 默认 /home/username
. 未指定用户的SHELL 默认 /bin/bash
. 未指定用户的UID...
[root@localhost ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group
/etc/passwd:user01:x:507:512::/home/user01:/bin/bash
/etc/shadow:user01:!!:16589:0:99999:7:::
/etc/group:user01:x:512:

[root@localhost ~]# id user01
uid=507(user01) gid=512(user01) groups=512(user01)

[root@localhost ~]# ls /var/spool/mail/user01
/var/spool/mail/user01

小结:
如果创建一个用户时,未指定任何选项,系统会创建一个和用户名相同的组作为用户的Primary Group.

==创建用户 指定选项==
[root@localhost ~]# useradd user02 -u 503 //创建用户usr02,指定uid
[root@localhost ~]# useradd user03 -d /aaa //创建用户user03 指定家目录
[root@localhost ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell
[root@localhost ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组
[root@localhost ~]# useradd user10 -u 4000 -s /sbin/nologin

userdel deletes users
==删除用户==
[root@localhost ~]# userdel user10 //删除用户user10,但不删除用户家目录和mail spool
[root@localhost ~]# ll -d /home/user10/
drwx------ 3 506 510 4096 09-01 21:14 /home/user10/
[root@localhost ~]# ll /var/spool/mail/user10
-rw-rw---- 1 506 mail 0 09-01 21:14 /var/spool/mail/user10

[root@localhost ~]# userdel -r user2 //删除用户user2,同时删除用户家目录和mail spool

==用户密码==
[root@localhost ~]# passwd alice
[zhuzhu@localhost ~]$ passwd


usermod modifies existing users
==组成员管理==
注意:只针对已存在的用户
[root@localhost ~]# usermod -G hr niuniu2 //覆盖原有的附加组
[root@localhost ~]# usermod -G fd,it niuniu2
[root@localhost ~]# usermod -aG hr niuniu2 //增加新的附加组

修改用户 usermod
1、修改用户名 user1---User1: usermod -l User1 user1
2、增加描述信息 :usermod -c "install rpm" User1
3、修改登录shell :usermod -s /sbin/nologin User1
4、修改主目录: -d
5、设置过期日期: -e
6、锁定账号:-L 等价于 passwd -l
7、解锁账号:-U 等价于 passwd -u
8、-u,-g
==其它选项管理==
[root@localhost ~]# usermod -s /sbin/nologin niuniu2

1.4 扩展知识

useradd创建用户时,参照的文件...
[root@localhost ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 30
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
CREATE_HOME yes
ENCRYPT_METHOD SHA512

[root@localhost ~]# vim /etc/default/useradd
SHELL=/sbin/nologin

Password aging

# chage -m 0 -M 90 -W 7 -I 14 username
chage -d 0 username will force a password update on next login.
chage -l username will list a username's current settings.
chage -E YYYY-MM-DD will expire an account on a specific day.

手动创建用户示例:
[root@localhost~]# useradd maomao100
[root@localhost~]# echo 123456 |passwd --stdin maomao100
[root@localhost~]# chage -d 0 maomao100 //强制用户在下一次登录时修改密码

将多个用户加入到指定的组:
[root@localhost~]# gpasswd -a jack wheel //usermod -aG hr zhuzhu
[root@localhost~]# gpasswd -M zhuzhu,maomao100 hr
[root@localhost~]# gpasswd -d zhuzhu hr

1.5 给普通用户提权

以下两种方式都可以将普通用户提升为root
1)

Switching users with su

[alice@localhost ~]$ useradd u1
-bash: /usr/sbin/useradd: 权限不够
[alice@localhost ~]$ su - root
password:
[root@localhost ~]# useradd u1

管理员切换为普通用户不需要输入密码;
普通用户切换其他用户需要输入目标用户密码;

su的优缺点
su 命令的确为管理带来方便,但通过su切换到root后,也有不安全因素。

2)

Running commands as root with sudo

sudo配置文件/etc/sudoers
(1)别名规则
别名规则的定义格式:
Alias_Type NAME = item1, item2, ...
或者
Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
其中:
Alias_Type是指别名类型,包括四种:Host_Alias、User_Alias、Runas_Alias和Cmnd_Alias。NAME就是别名;
NAME的命名是包含大写字母、下划线以及数字,但必须以一个大写字母开头,比如ADMIN、SYS1和NETWORKING都是合法的,而sYS和6ADMIN是非法的;

① Host_Alias
定义主机别名的例子如下:
Host_Alias HT1=localhost,ztg,192.168.0.0/24
主机别名是HT1,“=”号右边是成员。
Host_Alias HT1= localhost,ztguang,192.168.10.0/24:HT2=ztg2,ztg3
定义了两个主机别名HT1和HT2,别名之间用“:”号隔开。

② User_Alias
用户别名,别名成员可以是用户,用户组(前面要加%号)。
User_Alias ADMIN=ztg,ztguang
定义用户别名ADMIN,有两个成员ztg和ztguang,这两个成员要在系统中确实存在。
User_Alias PROCESSES= ztg1
定义用户别名PROCESSES,有一个成员ztg1,这个成员要在系统中确实存在。

③ Runas_Alias
用来定义runas别名,这个别名是指sudo允许切换到的用户;
Runas_Alias RUN_AS = root
定义runas别名RUN_AS,有一个成员root。

④ Cmnd_Alias
定义命令的别名,这些命令必须是系统存在的文件,要用绝对路径,文件名可以用通配符表示。
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

(2)授权规则

授权规则的定义格式:
授权用户  主机=命令动作
或者
授权用户  主机=[(切换到哪些用户或用户组)]  [是否需要密码验证]  命令1,[(切换到哪些用户或用户组)]  [是否需要密码验证]  [命令2],[(切换到哪些用户或用户组)]  [是否需要密码验证]  [命令3] …
这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,如果不需要密码直接运行命令的,应该加
NOPASSWD:参数,但这些可以省略。

sudo的客户端应用
sudo -l:列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u 用户名 命令:以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是UID。
sudo -k:清除存活期时间,下次再使用sudo时要再输入密码。
sudo -b 命令:在后台执行指定的命令。
sudo -p 提示语 <操作选项>:可以更改询问密码的提示语,其中%u会代换为使用者账号名称,%h会显示主机名称。


实例:授权规则举例
student ALL=(root) /bin/chown,/bin/chmod


以root身份授权普通用户
[root@localhost ~]# vim /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL

[root@localhost ~]# useradd yangyang -G wheel
[root@localhost ~]# id yangyang
uid=504(yangyang) gid=504(yangyang) 组=504(yangyang),10(wheel)

[yangyang@localhost ~]$ useradd gougou10
-bash: /usr/sbin/useradd: 权限不够
[yangyang@localhost ~]$ sudo useradd gougou10
[yangyang@localhost ~]$ id gougou10
uid=505(gougou10) gid=505(gougou10) 组=505(gougou10)

本节作业:

 

1. 完成课堂中学习的所有内容

 

2.

用户管理命令练习
增加两个用户并设置好密码(写2行):John、Lucy
查看各用户的基本信息(相关文件在/etc中)
查看各用户的密码信息(相关文件在/etc中)
查找用户summer并显示其相关信息
将当前用户切换到John(进入其主目录)
显示当前登录用户名
将John的登录密码改为:mima1234
将John的帐号有效期设为2017年12月31号
将John加入到summer组中
将用户名John改为Jack
将Jack的用户全名改为:Jack.Willianmus
用户切换到Lucy,删除Lucy的密码
删除用户Lucy

4. 组管理命令练习
增加以一个student组
查看所有组的基本信息(相关文件在etc中)
查看summer组中包含哪些用户名?
将student组名改为teacher
删除teacher组

posted @ 2019-03-25 23:17  大江东流水  阅读(372)  评论(0编辑  收藏  举报