命令以及文件概览
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 shellprofile:用于交互式 login shell
系统文件位置:
/etc/profile,/etc/bashrc:系统全局环境变量设定
用户文件位置:
~/.profile,~/.bashrc:用户目录下的私有环境变量设定
环境变量读取顺序
- 读取全局环境变量设置文件
/etc/profile - 读取当前登录用户 Home 目录下的文件(按优先级):
~/.bash_profile~/.bash_login~/.profile
- 读取
~/.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
Comments NOTHING