一、用户、组

1. 用户

当我们使用 Linux 时,需要以一个用户的身份登录,一个进程也需要以一个用户的身份运行。用户限制使用者或进程可以使用或不可以使用哪些资源。

2. 组

组用来方便地管理用户。

  • 每个用户拥有唯一 uid,操作系统实际使用的是用户 ID,而不是用户名
  • 每个用户属于一个主组,属于一个或多个附属组
  • 每个组拥有一个 gid
  • 每个进程以一个用户身份运行,并受该用户可访问的资源限制
  • 每个可登陆用户拥有一个特定的 Shell

二、用户

用户 ID 为 32 位,从 0 开始, 但是为了和旧系统兼容,用户 ID 限制在 60000 以下。Linux 用户分为以下三种:

  • root 用户(ID 为 0 的用户为 root 用户)
  • 系统用户(ID 范围 1 ~ 499),专门为使用某些程序或服务的用户,没有 Shell
  • 普通用户(ID 为 500 以上)

系统中每个文件都有一个所属用户及所属组。

使用 id [username] 命令可以显示当前用户的信息。使用命令 passwd [username] 可以修改当前用户密码。指定用户名可以显示特定用户的信息和密码。

下图中,普通用户 mingc 的 uid 为500,gid 为 500。

每个用户在创建以后,默认会创建一个与该用户同名的主组(gid),并且该用户属于该组。

后面的 groups 是附属组。

三、相关文件

这里有关用户的(配置)文件有 3 个:

  • /etc/passwd - 该用户文件用于保存用户信息
  • /etc/shadow - 该密码文件保存用户密码(加密的)
  • /etc/group    - 组文件保存了组信息

1. 看看 /etc/passwd 文件用户信息:

其中,每一行都是一个用户信息,多个字段之间用冒号 ":" 分隔,格式为:

用户名:密码:用户ID:组ID:描述信息:用户目录:登陆用的Shell

“密码”显示 "x" 表示用户密码保存在 /etc/shadow 密码文件里。

上图中:

mingc 用户(就是我了),uid 为 500(在 500 以上)表示普通用户,我的用户目录是 /home/mingc,使用的 Shell 是 /bin/bash,就是大家都用的 Bash 了。

apache 用户,uid 为48(在 1 ~ 499 之间)表示系统用户,他的用户目录是 /var/www 目录,使用的 Shell 是 /sbin/nologin,即没有 Shell。这个系统用户显然是用来专门使用 Apache 服务的。

uid 为 0 的自然是 root 用户了。

2. 再看下 /etc/shadow 密码文件信息:

其中,每一行都是一个用户密码信息,多个字段之间用冒号 ":" 分隔,格式为:

用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

“加密口令”显示星号 "*" 表示账号被锁定,两个感叹号 "!!" 表示密码已过期,"$6$" 开头表示加密类型是 SHA-512 加密。

详细请参考这里:Linux 下 /etc/shadow 文件

3.  /etc/group 组信息:

其中,每一行都是一个组信息,多个字段之间用冒号 ":" 分隔,格式为:

组名:组密码:组ID:组用户

“密码”显示 "x" 表示密码保存在 /etc/gshadow 组密码文件里。

“组密码”现在几乎不用了,以前旧的系统上没有附属组的概念,一个用户只能属于一个组,但很多时候需要用户属于多个组,只要用户知道要换的那个组的“组密码”,就可以切换所属组。但现在有了附属组的概念,所以这个“组密码”几乎不用了。留着是为了向后兼容。

四、查看登录用户

  • 命令 whoami 显示当前用户
  • 命令 who 显示有哪些用户已经在登录系统
  • 命令 w 显示有哪些用户已经在登录并且在干什么

Linux 中有个约定俗成的习惯,命令越长,显示出来的信息越少,命令越短,显示出来的信息越多。这三个哲学命令就是这样的:

五、创建新用户

命令 useradd 用来创建一个新用户:

useradd username

这个命令会执行以下操作:

  1. 在 /etc/passwd 用户文件中添加用户信息
  2. 如果使用 passwd [username] 命令创建密码,则将该密码保存在 /etc/shadow 密码文件中
  3. 为用户建立一个新的用户目录:/home/username
  4. 将 /etc/skel 中的文件拷贝到用户目录中,比如一些必要的说明文档
  5. 建立一个与用户名同名的组,该用户默认属于该组

常用参数:

-d    指定用户目录
-s 指定登录Shell
-u 指定用户ID(uid)
-g 指定主组ID(gid)
-G 指定附属组,组名或组id(最多 31 个,用逗号 "," 分割)

也可以通过直接修改用户信息文件 /etc/passwd 的方式实现,但不建议

六、修改用户信息

命令 usermod 用来修改用户信息:

usermod 参数 username

常用参数:

-l     新用户名
-u 新用户ID
-d 新的用户目录
-g 所属主组
-G 所属附属组
-L 锁定用户使其不能登录
-U 解除锁定

  

七、删除用户

命令 userdel 用来删除指定用户:

userdel username      (会保留 /home 下的用户目录)
userdel -r username (同时删除用户目录)

  

八、组

几乎所有操作系统都有组的概念,通过组,我们可以更加方便地归类和管理用户。一般来讲,我们使用部门、职能和地理区域的分类方式来创建使用组。

  • 每个组都有一个组ID(gid)
  • 组信息保存在组文件 /etc/group 中
  • 每个用户都拥有一个主组,同时还可以拥有最多 31 个附属组

九、创建、修改、删除组

命令 groupadd 用来创建新组:

groupadd groupname

命令 groupmod 用来修改组信息:

groupmod -n newname oldname     修改组名
groupmod -g newid groupname 修改组ID(gid)

命令 groupdel 用来删除组:

groupdel groupname

相关链接:Linux之用户、权限的管理

Linux 入门记录:十一、Linux 用户基础的更多相关文章

  1. Linux 入门记录:二十、Linux 包管理工具 YUM

    一.YUM(Yellowdog Updater, Modified) 1. YUM 简介 RPM 软件包形式管理软件虽然方便,但是需要手动解决软件包的依赖问题.很多时候安装一个软件首先需要安装 1 个 ...

  2. Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

    一.系统启动流程 一般来说,Linux 系统的启动流程是这样的: 1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIO ...

  3. 零基础Linux入门之《Linux就该这么学》

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

  4. Linux 入门记录:六、Linux 硬件相关概念(硬盘、磁盘、磁道、柱面、磁头、扇区、分区、MBR、GPT)

    一.硬盘 硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据.硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统.硬盘的主要行为就是数据的存放和取出 ...

  5. Linux 入门记录:十六、Linux 多命令协作:管道及重定向

    一.多命令协作 在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或多个很简单的功能.通过将不同功能的命令组合一起使用,可以实现某个复杂功能的. Linux ...

  6. lilybbs-faq - linux入门以及百合 Linux 版精华区导读

    QUESTIONS 问题与解答 不需要任何命令的简单介绍 历史 (APUE 提到了1990年之前的unix历史,还有各种标准 ANSI ISO IEEE posix xpg3.... 但是linux ...

  7. Linux 入门记录:十四、网络基础

    一.IP地址 IP 地址是因特网上的每个网络节点在全球范围内的唯一标识符,一个 IP 地址唯一标识一个主机(严格来说是标识一个网卡接口 network interface card). 现在应用最为广 ...

  8. linux入门教程(七) linux系统用户以及用户组管理

    关于这部分内容,笔者在日常的linux系统管理工作中用到的并不多,但这并不代表该内容不重要.毕竟linux系统是一个多用户的系统,每个账号都干什么用,你必须了如指掌.因为这涉及到一个安全的问题. [认 ...

  9. Linux 入门记录:一、命令行 Bash 的基本操作

    为了以后长期的线上测试和服务器的性能考量,要用 Linux 服务器了.昨晚装了个 CentOS 6.9,今天开始学学 Linux 基础,扫扫盲.ok,小本本记 ing... 一.Shell简介 She ...

随机推荐

  1. VS2012完全卸载

    1.先交VS2012的ISO通过Ultraiso载入2.DOS命中输入 I:\vs_ultimate.exe /uninstall /force 或 I:vs_ultimate.exe /uninst ...

  2. 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询

    题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...

  3. 转:learning to rank学习

    learning to rank学习 转: http://blog.csdn.net/xuqianghit/article/details/8947819 1. 什么是learning to rank ...

  4. 【以前的空间】BZOJ2733[HNOI2012]永无乡

    启发式合并?! 似乎当时写并查集的时候就有看到过类似于把小并查集并到大并查集上的说法,原来这就是启发式…… 具体做法就是把小树里面的一个个拿出来,然后加到大树里面去(裸的不敢相信) const max ...

  5. BZOJ5285 & 洛谷4424 & UOJ384:[HNOI/AHOI2018]寻宝游戏——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5285 https://www.luogu.org/problemnew/show/P4424 ht ...

  6. Mysql数据库的主从复制

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修 ...

  7. 清北学堂模拟赛d6t6 棋盘迷宫

    3.棋盘迷宫(boardgame.pas/c/cpp)(boardgame.in/out)时间限制:5s/空间限制:256M[题目描述]小 A 和小 Z 是非常要好的朋友, 而且他们都对迷宫游戏非常有 ...

  8. Hive分组后取组内排名方法row_number

    今天遇到这样一个需求场景,要取出 每一种分类(a,b组合分类) 符合条件的日期(字段c) 距离现在最近的10个日期 的数据 首先想到的是用sql筛选出符合某种条件的所有数据,这样的事情很简单 然后用脚 ...

  9. [ASP.NET]从ASP.NET Postback机制,到POST/GET方法

    写这篇博客的起源来自于自己最近在学习ASP.NET时对于 PostBack机制的困惑.因为自己在解决困惑地同时,会不断产生新的疑问,因此博客最后深入到了http 包的格式和Internet所使用的TC ...

  10. Nginx简介及使用Nginx实现负载均衡的原理【通俗易懂,言简意赅】【转】

    Nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 直接作为http server(代替apache,对PHP需要FastCGI处理器支持): 另外一个功能就是作为反向代理服 ...