ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Linux命令:chsh

Linux命令:chsh

chsh 命令

基本介绍

chsh(Change Shell)是 Linux 系统中用于修改用户登录 shell 的命令。它允许用户或管理员更改用户账户的默认 shell。chsh是系统管理员管理用户登录环境的重要工具。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

语法

chsh [OPTIONS] [USERNAME]

常用选项

基本选项

  • -s, --shell=SHELL:指定新的登录 shell
  • -l, --list-shells:列出系统可用的 shell
  • -h, --help:显示帮助信息
  • -v, --version:显示版本信息

使用示例

1. 更改当前用户的 shell

chsh-s/bin/zsh

2. 更改指定用户的 shell

sudochsh-s/bin/zsh username

3. 列出系统可用的 shell

chsh-l

输出示例:

/bin/sh /bin/bash /bin/rbash /bin/zsh /usr/bin/zsh /usr/bin/fish

4. 查看当前 shell

echo$SHELL

5. 交互式更改 shell

chsh

输出示例:

Changing shell for user. New shell [/bin/bash]: /bin/zsh

6. 在脚本中更改 shell

#!/bin/bash# 检查是否为 rootif["$(id-u)"-ne0];thenecho"This script must be run as root"exit1fi# 批量更改用户 shellforuserinalice bob charlie;doecho"Changing shell for$user"chsh-s/bin/zsh"$user"done

输出格式说明

成功执行

Changing shell for user. Shell changed.

错误输出示例

chsh: user 'invalid_user' does not exist chsh: '/invalid/shell' is not a valid shell

工作原理

chsh 执行流程

# 1. 用户执行 chsh 命令chsh-s/bin/zsh# 2. 检查 shell 是否在 /etc/shells 中# 3. 验证用户权限# 4. 修改 /etc/passwd 文件# 5. 提示 shell 已更改

相关文件

文件说明
/etc/passwd用户信息(包含登录 shell)
/etc/shells系统可用 shell 列表

用户信息格式

getentpasswdusername# 输出格式: username:x:UID:GID:GECOS:/home/username:/bin/bash

实用技巧

设置默认 shell

# 查看当前 shellecho$SHELL# 查看可用 shellchsh-l# 更改 shellchsh-s/bin/zsh# 验证更改echo$SHELL

限制用户登录

# 禁止用户登录(设置 nologin shell)sudochsh-s/usr/sbin/nologin username# 恢复登录权限sudochsh-s/bin/bash username

创建受限 shell 用户

# 创建受限 shell 用户sudouseradd-s/bin/rbash restricted_user

检查 shell 是否有效

#!/bin/bashSHELL_PATH="/bin/zsh"# 检查 shell 是否在 /etc/shells 中ifgrep-q"^$SHELL_PATH$"/etc/shells;thenecho"$SHELL_PATHis a valid shell"elseecho"$SHELL_PATHis not a valid shell"fi

批量更改用户 shell

#!/bin/bash# 从文件读取用户名列表并更改 shellwhilereaduser;doecho"Changing shell for$user"sudochsh-s/bin/bash"$user"done<users.txt

相关命令

  • chfn:更改用户信息
  • passwd:更改用户密码
  • usermod:修改用户信息
  • useradd:添加用户
  • whoami:显示当前用户
  • id:显示用户和组ID信息

注意事项

  1. 权限要求:更改其他用户的 shell 需要 root 权限
  2. 有效 shell:新 shell 必须在/etc/shells文件中列出
  3. 立即生效:更改后下次登录生效
  4. 当前会话:当前会话不受影响
  5. nologin:设置/usr/sbin/nologin可禁止用户登录

总结

chsh是 Linux 系统中用于修改用户登录 shell 的工具。它允许用户或管理员更改用户账户的默认 shell。chsh是系统管理员管理用户登录环境的重要工具。

返回列表