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


推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 我创建了一个SSH密钥,当我以admin身份在GitBash中运行ssh-Tgit@gitlab.com时,我得到W ... [详细]
  • 【laravel5.6】yii  Process class relies on proc_open, which is not available on your PHP installation.
    部署服务器的时候,使用composer来安装依赖。遇到了从错误提示信息中可以看到是因为关闭了PHP的proc_get_status()函数,那么如何解决 ... [详细]
  • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
  • 示例代码packagemainimport("net""os"&am ... [详细]
  • ubuntu下nginx启动配置文件
    2019独角兽企业重金招聘Python工程师标准在https:github.comJasonGiedyminnginx-init-ubuntu获得的nginx配置文件其中一些 ... [详细]
  • 原力计划云原生(三十六) | Kubernetes篇之Harbor入门和安装
    原力计划云原生(三十六)|Kubernetes篇之Harbor入门和安装-文章目录Harbor入门和安装一、入门1、简介2、核心组件3、安装二、docker使用1 ... [详细]
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社区 版权所有