别名与用户管理体系

别名与用户管理体系

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每一列含义

image

  • /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

image

  • 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
posted @   殇ベ墨~  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示