热门标签 | 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,否则系统不会识别这些命令,也就意味着这个用户不能登录。


推荐阅读
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • 1.官网下载了mysql-5.7.17-win64.zip包,配置遇到很多麻烦,记录一下;2.解压后放到指定的文件夹,修改mysql-5.7.17的配置文件my-default.i ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了解决MySQL数据库Error Code: 1030错误的方法和原因。通过检查文件权限和磁盘空间,注释掉innodb_force_recovery参数等步骤,可以解决无法插入数据和修改文件的问题。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • MySQL数据库查询注意事项及查询命令详解
    本文介绍了在进行MySQL数据库查询时需要注意的地方,包括启动informix数据库的命令oninit,查询状态的命令onstat,以及相关的网址链接。同时还详细解释了oninit命令的用法和参数,包括初始化磁盘空间和共享内存、保留在线模式等。对于需要进行MySQL数据库查询的读者,本文提供了实用的查询命令和相关注意事项,帮助读者更好地进行数据库查询。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 浅析Mysql数据回滚错误的解决方法_PHP教程:MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin开始一个事务rollback事 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • SQL Server中TempDB管理(version store的逻辑 ... [详细]
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社区 版权所有