用户管理

==============================================================
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]

和用户组相关的一些文件:
用户账号文件 /etc/passwd root:x:0:0:root:/root:/bin/bash
用户名:x:uid:gid:描述:HOME:shell
用户密码文件 /etc/shadow root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

用户组账号文件 /etc/group root:x:0:
用户组密码文件 /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组

liunx之用户管理的更多相关文章

  1. 从零开始学Linux系统(五)用户管理和权限管理

    权限管理: 常识: chmod  U-所有者  g-所属组  O-其他人r-4-可读  w-2-可写  x-1-可执行  s-4-SetUID    s-2-SetGID    t-1-粘着位 注:目 ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(75)-微信公众平台开发-用户管理

    系列目录 前言 本节主要是关注者(即用户)和用户组的管理,微信公众号提供了用户和用户组的管理,我们可以在微信公众号官方里面进行操作,添加备注和标签,以及移动用户组别,同时,微信公众号也提供了相应的接口 ...

  3. MySQL用户管理

    主要总结MySQL进行用户管理的基本实现,包含MySQL登录,添加用户,删除用户,为用户分配权限,移除某用户的权限,修改密码,查看权限等基本操作,所有命令均亲测实现.本博文是本人的劳动成果所得,在博客 ...

  4. mysql 用户管理和权限设置

    用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user ...

  5. Laravel大型项目系列教程(二)之用户管理

    Laravel大型项目系列教程(二) 一.前言 本节教程将大概实现用户的注册.修改个人信息.管理用户功能. 二.Let's go 1.创建用户注册视图 $ php artisan generate:v ...

  6. linux 用户管理

    linux 用户管理 创建一个用户 foo 这个用户只能在/home/foo 上面增加删除文件, foo 不能在其他目录加减文件 useradd -d /home/foo -m foo [root@] ...

  7. mongodb的用户管理及安全认证

    1.确认mongodb的版本 > use admin switched to db admin > db.runCommand({}) { "version" : &q ...

  8. linux 用户管理(一)

    本节内容梗概: 1.用户管理配置文件 2.用户管理命令 3.用户组管理命令 4.批量添加用户 5.用户授权 学东西先讲原理,所以从配置文件入手 1.用户信息文件  /etc/passwd 存放了用户的 ...

  9. MVC4做网站后台:用户管理 —用户

    这块进行用户管理,可以浏览.查询已注册的用户,修改用户资料,删除用户等.没有做添加用户,不知是否必要.列表页还是使用easyui的datagrid.这个思路跟用户组的方式差不多. 1.接口Interf ...

随机推荐

  1. Google Protocol Buffer在vs2010下配置

    1.从这里下载protobuf-2.6.1.tar.gz到桌面,并解压,解压后的文件夹为protobuf-2.6.1.(我的桌面为C:\Users\mcl\Desktop) 2 .进入文件夹proto ...

  2. 如何评价 React 实现的前端 UI 库 material-ui?

    作者:知乎用户链接:https://www.zhihu.com/question/51040975/answer/208582603来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  3. [POI2011]Garbage 欧拉回路

    [POI2011]Garbage 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2278 https://loj.ac/problem/216 ...

  4. (zhuan) Where can I start with Deep Learning?

    Where can I start with Deep Learning? By Rotek Song, Deep Reinforcement Learning/Robotics/Computer V ...

  5. 《操作系统_时间片轮转RR进程调度算法》

    转自:https://blog.csdn.net/houchaoqun_xmu/article/details/55540250 时间片轮转RR进程调度算法 一.概念介绍和案例解析时间片轮转法 - 基 ...

  6. Hive初步使用、安装MySQL 、Hive配置MetaStore、配置Hive日志《二》

    一.Hive的简单使用 基本的命令和MySQL的命令差不多 首先在 /opt/datas 下创建数据  students.txt 1001 zhangsan 1002 lisi 1003 wangwu ...

  7. Docker Engine SDKs and API 的开发1

    Develop with Docker Engine SDKs and API Docker provides an API for interacting with the Docker daemo ...

  8. mesh合并

    [风宇冲]Unity3D性能优化:DrawCall优化 (2013-03-05 15:39:27) 转载▼ 标签: it unity unity3d unity3d教程 分类: Unity3d之优化 ...

  9. 搭建Nuget服务器

    1.新建一个web网站应用程序 (最好是ASP.NET空Web应用程序) 2.通过NuGet扩展 引用 NuGet.Server包 引用之后的项目结构为 将此网站部署到IIS上,即可访问,既搭建好了 ...

  10. ZZNU 正约数之和 2094

    #include<iostream> #include<cstring> #include<queue> #include<cstdio> #inclu ...