本文介绍Linux的用户管理

用户管理

Linux 是一个可以实现多用户登陆的操作系统,不同用户可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。

但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于用户管理和权限机制,不同用户不可以轻易地查看、修改彼此的文件。

与windows相比LINUX中的用户和账号的作用是一样的。

都是基于用户对访问的资源做控制,只不过在表示的细节上有差异。

用户帐号

类型 说明
超级用户 root账户拥有整个系统至高无上的权利
本地用户 由管理员创建,权限受到一定的限制,在自己的宿主目录是完整的权限
系统用户 一般是不会登录系统的,用于维持某个服务程序正常运行
伪用户 linux中任何一个命令的操作都必须有一个用户的身份
伪用户一般和系统或者程序服务相关
bin、daemon、shutdown 、halt等
linux默认都有这些伪用户
伪用户通常不需要或无法登陆系统,可以没有宿主目录
源码安装nginx,运行nginx web服务器默认使用nobody用户

用户分类

根据帐号的位置:可分为本地帐号、远程(域)帐号

根据帐号的功能:

类型 UID
超级用户(root) 0
普通用户 1-999为系统用户
1000+为本地用户
RHEL中本地用户UID从500开始

UID即每个用户的身份标示,类似于每个人的身份证号码

用户组分类

根据帐号的位置:可分为本地用户组、远程(域)用户组

根据帐号的功能:

类型 GID
超级用户组(root) 0
普通用户组 1-999为系统用户组
1000+为本地用户组

配置文件

关于用户和组的相关配置文件存放在以下目录中:

类型 账户信息 密码信息
用户 /etc/passwd /etc/shadow
/etc/group /etc/gshadow

用户账户信息文件说明

用户的账户信息保存在/etc/passwd文件中

这个文件以如下格式保存了每系统帐户的所有信息:

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

用户名:密码占位符:UID:GID:用户描述:宿主目录:登录的shell

用户密码信息文件说明

用户的密码信息保存在/etc/shadow文件中

这个文件以如下格式保存了系统帐户的密码信息:

root:$1$LTbeEPHI$AuZ6b2iHVNdekNHu2WvSP/::0:99999:7:::

用户名:加密后的密码:最近更改密码的日期:密码不能修改的天数:密码过期时间:密码需要更改期限到来的前7天发出警告:密码过期了几天后还能修改密码:帐号过期时间:保留

用户组信息文件说明

用户组信息保存在/etc/shadow文件中

这个文件以如下格式保存了系统用户组的所有信息:

root:x:0:tangbb

组名:组密码占位符:GID:组成员列表

用户组密码信息文件说明

用户组密码信息保存在/etc/gshadow文件中

这个文件以如下格式保存了系统用户组的密码信息:

root:x:0:

组名:组密码:组管理者列表:组用户列表

/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。

比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码。

解决模板文件被删之后用户名显示不正常的问题

当添加新的用户帐户时,默认会执行下列操作:

它的主目录就会被创建(一般是"/home/用户名",除非你特别设置)

一些隐藏文件 如.bash_logout, .bash_profile 以及 .bashrc 会被复制到用户的主目录

会创建一个和用户名同样的组(除非你给新创建的用户指定了组)

  • 删除用户的规则文件
[root@VM_200_13_centos ~]# useradd test
[root@VM_200_13_centos ~]# echo 123456 | passwd --stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.
[root@VM_200_13_centos ~]# ls -a /home/test
. .. .bash_logout .bash_profile .bashrc
[root@VM_200_13_centos ~]# rm -rf /home/test/.bash*
[root@VM_200_13_centos ~]# su - test
Password:
bash-4.2$ su - test

从上面最后一行看出用户名显示为bash-4.2

  • 恢复用户的规则文件
bash-4.2$ su - test
Password:
Last login: Sun Aug 14 01:38:21 CST 2016 on pts/0
-bash-4.2$ su
Password:
[root@VM_200_13_centos test]# cp /etc/skel/.bash* /home/test/
[root@VM_200_13_centos test]# chown test:test /home/test/.bash*
[root@VM_200_13_centos test]# su - test
Last login: Sun Aug 14 01:40:15 CST 2016 on pts/0
[test@VM_200_13_centos ~]$

从上面最后一行看出用户名已经正常显示

用户操作

介绍用户的添加删除等操作

添加用户

命令:useradd

作用:添加用户

语法:useradd [选项] 用户名

选项 说明
-u 创建用户时指定UID
-d 创建用户时指定宿主目录
不使用该选项时会默认会以用户名在/home目录下创建宿主目录
-g 创建用户时指定起始组(起始组只能有一个)
-G 创建用户时指定附加组(可以有多个附加组)
-s 创建用户时指定登录的shell
-M 创建用户时不创建宿主目录

创建用户tangpeng

[root@VM_200_13_centos ~]# ls /home
[root@VM_200_13_centos ~]# useradd tangpeng
[root@VM_200_13_centos ~]# ls /home
tangpeng

指定UID创建用户tangdd

[root@VM_200_13_centos ~]# useradd -u 9527 tangdd
[root@VM_200_13_centos ~]# ls /home
tangdd tangpeng

创建用户tangjj指定宿主目录为/home/zhazha

[root@VM_200_13_centos ~]# useradd tangjj -d /home/zhazha
[root@VM_200_13_centos ~]# ls /home
tangdd tangpeng zhazha

创建用户tangmm指定起始组为tangdd

[root@VM_200_13_centos ~]# useradd -g tangdd tangmm
[root@VM_200_13_centos ~]# id tangmm
uid=9529(tangmm) gid=9528(tangdd) groups=9528(tangdd)

创建用户指定附加组为root

[root@VM_200_13_centos ~]# id tangbb
uid=9530(tangbb) gid=9530(tangbb) groups=9530(tangbb),0(root)

指定用户登录的shell且不创建宿主目录

[root@VM_200_13_centos ~]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@VM_200_13_centos ~]# useradd -M -s /usr/sbin/nologin nginx
[root@VM_200_13_centos ~]# ls /home
tangbb tangdd tangmm tangpeng zhazha

删除用户

命令:userdel

作用:删除用户

语法:userdel [选项] 用户名

选项 说明
-f 强制删除用户即便是登录中的用户
-r 删除宿主目录和邮件
-Z 删除和这个用户关联的SELinux用户

删除用户tangpeng同时删除宿主目录和邮件

[root@VM_200_13_centos ~]# userdel -r tangpeng
[root@VM_200_13_centos ~]# ls /home
tangbb tangdd tangmm zhazha

修改用户

命令:usermod

作用:修改用户

语法:usermod [选项] 用户名

参数 说明
-u 修改用户UID
-d 修改用户宿主目录
-g 修改用户起始组
-G 修改用户附加组
-s 修改用登录的shell

切换用户

命令:su

作用:切换用户

语法:su [选项] [-] 用户名

说明:加上-会在切换用户时把环境变量一起进行切换

[root@VM_200_13_centos ~]# su - tangdd

查看用户

命令:id

作用:打印指定用户的用户和用户组信息

语法:id [选项] 用户

选项 说明
-Z 只打印当前用户的安全上下文(只在开启SELinux的内核系统中有效)
-g 只打印有效用户组
-G 打印所有用户组
-n 忽略(兼容其他版本)
-u 只打印有效的UID

命令:w

作用:显示登录到系统的用户

语法:w [选项]

选项 说明
-h 不显示有信息
-u 忽略当前进程用户名
-s 以短格式输出
-f 显示远程主机名字段
-o 使用旧样式数据
-i 使用ip来替代主机名

命令:who

作用:显示当前登录的用户信息

语法:who [选项]... [FILE|ARG1 ARG2]

说明:如果没有指定文件则使用 /var/run/utmp、/var/log/wtmp作为记录文件;ARG1 ARG2可以为am i或者mom likes等同于who -m

选项 说明
-a 输出所有信息,等同于 who -b -d -l -p -r -t -T -u
-b 上次系统启动时间
-d 输出撕掉的进程
-H 打印行标题栏
-l 打印登录系统的用户进程
-q 统计登录的所有用户数量
-r 输出当前运行级别
-s 只打印用户名,终端类型时间
-t 打印上一次系统时间修改
-u 列出登录恩典用户

命令:finger

作用:显示系统用户信息

语法:finger [选项] [用户] [用户@主机]

选项 说明
-s 显示用户的注册名、实际用户名、终端名称、写状态、停滞时间、登录时间等信息
-l 显示用户的注册名、实际用户名、宿主目录、登录shell、登录日志、邮件、计划
-p 除了不显示.plan文件和.project文件以外,与-l选项相同

用户组操作

介绍用户组的添加删除等操作

添加用户组

命令:groupadd

作用:添加用户组

语法:groupadd [选项] 组名

选项 说明
-f 如果用户组已经存在则不创建,并取消-g指定的GID
-g 指定GID
-p 指定组密码
-r 为该组创建系统帐号
-o 允许使用不唯一的GID创建用户组
-K 覆写/etc/login.defs文件中创建用户组的默认配置(修改时在该选项后以键值对形式进行修改)

GID即用户组的ID

删除用户组

命令:groupdel

作用:删除用户组

语法:groupdel [选项] 组名

该命令比较简单,出去-h选项外的另一个-R选项都是不常用的

[root@VM_200_13_centos ~]# groupdel tangdd

修改用户组

命令:groupmod

作用:修改用户组

语法:groupmod [选项] 组名

选项 说明
-g 修改当前组的GID为指定的GID
-n 修改当前组名为新的组名
-o 允许使用一个重复的GID
-p 修改组密码

密码修改

命令:passwd

作用:修改用户密码

语法:passwd [选项] <用户名>

说明:不加用户名则修改当前用户

选项 说明
-k 设置只有在密码过期失效后才能修改
-d 删除密码,只有ROOT用户能使用该选项
-l 锁定密码,只有ROOT用户能使用该选项
-u 解除锁定,只有ROOT用户能使用该选项
-e 使帐号的密码过期,只有ROOT用户能使用该选项
-f 强制执行
-x 密码最长使用寿命,只有ROOT用户能使用该选项
-n 密码最短使用寿命,只有ROOT用户能使用该选项
-w 在密码过期之前用户收到警告的天数,只有ROOT用户能使用该选项
-i 指定密码过期后的第几天禁用帐号,只有ROOT用户能使用该选项
-S 报告用户的密码状态,只有ROOT用户能使用该选项
--stdin 以标准输入设定用户的密码,只有ROOT用户能使用该选项

选项都比较简单,最后一个可能比较难懂

[root@VM_200_13_centos ~]# echo cnmlgb | passwd --stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.

附录

RHEL7恢复ROOT密码

RHEL7用户管理的更多相关文章

  1. 第七天 Linux用户管理、RHEL6.5及RHEL7.2 root密码破解、RHEL6.5安装vmware tools

    1.Linux用户管理 Linux系统中,存在三种用户 A.超级用户:root 最高权限,至高无上 在windows中 administrator是可以登录的最高权限,但是,system权限最高,不能 ...

  2. linux 下用户管理

    linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 9 ...

  3. 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装

    Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...

  4. liunx之用户管理

    用户管理 ==============================================================groupadd,groupdeluseradd,usermod, ...

  5. Linux(3)- 用户管理、文件与目录权限、常用命令、Linux软件包管理

    一.用户管理 现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源. 普通用户 ...

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

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

  7. MySQL用户管理

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

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

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

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

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

随机推荐

  1. 十家国内知名的EDM服务提供商

    国内的EDM服务商多若繁星.下面博主为大家介绍十家国内知名的EDM服务提供商. 一.Webpower 威勃庞尔. 官方网站是:www.webpower.asia.作为全球领先的邮件营销解决方案提供商, ...

  2. HIVE: Transform应用实例

    数据文件内容 steven:100;steven:90;steven:99^567^22 ray:90;ray:98^456^30 Tom:81^222^33 期望最终放到数据库的数据格式如下: st ...

  3. codeforces C. Diverse Permutation(构造)

    题意:1...n 的全排列中 p1, p2, p3....pn中,找到至少有k个 |p1-p2| , |p2-p3|, ...|pn-1 - pn| 互不相同的元素! 思路: 保证相邻的两个数的差值的 ...

  4. SharePoint 2013中的默认爬网文件扩展名和分析文件类型

    摘要:了解默认情况下 SharePoint 2013 爬网的文件扩展名及其解析的文件类型,可以借此了解搜索可以爬的文件和支持的功能. 如果“管理文件类型”页上的列表包含文件扩展名,爬网组件将仅爬网文件 ...

  5. RandomUser – 生成随机用户 JSON 数据的 API

    RandomUser 是一个 API,它为您提供了一个或者一批随机生成的用户.这些用户可以在 Web 应用程序原型中用作占位符,将节省您创建自己的占位符信息的时间.您可以使用 AJAX 或其他方法来调 ...

  6. Android OpenGL 基础入门

    Android 自从2.2 版本之后之后开始支持OpenGL,在没有支持OpenGL 的 GPU的情况下,也可以使用(通过软件来模拟).在Android上使用Opengl操作的对象是GLSurface ...

  7. Linq查询简介

    查询是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据库的 SQL 和用于 XML 的 XQuery. 因此, ...

  8. [水煮 ASP.NET Web API2 方法论](3-5)路由约束

    问题 怎么样限制路由中参数的值. 解决方案 ASP.NET WEB API 允许我们通过 IHttpRouteConstraint 接口设置路由约束.集中式路由和直接式路由都可以使用 IHttpRou ...

  9. js获取url参数的两种方法

    js获取参数,在以前我都是用正在去拆分,然后获取,这种方式感觉是最简单的 方式1: function QueryString(item) { var sValue=location.search.ma ...

  10. 查询分页的几种Sql写法

    查询分页的几种Sql写法 摘自:http://www.cnblogs.com/zcttxs/archive/2012/04/01/2429151.html 1.创建测试环境,(插入100万条数据大概耗 ...