别名与用户管理体系
1. 概述
-
别名,给命令进行设置
-
一般用于给命令设置一个昵称/爱称.ll ls -l color=auto
-
应用场景:
- 给常用命令设置个快捷方式,使用简单方便
-
给危险命令加上的防护措施.
1.1 如何创建别名--给rm设置别名
- 只要运行rm就提示 rm is dangerous,pls use mv.
- 需求只有运行rm,就执行echo 命令
1.0 查看系统已有的别名
alias #查看所有别名。alias ll #查看ll别名对应的命令。
1.1 如何输出提示信息
echo rm is dangerous,pls use mv.
1.2 设置别名
alias rm='echo rm command is not found'
# 设置别名
alias 昵称='命令'
alias rm
alias rm='echo rm command is not found'
1.3 测试
rm -fr /oldboy/oldboy.txt
rm command is not found -fr /oldboy/oldboy.txt
⚠
如果想真的删除文件(临时取消别名):
🅰 使用命令绝对路径 /bin/rm
🅱 使用撬棍(反斜线) \别名
\rm /oldboy/oldboy.txt
1.4 永久生效
一般命令行的操作都是临时,重启或重新登录失效了。
这时候我们要记得让配置永久生效,修改配置文件。
-
修改配置文件 ~/.bashrc (当前用户生效)
/etc/profile (全局)
# 修改/etc/profile
在最后一行写入配置别名的命令。
alias rm='echo rm command is not found'# 让配置文件生效(source目前仅用于profile文件)
source /etc/profile# 检查别名
alias rm
alias rm='echo rm command is not found'#未来除了rm,cp,mv命令的别名,配置到此为止。
对于rm,cp,mv命令的别名,还要额外配置下,否则不生效。#注释掉~/.bashrc里面已经配置的别名
修改~/.bashrc 注释 #a lias rm='rm -i' 这一行# 检查注释结果
[root@oldboy-lnb-king-v3 ~]# grep 'rm' ~/.bashrc
#alias rm='rm -i'
关于井号# 表示注释,#号之后的内容系统认为不存在,会忽略掉。
关于别名生效:重新登录即可,断开连接然后重新连接。
2. 用户管理
- 核心内容:命令
- Linux用户概述与分类,UID,GID
- Linux用户相关文件/etc/passwd每一列含义
- 用户增删改查命令
- 故障案例:命令行灵异的提示-bash-4.2$
- sudo管理
- 堡垒机
2.1 用户管理概述
1.1 概述
- 各种系统中都有用户,win(administrator),Linux系统中是 有各种类型的用户的.
- 未来大部分操作使用root实现,进行系统管理的时候都使用root 造成管理混乱.
- 推荐使用普通用户,提升系统安全.
- 简单来说:未来Linux系统会有各种的用户,每个用户都有自己 的用途,root最高权限用户,普通用户,虚拟用户。
- Linux系统是一个多用户系统.
1.2 UID , GID
Linux中的用户是有一个标记,类似于身份号码一样的东西,叫做UID和GID. 一般情况下UID和GID要唯一。
- UID user id 用户的id号,身份证号码.
- GID group id 用户组id号,户口本号码.
1.3 用户分类
UID , GID 规律
用户分离 | 分类方法(uid) |
---|---|
root | uid是0 |
普通用户 | uid1000(C7之后)(原来的系统C5,C6 >= 500),手动创 建,无法对系统进行更改,只能在当前家目录有权限. |
虚拟用户 | uid <1000, 也叫傀儡用户, 用于服务,进程运行使用的用 户,无法直接使用 . |
温馨提示: uid是分类的1种方法.
2.2 用户相关的文件
Linux下面每创建1个用户,一般会影响下面几个文件。
用户相关的文件 | 说明 |
---|---|
/etc/passwd | 存放用户信息 |
/etc/shadow | 存放密码信息 |
/etc/group | 用户组信息 |
/etc/gshadow | 用户组密码信息,几乎不会给用户组设置密码 |
- /etc/passwd每一列含义
- /etc/shadow
第1列是用户名
第2列是密码
第3列及以后是密码过期时间,默认是不过期。
- /etc/group
root:x:0:oldboy
bin:x:1:
daemon:x:2:第1列是用户组的名字:默认是和用户名一致。
第2列是密码
第3列是gid
第4列是空,这个组里面有什么额外的用户?
2.3 用户管理指令
- 增加
- 删除
- 修改
- 查看
3.1 增加
创建用户:必会
- useradd
useradd选项 | 说明 |
---|---|
- u | 指定用户uid |
- s | 指定命令解释器,默认是/bin/bash |
- M | 不创建家目录 |
# 添加用户 oldboy
useradd oldboy
grep 'oldboy' /etc/passwd# 创建用户mysql指定uid 1314指定命令解释器/sbin/nologin不创建家目录 创建虚拟用户
useradd -u 1314 -s /sbin/nologin -M mysql [root@myvps ~]# grep 'mysql' /etc/passwd /etc/group /etc/shadow
/etc/passwd:mysql:x:1314:1314::/home/mysql:/sbin/nologin
/etc/group:mysql:x:1314:
/etc/shadow:mysql:!!:19955:0:99999:7:::
[root@myvps ~]# ll /home/mysql
ls: 无法访问/home/mysql: 没有那个文件或目录[root@myvps ~]# id mysql (只能加一个用户)
uid=1314(mysql) gid=1314(mysql) 组=1314(mysql)
id 也可以看用户是否存在
id 也可以看用户是否存在
虚拟用户:命令解释器是 /sbin/nologin 和不创建家目录
- passwd 修改密码
[root@myvps ~]# passwd 修改当前密码
[root@myvps ~]# passwd oldboy
更改用户 oldboy 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
passwd 后面跟用户
passwd选项 | 说明 |
---|---|
--stdin | 非交互式设置密码 |
# 给oldboy 用户设置密码
passwd oldboy# 非交互式设置密码,用于批量修改密码。(只能在root中用)
echo 1 | passwd --stdin oldboy
- su 切换用户
su -oldbou# 退出当前用户
ctrl + d # 相当于logout命令su switch user 切换用户
⚠ 温馨提示: 关于su - 与su命令
su命令中的-,是su命令的选项: -, -l, login
切换用户的时候,更新用户的配置与环境变量。
3.2 删除
⚠ 尽量笔避免使用,通过注释这个用户信息实现.
- userdel
userdel选项 | |
---|---|
默认不会删除家目录和相关的文件,比如邮箱 | |
- r | 删除用户及家目录⚠ |
-d | 查看家目录 |
# 删除用户
[root@myvps ~]# userdel mysql
[root@myvps ~]# grep 'mysql' /etc/passwd# 彻底删除用户包含家目录
[root@myvps ~]# useradd yang666
[root@myvps ~]# ll -a /home/yang666/
总用量 12
drwx------. 2 yang666 yang666 62 8月 20 16:41 .
drwxr-xr-x. 8 root root 91 8月 20 16:41 ..
-rw-r--r--. 1 yang666 yang666 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 yang666 yang666 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 yang666 yang666 231 4月 1 2020 .bashrc
[root@myvps ~]# userdel -r yang666
[root@myvps ~]# ll -a /home/yang666
ls: 无法访问/home/yang666: 没有那个文件或目录
3.3 修改-了解
- passwd 修改密码。必会
- usermod 用于于修改用户信息,用户已经存在,useradd添加的时候指定的信息. 很少用。
[root@oldboy-king-v2 ~]# useradd oldboy
[root@oldboy-king-v2 ~]# grep oldboy /etc/passwd
oldboy:x:1000:1000 :/home/oldboy:/bin/bash
[root@oldboy-king-v2 ~]# su - oldboy
[oldboy@oldboy-king-v2 ~]$ 登出
[root@oldboy-king-v2 ~]# usermod -s /sbin/nologin oldboy
[root@oldboy-king-v2 ~]# grep oldboy /etc/passwd
oldboy:x:1000:1000 :/home/oldboy:/sbin/nologin
[root@oldboy-king-v2 ~]# su - oldboy
上一次登录:五 7月 22 11:10:59 CST 2022pts/0 上
This account is currently not available.
[root@oldboy-king-v2 ~]# usermod -s /bin/bash oldboy
[root@oldboy-king-v2 ~]# grep oldboy /etc/passwd
oldboy:x:1000:1000 :/home/oldboy:/bin/bash
3.4 查看用户
-
id 查询用户的uid,gid,用户组信息,检查用户是否存在
-
whoami 查询当前用户的名字
-
w 查看当前登录的用户的信息
-
last 用户的登录情况.
-
lastlog 所有用户最近1次登录情况.
-
id
# id 查看用户id信息 uid gid 属于的用户组 判断用户是否存在
# id 查看用户id信息 uid gid 属于的用户组 判断用户是否存在
[root@myvps ~]# id oldboy
uid=1002(oldboy) gid=1002(oldboy) 组=1002(oldboy)
[root@myvps ~]# usermod -G root oldboy #让oldboy用户属于oldboy组和rootzu
[root@myvps ~]# id oldboy
uid=1002(oldboy) gid=1002(oldboy) 组=1002(oldboy),0(root)
[root@myvps ~]# usermod -G '' oldboy #把oldboy从root组踢出
[root@myvps ~]# id oldboy
uid=1002(oldboy) gid=1002(oldboy) 组=1002(oldboy)
[root@myvps ~]#
- whoami
查看当前用户的名字也可以用于获取当前用户的名字。
- w 命令,查询谁登录了系统并且正在干啥,系统运行时间,负载信息
替代了uptime
- last , lastlog 查看用户登录情况
- last 显示所有用户的登录信息
- lastlog 显示所有用户最近1次的登录信息
3.5. 用户组命令(了解)
- 创建用户组 groupadd
- 使用场景:指定用户的uid和gid的时候可以使用groupadd
- 创建组指定gid groupadd -g 1315 yang996
- 创建用户指定uid与用户组 useradd -u 1315 -g yang996 -s /sbin/nologin -M yang996
案例 创建uid,gid都为888 的lidao888虚拟用户
[root@oldboy-lnb-king-v3 ~]# groupadd -g 888 lidao888
[root@oldboy-lnb-king-v3 ~]# useradd -u 888 -g lidao888 -s /sbin/nologin -M
lidao888
[root@oldboy-lnb-king-v3 ~]# id lidao888
uid=888(lidao888) gid=888(lidao888) 组=888(lidao888)
3. 故障案列-命令行 -bash.2$
1.预备姿势/etc/skel/目录
- 这个目录是Linux新用户家目录的一个模板。
- 每当我们创建用户的时候,系统会把/etc/skel/下面所有内容,复制到新用户的家目录下面。
- 其他应用:创建通知文件,告知每个新用户,禁止使用rm等危险命令。
2.原因
命令行:
-bash-4.2$
用户家目录没有,用户家目录下面的配置文件没了 ~/.bashrc ~/.bash_profile
3.解决
- 通过/etc/skel/.bash* 复制并解决
- /etc/skel 目录所有新用户的家目录的模板.
cp /etc/skel/.bash* ~
重新登录即可
4.复现故障
#oldboy用户下操作
\rm -fr ~/.bash*
cp /etc/skel/.bash* ~
4. sudo权限管理
1. 概述
-
Linux系统开发人员要看日志,如何创建用户与授予权限?
- 解决方案:
- root权限,权限太大.
- 普通用户,权限太小.
- 日志平台
- 普通用户+尚方宝剑以root权限运行命令。
- 。。。
-
这时候请使用sudo(提权)
-
这时候可以通过普通用户+sudo权限实现这个目标.
-
授予普通用户以root权限运行,cat,head/tail,more/less,grep.
-
sudo概述:
-
用于给普通用户配置的命令,配置了sudo权限后普通可以以root权限运行命令。
2. 进行sudo授权与使用
温馨提示:授权sudo,需要使用root
# root 授权配置
visudo ===背后修改 vi /etc/sudoers
# 普通用户使用
sudo + 命令
- 授予oldboy用户,以root权限运行cat,head,tail,more,less,grep权限
精细化授权,可以给开发人员使用。
# root用户授权
visudo = vim /etc/sudoers
第100行后面
oldboy ALL=(ALL) /bin/cat, /bin/head, /bin/tail, /bin/less, /bin/more,
/bin/grep# 过滤检查配置结果
grep oldboy /etc/sudoers# oldboy使用
sudo head /var/log/secure
[sudo] oldboy 的密码: #输入oldboy密码# 查看普通用户拥有的sudo权限.sudo -l 查看当前用户有什么sudo权限,关注最后2行即可
- 授予oldboy运行所有命令(root)并且不需要输入密码.
运维自己使用的普通用户
lidao996 ALL=(ALL) NOPASSWD: ALL
grep lidao996 /etc/sudoers