一、别名
1、概述
别名,给命令进行设置
一般用于给命令设置一个昵称/爱称
主要应用场景:
- 给常用命令设置个快捷方式,使用简单方便
- 给危险命令加上的防护措施
查看系统已有的别名
[root@yunwei ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@yunwei ~]# alias ll
alias ll='ls -l --color=auto'
2、设置别名
例如,企业中比较敏感的rm命令,可以输出提示
echo rm is dangrous,please use mv
设置命令格式:alias 命令=“昵称”
[root@yunwei ~]# alias rm=`echo rm is dangrous,please use mv`
[root@yunwei ~]# rm
rm is dangrous,please use mv
[root@yunwei ~]# alias rm
alias rm='echo rm is dangrous,please use mv'
如果真的需要使用rm,我们又应该如何去取消呢?
1、使用绝对路径
2、使用反斜线 \命令
[root@yunwei ~]# find / -name "rm"
/usr/bin/rm
[root@yunwei ~]# /usr/bin/rm txt.tar.gz
[root@yunwei ~]# \rm txt.tar.gz
重新链接就失效了,那么我们如果想要永久失效需要怎么做呢?
一般命令行的操作都是临时,重启或重新登录失效了。
这时候我们要记得让配置永久生效,修改配置文件
/etc/profile
是一个系统级别的 shell 配置文件,通常用于设置全局的环境变量和执行系统范围的初始化任务。这个文件在 Linux 系统中广泛使用。用户登录后,系统还可能读取用户的个人配置文件(如
~/.bashrc
)来设置用户特定的环境和配置。(~表示当前目录下,比如root /root目录下)
1、修改配置文件 ~/.bashrc(当前用户生效)
2、 /etc/profile(全局)
#修改/etc/profile
vim /etc/profile
#最后一行添加alias rm='echo rm is dangerous.please use mv'
#让配置文件生效(source目前只适用于profile文件)
source /etc/profile
#检查别名
alias rm
--------------------------------
#未来除了rm,cp,mv命令别名,还要配置下~./bashrc文件,否则不生效
#因为系统还要读取用户的个人配置文件~/.bashrc
vi ~/.bashrc
注释掉 #alias rm='rm -i'
#测试rm命令
二、用户管理
1、用户管理概述
各种系统中都有用户,win(administrator),Linux系统中是有各种类型的用户的.
未来大部分操作使用root实现,进行系统管理的时候都使用root造成管理混乱。
推荐使用普通用户,提升系统安全。
简单来说:未来Linux系统会有各种的用户,每个用户都有自己的用途,root最高权限用户,普通用户,虚拟用户。
那么Linux是怎么给这些用户做标记的呢?唯一性
- UID user id 用户的id号,身份证号码
- GID group id 用户组id号,户口本号码
用户分类 | 分类方法(uid) |
---|---|
root | uid是0 |
普通用户 | uid≥1000,手动创建,无法对系统进行更改,只有家目录权限 |
虚拟用户 | uid<1000,也叫傀儡用户。用于服务,进程使用的用户,无法直接使用。 |
2、用户相关文件
Linux下面每创建1个用户,一般会影响下面几个文件
用户相关文件 | 说明 |
---|---|
/etc/passwd | 存放用户信息 |
/etc/shadow | 存放用户密码 |
/etc/group | 用户组信息 |
/etc/gshadow | 用户组密码信息,几乎不会给用户组设置密码 |
/etc/passwd
/etc/shadow
第1列是用户名
第2列是密码
第3列及以后是密码过期时间,默认是不过期
/etc/group
root:x:0:
bin:x:1:
第1列是用户组的名字:默认是和用户名一致
第2列是密码
第3列是gid
第4列是空,或者这个组里面有什么额外的用户
[root@yunwei ~]# useradd test1
[root@yunwei ~]# useradd test2
[root@yunwei ~]# tail -n2 /etc/passwd /etc/shadow /etc/group
==> /etc/passwd <==
test1:x:1000:1000::/home/test1:/bin/bash
test2:x:1001:1001::/home/test2:/bin/bash
==> /etc/shadow <==
test1:!!:19953:0:99999:7:::
test2:!!:19953:0:99999:7:::
==> /etc/group <==
test1:x:1000:
test2:x:1001:
3、用户管理指令
1)增加
useradd选项 | 说明 |
---|---|
-u | 指定用户uid |
-s | 指定命令解释器,默认就是/bin/bash |
-M | 不创建家目录 |
#案例一 创建用户maliy指定uid 1314指定命令解释器/sbin/nologin不创建家目录创建虚拟用户
[root@yunwei ~]# useradd maliy -u 1314 -s /sbin/nologin -M
[root@nyunwei ~]# id maliy
uid=1314(maliy) gid=1314(maliy) 组=1314(maliy)
虚拟用户:命令解释器是/sbin/nologin和不创建家目录
passwd选项 | 说明 |
---|---|
–stdin | 非交互式密码 |
#案例二 非交互式修改密码,用于批量修改密码.(只能root用)
#正常用passwd 用户,需要输入密码,但是要改100个用户的密码非常不方便所以有了此方案
[root@yunwei ~]# echo '1' | passwd --stdin test1
Changing password for user test1.
passwd: all authentication tokens updated successfully.
su切换用户
su - 用户
-
代表切换用户时候,更新用户的配置和环境变量
Ctrl + d
退出当前用户
[root@yunwei ~]# su - test1
[test1@yunwei ~]$ pwd
/home/test1
2)删除
尽量避免使用,通过注释这个用户信息实现。⚠️
userdel选项 | 说明 |
---|---|
默认不会删除家目录和相关文件,比如邮箱 | |
-r | 删除用户及家目录 ⚠️ |
[root@yunwei ~]# userdel test1
[root@yunwei ~]# ls -ld /home/test1
drwx------ 2 1000 1000 83 Aug 18 14:25 /home/test1
删除用户推荐做法
[root@yunwei ~]# tail -n2 /etc/passwd
test:x:1000:1000::/home/test:/bin/bash
maliy:x:1314:1314::/home/maliy:/sbin/nologin
[root@yunwei ~]# id maliy
uid=1314(maliy) gid=1314(maliy) 组=1314(maliy)
[root@yunwei ~]# vi /etc/passwd
[root@yunwei ~]# tail -n2 /etc/passwd
test:x:1000:1000::/home/test:/bin/bash
#maliy:x:1314:1314::/home/maliy:/sbin/nologin
[root@yunwei ~]# id maliy
id: maliy: no such user
3)修改
passwd 修改密码
4)查看
id
查询用户的uid,gid,用户组信息,检查用户是否存在
whoami
查询当前用户的名字
w
查询谁登录了系统并且正在干啥,系统运行时间,负载信息(代替了uptime命令。tty终端连接,pts是ssh链接)
[root@yunwei ~]# uptime
14:32:10 up 1:26, 1 user, load average: 0.04, 0.04, 0.05
[root@yunwei ~]# w
14:32:11 up 1:26, 1 user, load average: 0.04, 0.04, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 14:28 3.00s 0.25s 0.00s w
last
显示所有用户的登录信息。
[root@yunwei home]# last
root pts/2 111.229.205.81 Fri Jan 26 22:16 - 22:16 (00:00)
root pts/1 112.39.72.161 Fri Jan 26 20:02 still logged in
root pts/0 112.39.72.161 Fri Jan 26 20:02 still logged in
lastlog
所有用户最近1次的登录信息。
[root@yunwei home]# lastlog
用户名 端口 来自 最后登陆时间
root pts/2 111.229.205.81 五 1月 26 22:16:30 +0800 2024
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
如果异地IP登录服务器,本机用last
查看,而云厂商自动配置了异地登录告警
4、故障案例-命令行-bash-4.2$
1)/etc/skel/
目录
这个目录是Linux新用户家目录的一个模板。
每当我们创建用户的时候,系统会把/etc/skel/下面所有内容,复制到新用户的家目录下面。
其他应用:创建通知文件,告知每个新用户,禁止使用rm等危险命令。
[root@yunwei ~]# ll -a /etc/skel
总用量 28
drwxr-xr-x. 2 root root 4096 8月 7 2020 .
drwxr-xr-x. 95 root root 12288 1月 27 11:29 ..
-rw-r--r-- 1 root root 18 4月 1 2020 .bash_logout
-rw-r--r-- 1 root root 193 4月 1 2020 .bash_profile
-rw-r--r-- 1 root root 231 4月 1 2020 .bashrc
2)原因
-bash-4.2$
用户家目录没有,用户家目录下面的配置文件没了 ~/.bashrc ~/.bash_profile
3)解决
通过/etc/skel/.bash*
复制并解决
/etc/skel
目录所有新用户的家目录的模板
cp /etc/skel/.bash* ~
4)复现
\rm -rf /home/test/*
5)带不带*的小对比
rm -rf /home/test/
这个命令会递归地删除 /home/test/
整个目录将被完全删除。目录及其所有内容,包括子目录和文件。
rm -rf /home/test/*
这个命令会删除 /home/test/
目录下的所有文件和子目录,但不会删除目录本身。
5、sudo
权限管理
Linux系统开发人员要看日志,如何创建用户与授予权限?
- root权限,权限太大
- 普通用户,权限太小
- 日志平台没法看
- 得出:普通用户+尚方宝剑以root权限运行命令
这时候请使用sudo(提权)
这时候可以通过普通用户+sudo权限实现这个目标
授予普通用户以root权限运行,cat,head/tail,more/less,grep
sudo概述: 用于给普通用户配置的命令,配置了sudo权限后普通可以以root权限运行命令。
1)进行sudo授权与使用
授权sudo,需要使用root。
#root授权配置
visudo
#背后修改 vi /etc/sudoers
#普通用户使用
sudo + 命令
#案例一 授予test用户,以root权限运行cat,head,tail,more,less,grep权限
[root@yunwei ~]# visudo
[root@yunwei ~]# cat /etc/sudoers | grep -n test
101:test ALL=(ALL) /usr/bin/cat, /usr/bin/head, /usr/bin/tail, /usr/bin/more, /usr/bin/less
[root@yunwei ~]# su - test
[test@yunwei ~]$ sudo tail /var/log/secure
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
#输入密码
[sudo] password for test:
#查看普通用户拥有的sudo权限
sudo -l
#查看当前用户有什么sudo权限,关注最后2行即可
运维创建一个自己用
#案例二 授予SRE运行所有命令(root)并且不需要输入密码
[root@yunwei ~]# cat /etc/sudoers | grep "SRE"
SRE ALL=(ALL) NOPASSWD: ALL
[root@yunwei ~]# sudo tail /var/log/secure
2)小结
为何使用sudo? 以普通用户权限进行管理,拥有部分的root权限。
如何用? root进行授权: visudo 普通用户下面进行使用: sudo 命令 。
未来还有别的方案可以用(堡垒机/跳板机)。
企业使用:
用一个账户登录机器,切换到root用户
[SRE@yunwei ~]$ sudo su - root [root@yunwei ~]# #必须是root的所有权限 [test@yunwei ~]$ sudo su - root [sudo] password for yunwei: Sorry, user test is not allowed to execute '/bin/su - root' as root on nanjing.
6、 堡垒机与跳板机
跳板机,堡垒机是未来工作环境中,远程连接必备设备或服务,要求我们只能连接堡垒机或跳板机,然后通过它在对服务器进行管理与控制。
跳板机:简单的跳板工具.
堡垒机:跳板工具+审计功能.
堡垒机茶品 | |
---|---|
开源软件 | Jumpserver,Teleport. |
物理硬件设备 | 购买 |
云服务 | 阿里云、腾讯云、华为云 |
三、实战Teleport
1、下载安装包,如果下载不是30M左右,本机下载并且上传。
wget --no-check-certificate https://www.tp4a.com/download/get-file/teleport-server-linux-x64-3.6.4-b3.tar.gz
2、解压并安装,-- [ ALL DONE ] --结束
tar xf teleport-server-linux-x64-3.6.4-b3.tar.gz
cd teleport-server-linux-x64-3.6.4-b3/
./setup.sh
3、检查是否运行
[root@yunwei ~]# /etc/init.d/teleport status
teleport web server is running.
teleport core server is running.
关闭或重启命令
/etc/init.d/teleport stop
/etc/init.d/teleport start
/etc/init.d/teleport restart
4、关闭防火墙和SElinux
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭SElinux
setenforce 0 #临时关闭
vim /etc/selinux/config
找出中间的行SELINUX=enforcing 修改为SELINUX=disabled
#检查
[root@yunwei ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@yunwei ~]# getenforce
Disabled
#结果是permissive或disabled都表示关闭
#如果是enforcing表示开启