用户管理

==============================================================
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. Django框架(八) Django之ORM数据库操作

    创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系( ...

  2. Ground Defense【不知道叫啥可能就是枚举】

    问题 G: Ground Defense 时间限制: 1 Sec  内存限制: 128 MB 提交: 116  解决: 22 [提交] [状态] [命题人:admin] 题目描述 You are a ...

  3. upc组队赛1 闪闪发光 【优先队列】

    闪闪发光 题目描述 一所位于云南昆明的中医药本科院校--云南中医学院. 因为报考某专业的人数骤减,正面临着停招的危机. 其中有九名少女想到一条妙计--成为偶像, 只要她们成为偶像,学校的名气便会增加, ...

  4. 再谈fedora 23中的flash的安装

    安装下载, flash插件的地址是 https://get.adobe.com/flashplayer/ ls 的显示, 记住两个很常用的选项: 指定 "假设的屏幕的宽度" , - ...

  5. 【做题】arc068_f-Solitaire——糊结论

    把所有数字放入双端队列后,结果大概是这样一个排列: \[P_1 1 P_2\] 其中\(P_1\)是递减序列,\(P_2\)是递增序列. 我们以\(1\)所在的位置\(k\)分割最终的排列\(A\). ...

  6. .NET Standard vs. .NET Core

    What is the difference between .NET Core and .NET Standard Class Library project types? Answer1 When ...

  7. 用yarn代替cnpm,cnpm漏包有点严重

    npm 的方式  npm  install  -g  yarn   安装完成后,你可以测试下自己的版本 yarn --version 开始使用 单独安装包的方式add 不是install,后面不用加 ...

  8. 怎么在父窗口调用它页面的iframe里面数据,进行操作?

    注:在服务器下操作有效果,本地无效 document.getElementById("taskdetail1").contentWindow.test(a) document.ge ...

  9. 【一】、搭建Hadoop环境----本地、伪分布式

    ##  前期准备 1.搭建Hadoop环境需要Java的开发环境,所以需要先在LInux上安装java 2.将    jdk1.7.tar.gz 和hadoop 通过工具上传到Linux服务器上 3. ...

  10. dRMT: Disaggregated Programmable Switching, SIGCOMM17

    Reference: dRMT, SIGCOMM 2017 今年的SIGCOMM17会议上,Cisco System和MIT的团队针对RMT模型现有的问题,合作发表了这篇"dRMT: Dis ...