news 2026/6/10 21:53:22

蓝易云 :Linux中的chsh命令及示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
蓝易云 :Linux中的chsh命令及示例

在 Linux 账号体系里,chsh(change shell)用于变更用户的登录 Shell(也就是用户登录后默认启动的命令解释器)。它的核心价值是:把“人—终端—系统”的交互入口标准化,便于团队统一运维基线、提升效率与可控性 🔧。(man7.org)


1)chsh 改的到底是什么?

  • 登录 Shell 记录在账号数据库中(本地常见是/etc/passwd 的最后字段)。

  • chsh 通常会校验目标 shell 是否在/etc/shells 白名单内,避免把账号切到一个“不被认可/不可用”的程序导致登录失败。(mankier.com)

  • 在企业环境如果账号来自LDAP/Kerberos 等“非本地目录”,是否能改取决于系统集成方式(例如是否通过 libuser 支持非本地条目);否则你改了本机也未必生效。(man7.org)


2)参数速查表(建议纳入运维手册)

目标命令/参数关键点(你真正要记的)
列出可用 Shellchsh -l输出来自 /etc/shells
指定登录 Shellchsh -s /path/to/shell变更“登录默认 shell”,通常需重新登录生效
交互式修改chsh不带参数会提示你输入 shell 路径
查看帮助/版本chsh -h/chsh -V排错时确认实现版本与选项

(man7.org)


3)高频示例(每段命令都给你拆开讲明白)

示例 A:先做“白名单核验”,再谈变更 ✅

chsh -l

解释:

  • -l的作用是“列出允许设置的 shell”。这一步相当于上线前的“依赖检查/准入校验”。

  • 如果你要用的 shell 不在列表里,直接-s往往会被拒绝(不同发行版策略略有差异,但企业基线通常会开启校验)。(mankier.com)

你也可以直接看文件(更直观):

cat /etc/shells

解释:

  • 这是系统维护的“可作为登录 shell 的程序清单”。把它当作账号入口的“允许名单”。


示例 B:把自己的登录 Shell 切到 zsh(常见场景)

chsh -s /bin/zsh

解释:

  • -s表示“设置登录 shell”,后面跟绝对路径

  • 执行后可能会让你输入当前用户密码(取决于权限与 PAM 策略)。

  • **注意点:**很多人改完立刻echo $SHELL发现没变,其实是因为环境变量通常在“登录时”初始化,建议退出重登或重新开启会话后再验证。


示例 C:交互式修改(适合不想记参数的人)

chsh

解释:

  • 不带参数会进入交互流程,让你输入新的 shell 路径。

  • 运维上不推荐在自动化脚本里用这种方式(不可控、不可审计),但人工临时处理很顺手。


示例 D:以管理员身份给某个用户改 Shell(生产变更要走流程)

sudo chsh -s /usr/bin/fish alice

解释:

  • sudo:把动作提升到管理员权限,符合“权限边界”要求。

  • alice:目标用户名。

  • 企业建议:把这类动作纳入变更记录,并准备回滚预案(比如先确认原 shell 路径,必要时改回)。


示例 E:变更后如何“验收”(别只看 $SHELL)

getent passwd "$USER" | cut -d: -f7

解释:

  • getent passwd "$USER":从系统账号数据库读取该用户记录(比直接读 /etc/passwd 更通用)。

  • cut -d: -f7:以:分隔,取第 7 段——这通常就是“登录 shell 字段”。

  • 这是验收“配置是否落库”的更可靠方式。

再补一个看当前会话正在跑什么 shell 的方法:

echo $0

解释:

  • $0显示当前进程名(例如-bash),用于确认“你此刻处在哪个 shell 会话里”,和“账号默认登录 shell”是两件事。(Ask Ubuntu)


4)常见坑与务实处置(少走弯路)

  1. 改完登录不上去:多半是把 shell 指到了不存在路径,或不在/etc/shells。处理策略是用可用终端/救援模式改回bash

  2. 提示 PAM 认证失败:这通常是权限或 PAM 规则导致(比如策略要求管理员操作,或限制可用 shell)。按企业规范走:用sudo、核对 /etc/shells、检查 PAM 相关配置。(Baeldung on Kotlin)

  3. 目录服务账号改不动:如果账号来自 LDAP/域控,往往需要在目录侧改“loginShell”等属性,本机 chsh 可能只是“改了个寂寞”。(man7.org)


5)一张“操作工作流图”(便于你放到文档里)

[确认目标Shell] -> [chsh -l / cat /etc/shells 校验白名单] -> [执行 chsh -s ...(必要时sudo)] -> [退出重登] -> [getent 验收落库 + echo $0 验收会话]

如果你告诉我你是 Debian/Ubuntu 还是 CentOS/RHEL 系列,以及你要切换到哪种 shell(bash/zsh/fish),我可以按你的“生产环境口径”把命令路径、验收点、回滚命令整理成一段可直接纳入运维 SOP 的版本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 19:09:26

ssm644计算机考研在线教育平台vip付费vue

目录SSM644计算机考研在线教育平台VIP付费Vue摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM644计算机考研在线教育平台VIP付费Vue摘要 该平台基于SSM(SpringSpringMVCMyBatis)框架与Vue.js技术…

作者头像 李华
网站建设 2026/6/10 4:08:13

配置中心实时生效机制测试:保障动态更新的核心防线

‌一、实时生效机制的技术原理‌配置中心(如Apollo、Nacos、Consul)通过‌长连接推送‌、‌定时轮询‌或‌版本比对‌实现配置的动态拉取与更新。核心流程如下:‌变更触发‌:管理员修改配置项并发布。‌推送通道‌:通过…

作者头像 李华
网站建设 2026/6/10 18:54:33

FIR+IIR数字滤波器(数字滤波器)语音信号处理Matlab(程序+报告)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

FIRIIR数字滤波器(数字滤波器)语音信号处理Matlab(程序报告)(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 1、资料内容:Matlab程序48页说明报告程序运行详细操作说明 2、建立了基于FIR和IIR数字滤波器的语音去噪系统。该系统…

作者头像 李华
网站建设 2026/6/10 18:54:35

PHP如何实现跨平台大文件上传的示例代码?

[2023年1月1日] [星期一] [天气] 作为一名在上海独自打拼的个人开发者,最近接到了一个颇具挑战性的项目需求——大文件上传系统的开发。这可不是个简单的活儿,客户要求系统得支持 20G 左右的大文件传输,不仅要能上传单个文件,还得…

作者头像 李华
网站建设 2026/6/10 18:25:20

qt之pro配置条件编译

例如pro添加以下这句代码: DEFINES PS600表示你工程有定义PS600 测试此时会提示编译报错

作者头像 李华
网站建设 2026/6/10 18:36:59

基于Springboot+Vue的Java的旅游民宿网络营销系统(源码+lw+部署文档+讲解等)

课题介绍本课题旨在设计并实现一套基于SpringBootVue的Java旅游民宿网络营销系统,以解决民宿商家营销渠道单一、客群触达精准度低、推广内容传播弱、营销数据统计滞后等痛点,搭建民宿商家与潜在游客的高效营销对接平台,实现民宿推广数字化、营…

作者头像 李华