linux初级_用户管理1

TJCcc 发布于 2025-10-31 41 次阅读


命令以及文件概览

  • useradd - 添加用户
  • passwd - 设置密码
  • userdel - 删除用户
  • usermod - 修改用户属性
  • chmod - 更改文件权限
  • chown - 更改文件拥有者
  • .bashrc - 用户环境配置文件
  • .bash_profile - 用户登录配置文件

一、用户分类

用户类型类型作用
root超级管理员拥有最高权限,类似皇帝
oldboy普通用户拥有个人用户的最高权限,类似平民;用于登录系统(优化系统,更加安全)
虚拟用户傀儡用户仅用于启动进程,运行程序而存在,不能登录系统

UID号码

作用:类似身份证,用于区分用户类型

  • 管理员:UID 为 0
  • 普通用户:UID 从 1000 开始
  • 虚拟用户:UID 范围在 1 到 999 之间

二、查看系统所有用户以及组

默认情况下,/etc/group/etc/passwd 文件对所有用户可读。

1、与组相关的 group 文件

位置/etc/group

2、与用户相关的 passwd 文件

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

各字段含义:

  • 第一列:用户名称
  • 第二列:密码(通常为 x,表示密码存储在 /etc/shadow 文件中)
  • 第三列:UID(用户标识符)
  • 第四列:GID(组标识符)
  • 第五列:用户描述信息
  • 第六列:用户家目录
  • root 的家目录:/root
  • 普通用户 oldboy 的家目录:/home/oldboy
  • 第七列:命令解释器
  • /bin/bash:普通用户和 root 使用,允许登录操作系统
  • /sbin/nologin:虚拟用户使用,不允许登录操作系统

三、/etc/skel 家模板

作用:作为所有用户的家目录模板。

创建用户时,系统会将 /etc/skel/ 目录下的隐藏环境变量文件复制到用户的家目录中,并自动修改文件的主属组。

面试题

问题:出现了 bash 版本号该怎么解决?

解答:出现 bash 版本号通常是由于误删了家目录下的隐藏文件。解决方法是从 /etc/skel/ 目录复制隐藏文件到用户家目录,然后重新连接系统。

四、用户相关命令

添加用户

语法格式

useradd [参数选项] 用户名称

参数选项

  • -s:指定解释器 (/bin/bash / /sbin/nologin)
  • -u:指定 UID,否则默认自动递增
  • -g:指定 GID(组号)
  • -M:不创建家目录(不使用此选项则会创建家目录)
  • -G:指定附加组

案例:创建一个虚拟用户 test01,UID 888,GID 888,不创建家目录,不允许登录系统

⚠️ 注意:首先创建组,再创建用户,这样更专业

第一步:创建组

groupadd -g 888 test01

第二步:创建用户

useradd -u 888 -g 888 -M -s /sbin/nologin test01

删除用户

语法格式

userdel -r 用户名

说明

  • 不带 -r 选项使用 userdel,只会删除用户,但用户的家目录仍会保留在 /home 目录下
  • 使用 -r 选项可以完全删除用户信息,包括家目录

案例:使用 awk 和 sed 批量创建 10 个用户

echo | awk 'BEGIN{print "user{1...10}"}' | useradd

注:此命令需要验证

账号切换

在登录账号为 userA 用户状态下,切换到 userB 用户账号工作:

su userB

使用 passwd 给用户设置密码

方法1:交互式设置密码

给 root 用户修改密码:

passwd

给 test01 用户修改密码:

passwd test01

方法2:免交互式设置密码

echo "密码" | passwd --stdin 用户名

示例

echo 1 | passwd --stdin test01

帐号切换

在登录帐号为 userA 状态下,切换到 userB 用户帐号:

$ su userB
  • 进入交互模式,需要输入密码授权进入

四、用户组管理

用户组基本概念

  • 默认情况下,添加用户操作会相应增加一个同名的组
  • 用户属于同名组

查看用户所属组

$ groups

管理用户组

将用户加入到组:

$ usermod -G groupName username

变更用户所属的根组(将用户加入到新组并从原组中除去):

$ usermod -g groupName username

查看系统所有组

系统的所有用户及组信息分别记录在:

  • /etc/passwd - 所有用户及权限
  • /etc/group - 所有用户组及权限

查看命令:

$ more /etc/passwd
$ more /etc/group

五、文件权限管理

文件权限查看

使用 ls -l 查看文件属性字段:

  • 第一个字母表示文件类型:
  • -:普通文件
  • d:目录
  • 后面9个字母为权限标识,3个为一组
  • 分别表示:文件所属用户、用户所在组、其它用户的读写和执行权限

示例:

-rwxrw-r-- colin king 725 2013-11-12 15:37 /home/colin/a
  • 文件拥有者 colin:可读、可写、可执行
  • 所在组 king:可读、可写
  • 其它用户:只可读

更改读写权限

使用 chmod 命令更改文件读写权限

字母方式

$ chmod userMark(+|-)PermissionsMark

userMark 取值:

  • u:用户
  • g:组
  • o:其它用户
  • a:所有用户

PermissionsMark 取值:

  • r:读
  • w:写
  • x:执行

示例:

$ chmod a+x main      # 对所有用户给文件main增加可执行权限
$ chmod g+w blogs     # 对组用户给文件blogs增加可写权限

数字方式

使用三位八进制数字表示权限:

  • 第一位:属主权限
  • 第二位:组权限
  • 第三位:其他用户权限

权限数值:

  • 4:读
  • 2:写
  • 1:执行

示例:

$ chmod 740 main      # 将main的用户权限设置为 rwxr-----

更改文件拥有者

$ chown username dirOrFile

递归更改目录下所有文件的拥有者:

$ chown -R weber server/

更改文件所属组

$ chown .groupname dirOrFile

六、环境变量配置

环境变量文件区别

  • bashrc:用于交互式 non-login shell
  • profile:用于交互式 login shell

系统文件位置:

  • /etc/profile, /etc/bashrc:系统全局环境变量设定

用户文件位置:

  • ~/.profile, ~/.bashrc:用户目录下的私有环境变量设定

环境变量读取顺序

  1. 读取全局环境变量设置文件 /etc/profile
  2. 读取当前登录用户 Home 目录下的文件(按优先级):
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  1. 读取 ~/.bashrc

profile 与 bashrc 的区别

  • ~/.profile:设定本用户专有的路径、环境变量等,只能登入时执行一次
  • ~/.bashrc:设定路径、命令别名,每次 shell script 执行都会使用

环境变量配置示例

.bashrc 配置:

alias m='more'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -l'
alias lsl='ls -lrt'
alias lm='ls -al|more'

log=/opt/applog/common_dir
unit=/opt/app/unittest/common

.bash_profile 配置:

. /opt/app/tuxapp/openav/config/setenv.prod.sh.linux
export PS1='$PWD#'

使配置生效:

$ source ~/.bashrc

参考友情文件:

老男孩_linux初级_用户管理_1