news 2026/10/6 18:53:41

蓝易云 :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/10/5 10:19:37

某大型制造企业35kV变电站设计

一、主要任务与目标: 旨在完成某大型制造企业35kV变电站一次系统的设计 具体任务和目标如下: 1.培养学生综合所学理论知识和技能。 2.培养学生调查研究,查阅技术文献、手册以及编写文献的能力。 通过毕业设计,要求学生在指导老师的…

作者头像 李华
网站建设 2026/10/5 7:15:53

基于java的婚纱影楼管理系统的设计与实现

、主要内容: 本文以婚纱影楼管理系统领域为主要研究对象,以java技术为核心驱动力。其侧重探讨婚纱影楼管理方向的发展现状与趋势。首先,通过文献研究与实地调研相结合的方式,系统梳理婚纱影楼行业的业务逻辑,重点分析当…

作者头像 李华
网站建设 2026/10/5 7:15:52

ssm617在线学习平台课程表签到作业考试vuee在线课程管理系统

目录SSM617在线学习平台概述核心功能模块技术优势与创新点应用价值开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM617在线学习平台概述 SSM617在线学习平台是基于SSM(SpringSpring MVCMyBatis)框架与…

作者头像 李华
网站建设 2026/10/5 16:46:10

基于Springboot+Vue+Web的图书借阅管理信息系统(源码+lw+部署文档+讲解等)

课题介绍本课题旨在设计并实现一套基于SpringBootVueWeb的图书借阅管理信息系统,以解决传统图书借阅管理中图书台账混乱、借阅归还流程繁琐、逾期提醒不及时、数据统计低效等痛点,助力图书馆运营数字化、借阅服务便捷化、管理精细化升级。系统采用前后端…

作者头像 李华