热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

user1.1用户信息文件

用户信息文件大多成熟的系统都会有一套符合自己设计逻辑的用户管理系统。就比如Mysq,它是mysql数据库下的user表。其中每行记录表示一个用户以及该用户所拥有的权
用户信息文件

大多成熟的系统都会有一套符合自己设计逻辑的用户管理系统。就比如 Mysq ,它是 mysql 数据库下的 user 表。其中每行记录表示一个用户以及该用户所拥有的权限。

在 linux 中,当然就在配置文件目录中了

他也是用户名、密码以及权限,不同的只是权限表达方式的不同。

[root@VM-0-7-centos etc]# cat 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
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
abrt:x:173:173::/etc/abrt:/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:997:995::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
syslog:x:996:994::/home/syslog:/bin/false
user:x:1000:1000::/home/user:/bin/bash
carell:x:1001:1001::/home/carell:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false

每行代表一个用户,绝大多数是系统或服务正常运行所必需的用户,这种用户称为系统用户或伪用户。
系统用户是不能登录系统的,但是这些用户同样也不能被删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。

单独拿出 root 用户来看

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

看配置文件最重要的一点就是知道 : 是分隔符


  1. 用户名称
    需要注意,用户名称只是为了方便管理员记忆,Linux系统是通过用户ID(UID)来区分不同用户、分配用户权限的。而用户名称和UID的对应正是通过/etc/passwd这个文件来定义的。

  2. 密码标志
    “x” 代表的是密码标志,而不是真正的密码,真正的密码是保存在 /etc/shadow 文件中的。

在早期的UNIX中,这里保存的就是真正的加密密码串,但是这个文件的权限是644,查询命令如下:

[root@localhost ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1648 12月 29 00:17 /etc/passwd

所有用户都可以读取 /etc/passwd文件,这样非常容易导致密码的泄露。虽然密码是加密的,但是采用暴力破解的方式也是能够进行破解的。所以现在的Linux系统把真正的加密密码串放置在影子文件 /etc/shadow中,而影子文件的权限是000,查询命令如下:

[root@VM-0-7-centos etc]# ll /etc/shadow
---------- 1 root root 799 Aug 4 2020 /etc/shadow

这个文件是没有任何权限的,但因为是root用户,所以读取权限不受限制。当然,用强制修改的方法也是可以手工修改这个文件的内容的。只有root用户可以浏览和操作这个文件。

在 /etc/passwd中只有一个“x”代表用户是拥有密码的,我们把这个字段称作密码标志,具体的密码要去 /etc/shadow 文件中查询。但是这个密码标志“x”也是不能被删除的,如果删除了密码标志“x”,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登录(当然只能在本机上使用无密码登录,远程是不可以的)。


  1. UID

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

第三个字段是用户ID(UID),系统是通过UID来识别不同的用户和分配用户权限的。

  • 0:超级用户UID。如果用户UID为0,则代表这个账号是管理员账号。在Linux中如何把普通用户升级成管理员呢?只需把其他用户的UID修改为 0 就可以了,这一点和Windows是不同的。不过不建议建立多个管理员账号。
  • 1~499:系统用户(伪用户)UID。这些UID是系统保留给系统用户的UID,也就是说UID是1~499范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中,1~99是系统保留的账号,系统自动创建;100~499是预留给用户创建系统账号的。
  • 500~65535:普通用户UID。建立的普通用户UID从500开始,最大到65535。

  1. GID

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

第四个字段就是用户的 组ID(GID),也就是这个用户的初始组的标志号。

用户组分为初始组和附加组:

  • 初始组,指用户一登录就立刻拥有这个用户组的相关权限。每个用户的初始组只能有一个,一般就是将和这个用户的用户名相同的组名作为这个用户的初始组。举例来说,我们手工添加用户 carell,在建立用户 carell 的同时就会建立 carell 组作为 carell 用户的初始组。
  • 附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组要把用户再加入其他的用户组外,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。

例如,刚刚的 carell 用户除属于初始组 carell 外,我又把它加入了users组,那么 carell 用户同时属于carell 组、users组,其中 carell 是初始组,users是附加组。当然,初始组和附加组的身份是可以修改的,但是我们在工作中一般不修改初始组,只修改附加组,因为修改了初始组有时会让管理员逻辑混乱。


  1. 用户说明

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

第五个字段是这个用户的简单说明,没有什么特殊作用,可以不写。

  1. 家目录

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

第六个字段是这个用户的家目录,也就是用户登录后有操作权限的访问目录,我们把这个目录称为用户的家目录。超级用户的家目录是/root目录,普通用户在/home/目录下建立和用户名相同的目录作为家目录,如 carell 用户的家目录就是 /home/carell/ 目录。

  1. 登录之后的Shell

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

Shell 就是 Linux 的命令解释器。管理员输入的密码都是 ASCII 码,也就是类似 abcd 的英文。但是系统可以识别的编码是类似 0101 的机器语言。Shell 的作用就是把 ASCII 编码的命令翻译成系统可以识别的机器语言,同时把系统的执行结果翻译为用户可以识别的 ASCII 编码。Linux 的标准 Shell 就是 /bin/bash。

在 /etc/passwd 文件中,可以把这个字段理解为用户登录之后所拥有的权限。如果写入的是Linux的标准 Shell, /bin/bash 就代表这个用户拥有权限范围内的所有权限。例如:

[root@localhost ~]# vi /etc/passwd
carell:x:502:502::/home/carell:/bin/bash

手工添加了 carell 用户,它的登录 Shell 是 /bin/bash,那么这个用户就可以使用普通用户的所有权限。如果把 carell 用户的 Shell 修改为 /sbin/nologin,例如:

[root@localhost ~]# vi /etc/passwd
carell:x:502:502::/home/carell:/sbin/nologin

那么这个用户就不能登录了,因为 /sbin/nologin 就是禁止登录的 Shell。

如果在这里放入的是一个系统命令,如 /usr/bin/passwd,例如:

[root@localhost ~]# vi /etc/passwd
carell:x:502:502::/home/carell:/usr/bin/passwd

那么这个用户可以登录,但是登录之后就只能修改自己的密码了。但是在这里不能随便写入和登录没有关系的命令,如 ls,否则系统不会识别这些命令,也就意味着这个用户不能登录。


推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Linux环境下PostgreSQL的安装、配置及日常管理
    本文详细介绍了在Linux环境下安装、配置PostgreSQL数据库的过程,包括环境准备、安装步骤、配置数据库访问以及日常服务管理等方面的内容。适合初学者和有一定经验的数据库管理员参考。 ... [详细]
  • Linux中实用的文件传输命令:rz与sz
    在生物信息学研究中,频繁地在本地与远程Linux服务器间传输文件是一项常见需求。无论是上传待分析的数据集还是下载处理后的结果,高效便捷的文件传输方法至关重要。 ... [详细]
  • 本文介绍了如何在三台CentOS 7.5虚拟机上通过Docker部署RabbitMQ集群,包括环境准备、容器创建、集群配置及故障处理等内容。 ... [详细]
  • Git SSH配置及远程仓库操作指南
    本文介绍了如何配置Git环境,包括设置用户信息、生成和添加SSH密钥,并详细说明了如何通过SSH连接到远程仓库进行版本控制操作。 ... [详细]
  • 本文详细介绍如何在树莓派上安装并配置Samba服务,以实现与Windows系统的网络共享兼容性。适合初学者参考。 ... [详细]
  • HTTP(超文本传输协议)是互联网上用于客户端和服务器之间交换数据的主要协议。本文详细介绍了HTTP的工作原理,包括其请求-响应机制、不同版本的发展历程以及HTTP数据包的具体结构。 ... [详细]
  • 本文详细探讨了在Python开发中遇到的ImportError: 无法找到名为Crypto.Cipher的模块的问题,并提供了多种解决方案,包括环境配置、库安装和代码调整等方法。 ... [详细]
  • Python安全实践:Web安全与SQL注入防御
    本文旨在介绍Web安全的基础知识,特别是如何使用Python和相关工具来识别和防止SQL注入攻击。通过实际案例分析,帮助读者理解SQL注入的危害,并掌握有效的防御策略。 ... [详细]
  • 四月个人任务:Linux基础操作与网络管理
    本文介绍了两项主要任务:编写一个脚本来检测192.168.1.0/24子网中当前在线的IP地址,以及如何在Linux系统中挂载Windows网络共享目录。通过具体步骤和代码示例,帮助读者理解和掌握相关技能。 ... [详细]
  • FTP作为一种传统的文件传输协议,广泛用于不同设备间的文件交换。然而,随着网络安全需求的提升及传输效率的要求,选择合适的FTP客户端变得尤为重要。本文将介绍如何利用WinSCP这款强大且安全的工具,实现两台电脑之间的文件高效传输。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • Hexo Next主题部署GitHub Pages时样式不生效的问题及解决方案
    本文探讨了在使用Hexo的Next主题部署个人网站到GitHub Pages过程中遇到的界面样式失效问题,并提供了一种有效的解决方法。主要解决了本地环境与线上环境之间的资源加载差异。 ... [详细]
author-avatar
真实的独孤一剑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有