linux账号密码体系理解(centos7.9实验)

本文详细介绍了Linux系统中用户密码的管理,包括/etc/passwd和/etc/shadow文件的结构,以及密码加密算法如SHA512的工作原理。通过实例展示了如何使用doveadm、openssl和python的crypt库生成密码密文,并提供了交互式和非交互式修改密码的方法。同时,讨论了密码加密的复杂性和安全性问题。
部署运行你感兴趣的模型镜像

账号密码相关文件

/etc/passwd # 用户账号信息 /etc/shadow # 用户的密码信息,此文件是有隐藏属性的,一定程度上保证了密码的安全 /etc/login.defs #用户密码相关配置,ENCRYPT_METHOD SHA512 此变量标明的密码加密的方式

centos7.9 默认的密码加密hash算法是 SHA512 但 密码并不是通过简单的算法,而是通过复杂的一系列逻辑

所以我们通过sha512 算出来的密码和shadow文件中的不一样

技巧:命令行获取目前密码使用的加密算法

authconfig --test| grep hash

/etc/passwd文件

每个用户一行,每行使用 ":" 分隔,共7个字段

  1. 账号名称
  2. 密码:早期密码直接放这里,但是这个文件所有程序都能读取,密码容易被窃取,所以所有密码数据改放到了 /etc/shadow,这里就是一个x
  3. UID:用户标识
  4. GID:用户组标识
  5. 用户信息说明
  6. 主文件目录
  7. shell,用户登录后会取得一个shell来和系统内核通信,完成用户操作

/etc/shadow 文件

每个用户一行,每行使用 ":" 分隔,共9个字段

  1. 账号名称
  2. 密码:加密之后的密码 注意:在此字段前面加上 ! 或 * 改变了密文长度 ,会让密码暂时失效,因为根据用户输入密码 加密后和此处的密码不相等
  3. 最近改动密码的日期:从1970-01-01 到改动日期的天数
  4. 密码不可被更改的天数:修改后多少天里不能再修改
  5. 密码修改更改的天数:隔多长时间修改修改密码
  6. 密码更改期限前的警告天数:密码过期前多少天开始通知用户
  7. 密码过期后,宽限时间:密码过期后多少天之内还能用
  8. 账号失效日期
  9. 保留字段

 

详解密码字段

以 $ 分隔,分为三段

  1. 加密方式:1:md5加密,密文长度22 5:sha256加密,密文长度43 6:sha512加密,密文长度86 4:手动上传password字符串
  2. 盐值:hash加密时使用的salt
  3. 密文

密码密文生成方式

密码密文并不是简单地使用算法生成的,是有一系列复杂的运算的,由于linux是开源的,所以有一些工具帮我们实现了这个功能,使用passwd 等命令修改密码时,系统会自动生成密码密文

目前:admin用户的密码是:#PK1UxTBDZ

salt:$6$6FeAs/Nsgr3/$

1、dovecot包中的doveadm命令的子命令 doveadm pw

doveadm pw -s SHA512-CRYPT -p '#PK1UxTBDZ' 
{SHA512-CRYPT}$6$KSUkKq1yJ7.EwwCk$IdOteWBK/zOXmLPaYM9VY7mXNw.LBm2Trj3YNpNk7ZFiAAyiMYA/yDJzKsL1UN0kFgEg.yMJiRLe5fMnwlkFd1 
# 盐值变了,没找到这个命令加盐的方式,所以密文和上面不一样,但是用上面的密文替换 /etc/shadow 中的密文,是完全可以使用的,系统是从/etc/shadow 中取盐值的

2、openssl 中的passwd子命令

默认是使用unix标准的加密方式去加密的,但只允许8个字符(应该有参数去改变),这个密文放在 /etc/shadow 也是可以用的

# 用md5 加密 
openssl passwd -1 '#PK1UxTBDZ' $1$ovun1wSt$SwYNeqgzJhkKyteY/nfvq/

3、python 自带的crypt库

import crypt 
crypt.crypt('#PK1UxTBDZ', '$6$6FeAs/Nsgr3/$') 
#结果:可以看到,和/etc/shadow中的密文字段完全一样 '$6$6FeAs/Nsgr3/$8uz9LiP0A6SnEC1KvJKYcdxJi/QaI1b4t2QieaWxS9oatx7SBV1myg7mxH4jLXFr/C.TBTI8xiHYb5Q11tx1w0'

 

修改密码

1、交互式修改

passwd admin # 密码中可以包含特殊字符

2、直接修改

echo "admin:123456asd" | chapasswd      # 密码中有些特殊字符的组合可能造成最后的密文和正确的密文不一样,chpasswd 会将密码进行加密然后存到 /etc/shadow, 如果有特殊字符,chpasswd读取可能有问题,
echo "admin:123456asd" | chapasswd  -m    # chpasswd 加密密码时,使用md5算法
echo "admin:123456asd" | chapasswd  -c sha256   # chpasswd 加密密码时,使用sha256算法
echo "admin:密文" | chapasswd -e        # 此时密码已经是加密的,只需要chpasswd 将密文存到  /etc/shadow,密文中的特殊字符,chpasswd读取可能有问题
echo "123456asd" | passwd --stdin admin   # 特殊字符可能会导致修改的密码和你输入的密码不一致 

 

 

 

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们将在CentOS 7.9上安装Nacos。Nacos是一个动态服务发现、配置和服务管理平台。安装步骤包括: 1. 准备环境:确保Java环境已安装(Nacos需要Java 8或更高版本)。 2. 下载Nacos服务器压缩包。 3. 解压并配置。 4. 初始化数据库(可选,如果使用MySQL作为持久化存储)。 5. 启动Nacos服务器。 根据引用[1]中的信息,我们将Nacos安装在`/usr/local/nacos`目录下。 步骤: 1. 安装Java环境(如果尚未安装): ```bash sudo yum install java-1.8.0-openjdk-devel ``` 2. 下载Nacos服务器压缩包(以2.2.0版本为例,注意检查最新版本): ```bash cd /usr/local sudo mkdir nacos cd nacos sudo wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz ``` 3. 解压: ```bash sudo tar -zxvf nacos-server-2.2.0.tar.gz ``` 4. 配置数据库(可选,但生产环境建议配置): 创建数据库`nacos_config`(引用[1]中提到了创建数据库,并运行mysql-schema.sql文件): - 登录MySQL: ```bash mysql -u root -p ``` - 创建数据库和用户: ```sql CREATE DATABASE nacos_config; CREATE USER &#39;nacos&#39;@&#39;%&#39; IDENTIFIED BY &#39;nacos_password&#39;; GRANT ALL PRIVILEGES ON nacos_config.* TO &#39;nacos&#39;@&#39;%&#39;; FLUSH PRIVILEGES; ``` - 导入初始SQL: 解压后的Nacos目录下的`conf/mysql-schema.sql`文件,导入到数据库: ```bash mysql -u root -p nacos_config < /usr/local/nacos/conf/mysql-schema.sql ``` 5. 修改配置文件以使用MySQL: 编辑`conf/application.properties`: ```bash cd nacos vim conf/application.properties ``` 取消注释并修改以下部分: ``` spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos db.password=nacos_password ``` 6. 启动Nacos: - 单机模式(非集群): ```bash sh bin/startup.sh -m standalone ``` 或者,使用以下命令(如果使用systemd管理): 可以创建一个systemd服务文件,例如`/etc/systemd/system/nacos.service`,内容如下: ``` [Unit] Description=Nacos Service After=network.target [Service] Type=forking ExecStart=/usr/local/nacos/bin/startup.sh -m standalone ExecStop=/usr/local/nacos/bin/shutdown.sh PrivateTmp=true [Install] WantedBy=multi-user.target ``` 然后启动: ```bash sudo systemctl daemon-reload sudo systemctl start nacos sudo systemctl enable nacos ``` 7. 验证: 访问`http://<your_server_ip>:8848/nacos`,默认用户名密码为`nacos/nacos`。 注意:防火墙需要开放8848端口: ```bash sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent sudo firewall-cmd --reload ``` 以上步骤完成了在CentOS 7.9上安装Nacos。 根据引用[2]和[3],我们注意到在安装过程中可能需要一些额外的配置(如命令行补全等),但那些不是安装Nacos所必需的,所以这里没有采用。 引用[1]中提到了创建数据库并导入SQL文件,我们已经在步骤4中完成。 引用[3]中提到了主从配置,但Nacos本身支持集群模式,如果后续需要配置集群,可以参考官方文档。这里我们只安装单机模式。 因此,完整的安装过程如上所述。 生成相关问题: 1. 如何配置Nacos集群? 2. Nacos如何实现配置管理? 3. 如何将Nacos作为服务注册中心使用?</think>### 在 CentOS 7.9 上安装 Nacos 的完整指南 #### 1. **环境准备** - **安装 Java** Nacos 依赖 Java 8+: ```bash sudo yum install -y java-1.8.0-openjdk-devel java -version # 验证安装 ``` - **安装必要工具** 增强命令行功能(参考引用[2]): ```bash sudo yum install -y bash-completion bash-completion-extras vim ``` #### 2. **安装 Nacos** - **创建目录并下载**(参考引用[1]): ```bash sudo mkdir -p /usr/local/nacos cd /usr/local/nacos sudo wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz sudo tar -zxvf nacos-server-2.2.0.tar.gz --strip-components 1 ``` #### 3. **配置 MySQL 持久化**(可选但推荐) - **创建数据库**(参考引用[1]): ```sql CREATE DATABASE nacos_config; USE nacos_config; SOURCE /usr/local/nacos/conf/mysql-schema.sql; # 导入初始化脚本 ``` - **修改配置文件**: 编辑 `conf/application.properties`: ```properties spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8 db.user=your_db_user db.password=your_db_password ``` #### 4. **启动 Nacos** - **单机模式启动**: ```bash sh bin/startup.sh -m standalone # 单机模式 ``` - **验证运行**: ```bash tail -f logs/start.out # 查看日志 curl http://localhost:8848/nacos # 验证服务 ``` #### 5. **配置防火墙** ```bash sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent sudo firewall-cmd --reload ``` #### 6. **访问控制台** - 浏览器访问:`http://服务器IP:8848/nacos` - 默认账号:`nacos`,密码:`nacos` --- ### 关键注意事项 1. **数据库备份**:定期备份 `nacos_config` 数据库[^1]。 2. **集群部署**:生产环境建议集群部署(至少3节点)[^1]。 3. **配置主从**:若需高可用,参考引用[3]配置数据库主从复制。 --- ### 相关问题 1. **如何配置 Nacos 集群模式?** 需修改 `cluster.conf` 并指定节点IP列表[^1]。 2. **如何将 Nacos 注册为系统服务?** 可通过 `systemd` 创建服务文件实现开机自启。 3. **Nacos 如何实现配置的动态更新?** 通过长轮询机制监听配置变更,支持秒级推送[^1]。 4. **如何迁移旧配置到 Nacos?** 可使用 `config-export` 工具导出,再通过控制台导入。 [^1]: [Nacos 官方 GitHub 文档](https://github.com/alibaba/nacos) [^2]: [CentOS 7 基础环境配置指南] [^3]: [MySQL 主从复制配置方法]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值