参考源

https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0

版本

本文章基于 CentOS 7.6


概述

完成用户管理的每一种方法实际上都是对有关的系统文件进行修改。

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括 /etc/passwd/etc/shadow/etc/group 等。


/etc/passwd 文件是用户管理工作涉及的最重要的一个文件。

Linux 系统中的每个用户都在 /etc/passwd 文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

文件内容

/etc/passwd 对所有用户都是可读的。它的内容类似下面的例子:

[root@sail ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
admin:x:1000:1000::/home/admin:/bin/bash

一行记录对应着一个用户。

每行记录又被 : 分隔为 7 个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

用户名

用户账号的字符串。

通常长度不超过 8 个字符,并且由大小写字母和 / 或数字组成。

登录名中不能有 :,因为冒号在这里是分隔符。

为了兼容起见,登录名中最好不要包含 .,并且不使用 -+ 打头。

口令

用户的登录密码。

一些系统中,存放着加密后的用户口令字。

虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于 /etc/passwd 文件对所有用户都可读,所以这仍是一个安全隐患。

因此,现在许多 Linux 系统(如 SVR4 )都使用了 shadow 技术,把真正的加密后的用户口令字存放到 /etc/shadow 文件中。

/etc/passwd 文件的口令字段中只存放一个特殊的字符,例如 x 或者 ***** 。

用户标识

一个整数,系统内部用它来标识用户。

一般情况下它与用户名是一一对应的。

如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录 Shell 等。


通常用户标识号的取值范围是 0~65535

  • 0 是超级用户 root 的标识号。

  • 1~99 由系统保留,作为管理账号。

  • 普通用户的标识号从 100 开始。在Linux系统中,这个界限是500。

组标识号

记录用户所属的用户组。

它对应着 /etc/group 文件中的一条记录。

注释性描述

记录用户的一些个人情况。


例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。

在不同的 Linux 系统中,这个字段的格式并没有统一。

在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用作 finger 命令的输出。

主目录

用户的起始工作目录。

它是用户在登录到系统之后所处的目录。

在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。

各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

登录Shell

用户登录后,要启动一个进程,负责将用户的操作传给内核。

这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即 Shell


Shell 是用户与 Linux 系统之间的接口。

Linux 的 Shell 有许多种,每种都有不同的特点。

常用的有 sh(Bourne Shell)csh(C Shell)ksh(Korn Shell)tcsh(TENEX/TOPS-20 type C Shell)bash(Bourne Again Shell) 等。


系统管理员可以根据系统情况和用户习惯为用户指定某个 Shell

如果不指定 Shell,那么系统使用 sh 为默认的登录 Shell,即这个字段的值为 /bin/sh


用户的登录 Shell 也可以指定为某个特定的程序(此程序不是一个命令解释器)。

利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。

有些 Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

伪用户

系统中有一类用户称为伪用户(pseudo users)

这些用户在 /etc/passwd 文件中也占有一条记录,但是不能登录,因为它们的登录 Shell 为空。

它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。


常见的伪用户如下所示:

  • bin:拥有可执行的用户命令文件。

  • sys:拥有系统文件。

  • adm:拥有帐户文件。

  • uucp:UUCP 使用。

  • lp:lp 或 lpd 子系统使用。

  • nobody:NFS 使用。

除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit、cron、mail、usenet 等,它们也都各自为相关的进程和文件所需要。

Linux 04 用户文件的更多相关文章

  1. 学习linux之用户-文件-权限操作

    添加用户组 添加 gropuadd 用户组名 修改 groupmod 用户组名 删除 groupdel 用户组名 添加用户 添加 useradd 用户名 设密码 passwd 密码 删除 userde ...

  2. Linux跨用户copy文件

    foo用户home目录下有一文件file.txt,要将其copy至bar用户的home目录.Linux对用户home目录有严格的权限限制,非owner用户或者同group用户无权限读写,除非是root ...

  3. 树莓派Ubuntu 16.04 MATA系统 修改用户文件夹名后,提示configure it with blueman-service

    自从修改了树莓派的Ubuntu 16.04 MATA 系统的 /home/ 下的用户文件夹名后,使用vncserver远程操作,看到桌面每次都提示 Configured directory for i ...

  4. Linux编程 14 文件权限(用户列表passwd,用户控制shadow,useradd模板与useradd命令参数介绍)

    一. 概述 linux安全系统的核心是用户账户. 创建用户时会分配用户ID(UID). UID是唯一的,但在登录系统时不是用UID,而是用登录名.在讲文件权限之之前,先了解下linux是怎样处理用户账 ...

  5. [加入用户]解决useradd 用户后没有加入用户Home文件夹的情况,Linux改变文件或文件夹的訪问权限命令,linux改动用户password,usermod的ysuum安装包。飞

    usermod的yum安装包: shadow-utils 将nobody用户加入到nogroup 组: usermod -g nogroup nobody cat /etc/passwd|grep n ...

  6. Linux系统用户/用户组/文件权限相关

    目录一.Linux系统用户/用户组权限相关二.Linux系统文件权限相关 一.Linux系统用户/用户组权限相关 .命令:usermod 用法:usermod [-agGus] user args ‘ ...

  7. 2.Linux的用户、用户组、权限、文件系统管理及其网络配置

    2.1 Linux的用户及用户组 2.1.1 Linux的用户管理 用户账号管理包含以下三个方面: 用户账号的添加.删除.与修改 用户口令(密码)的管理 用户组的添加.删除管理 Linux系统中用户信 ...

  8. Linux root用户密码重置,远程登陆,文件基本属性

    Linux root用户密码重置,远程登陆,文件基本属性 忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码 ...

  9. Linux 给用户 赋某个文件夹操作的权限

    https://my.oschina.net/cqyj/blog/1796047 在root用户登录的情况,赋予opt目录给liuhai这个用户权限 示例代码: # 将目录/opt 及其下面的所有文件 ...

随机推荐

  1. ML第一周学习小结

    最近的学习内容为<Python机器学习基础教程>这本书 从第一章开始,慢慢来,比较快. 一下为我的本周机器学习小结,以及下周的Flag. 本周收获 总结一下本周学习内容: 1.了解到机器学 ...

  2. application.properties文件中暗藏玄机

    上次分享了如何一步一步搭建一个springboot的项目,详细参见<5分钟快速搭建一个springboot的项目>,最终的结果是在"8080"端口搭建起了服务,并成功访 ...

  3. 差分优化建边(Tax)

    [Luogu P6822PA2012]Tax] (http://www.luogu.com.cn/problem/P6822") All right. Let's go! 题目描述 给出一个 ...

  4. c++ 乘法逆元

    主要参考:OI-WIKI 为什么要逆元 当一个题目让你求方案数时常要取余,虽然 \((a+b)\% p=(a\% p+b\% p)\%p\) \((a-b)\% p=(a\% p-b\% p)\%p\ ...

  5. Mybatis架构原理(二)-二级缓存源码剖析

    Mybatis架构原理(二)-二级缓存源码剖析 二级缓存构建在一级缓存之上,在收到查询请求时,Mybatis首先会查询二级缓存,若二级缓存没有命中,再去查询一级缓存,一级缓存没有,在查询数据库; 二级 ...

  6. 一文详解JackSon配置信息

    背景 1.1 问题 Spring Boot 在处理对象的序列化和反序列化时,默认使用框架自带的JackSon配置.使用框架默认的,通常会面临如下问题: Date返回日期格式(建议不使用Date,但老项 ...

  7. js 表面学习 - 认识事件

    事件 描述 onchange HTML 元素已被改变 onclick 用户点击了 HTML 元素 onmouseover 用户把鼠标移动到 HTML 元素上 onmouseout 用户把鼠标移开 HT ...

  8. SQL语句的整理

    mysql语句的整理 1.SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQ ...

  9. NC24017 [USACO 2016 Jan S]Angry Cows

    NC24017 [USACO 2016 Jan S]Angry Cows 题目 题目描述 Bessie the cow has designed what she thinks will be the ...

  10. NC13328 倒水

    NC13328 倒水 题目 题目描述 有一个大水缸,里面水的温度为 \(T\) 单位,体积为 \(C\) 升.另有 \(n\) 杯水(假设每个杯子的容量是无限的),每杯水的温度为 \(t[i]\) 单 ...