1,权限的基本操作

权限的类别


r(4):读权限


w(2):写权限


x(1):执行权限


-(0):无任何权限



权限的对象



u:属主用户



g:属组用户:



o:其他用户:



a:全部用户




控制权限



+:在原来的权限基础上,增加新的权限



-:在原来的权限基础上,减掉某个授权



=:直接设置最终权限




文件的权限可以通用ls -l进行查看
[root@localhost bob]# ls -l
-rw-r--r-- 1 bob bob 0 May 3 10:59 aaa.txt



权限位一共是十位
-rw-r--r--



第一位:表示的是文件的类型



-:表示这个文件是一般文件



d:表示这个文件是目录文件



第二位-第四位:表示的是文件的属主具有的权限



第五位-第七位:表示的是文件的属组用户具有权限



第八位-第十位:表示的是文件的其他用户具有权限




2, 权限管理命令



chmod



修改权限



格式:

chmod [选项] 权限 文件



选项



-R:递归修改目录和目录下的子文件的权限





文件的初始权限
-rw-r--r-- 1 bob bob 0 May 3 10:59 aaa.txt 1
案例



1)给属组用户添加上写权限

chmod g+w 1.txt

2)给属主用户去掉写权限

chmod u-w 1.txt

3)给其他用户添加上读和执行权限

chmod o+rx 2.txt

4)将属主的权限设置为可读可写可执行

chmod u+rwx 2.txt

5)将属主的权限设置为可写

chmod u=w 2.txt



6)将属组的权限设置为没有任何权限

chmod g= 2.txt

7)将所有用户读权限都去掉

chmod a= 4.txt
另一种写法
chmod ugo= 4.txt

8)给所有用户都添加上写权限

chmod ugo+w 4.txt
另一种写法
chmod a+w 4.txt

9)将所有用户权限都设置为可读可执行

chmod ugo=rx 4.txt
另一种写法
chmod a=w 4.txt



用数值方式表示文件的权限

-rw-r--r-- 644
-r--rw-r-- 464
--w-r--r-x 245
-rw----r-- 604
--w--w--w- 222
-rwx-----x 701
-rwxrwxrwx 777
---------- 000
[root@localhost bob]# chmod 640 aaa.txt
[root@localhost bob]# ls aaa.txt -l
-rw-r----- 1 bob bob 0 May 3 10:59 aaa.txt

chown



修改文件的属主和属组



格式:

chown [选项] 属主:属组 文件名



选型



-R:递归修改目录和目录下的子文件的权限




案例:



创建一个用户tuser1

useradd tuser1

创建一个gp001

groupadd gp001

创建一个文件

touch test.txt

将文件的属主修改为tuser1

chown tursel test.txt

将文件的属组修改为gp001

chown -Rturser1:gp001 test.txt

3,特殊权限



suid(4):任何用户执行程序的时候,都是以文件的属主的身份来运行



sgid(2):任何用户执行程序的时候,都是以文件的属组的身份来运行



sticky(1)




设置suid的方法
chmod u+s 文件
chmod u-s 文件

案例:实现让任何用户都可以以root身份执行touch命令



which touch
/usr/bin/touch
ls -l /usr/bin/touch
-rw-r----- 1 bob bob 0 May 3 10:59 /usr/bin/touch
chmod u+s /usr/bi/touch
ls -l /usr/bi/touch
-rwSr----- 1 bob bob 0 May 3 10:59 /usr/bin/touch

4,用户授权

 方法有两种



方法1:su



方法2:sudo




su命令



可以实现用户身份的切换



存在两个问题



1:无法控制控制用户可以执行的命令



2:会导致root泄露



sudo命令



sudo可以为用户进行授权,可以明确指定用户可以进行的操作有哪些




visudo打开sudo的配置文件,对用户进行授权

jerry ALL=(root) /sbin/useradd,/usr/bin/touch



jerry是用户名



ALL=(root) 授权用户可以以root身份去执行命令



/sbin/useradd 可以以root身份执行的命令列表




在普通用户的会话中可以查看授权信息

sudo -l



需要输入自己的密码



密码有效期是5分钟




普通用户使用授权进行操作的时候,必须在前面加上sudo

sudo useradd d008



需要输入自己的密码



密码有效期是5分钟




5,拓展命令




手动生成密码



格式:

openssl passwd -1 -salt 'suiji' 123 1



可以将这个密码直接写在/etc/passwd中的密码占位符的位置





也可以这样执行

[root@zuiyoujie ~]# useradd aaa -p `openssl passwd -1 -salt 'suiji' aaa`
[root@zuiyoujie ~]# useradd bbb -p $(openssl passwd -1 -salt 'suiji' bbb)

手动创建用户



1. /etc/passwd写一行



2. 创建家目录 - 复制 /etc/skel - 修改目录的属主和属组



3. /etc/shadow写一行



4. /etc/group写一行




6,几个命令




who命令



作用 :检查当前linux的链接会话有几个

[root@localhost ~]# who
root tty1 2024-03-19 20:22
root pts/0 2024-03-19 20:06 (172.16.100.1)
root pts/1 2024-03-19 20:10 (172.16.100.1)



第一列:链接linux的用户名



第二列:链接linux的类型



tty:表示是在linux中直接进行登录的



pts/0 ...1:表示是远程连接上来的



第三列:链接的时间



第四列:客户端的ip地址




whomai命令



作用 :查看当前会话的用户名




last命令



作用:显示每个用户的登录时间,已经登录状态




lastb命令



作用:记录和现实每个用户登录失败的信息。登录失败一次,这里就会记录一次。




案例:统计每个用户的失败次数




[root@localhost ~]# lastb | awk -F " " '{print $1}' | sort | uniq -c
1
1 bob02
1 btmp
5 root



w命令



作用:显示每个会话,已经会话中正在执行的命令

[root@localhost ~]# w
20:37:34 up 32 min, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 20:22 15:34 0.00s 0.00s -bash
root pts/0 172.16.100.1 20:35 6.00s 0.00s 0.00s w
root pts/1 172.16.100.1 20:36 22.00s 0.90s 0.00s sleep 1



lastlog命令



作用:显示用户的上一次登录时间等信息




日志文件



1)/var/log/messages:系统日志文件【重启网络、重启ssh】

Mar 19 20:44:56 localhost NetworkManager[679]: <info> [1710895496.8349] dhcp4
(ens36): address 192.168.13.196
Mar 19 20:44:56 localhost NetworkManager[679]: <info> [1710895496.8349] dhcp4
(ens36): plen 24 (255.255.255.0)
Mar 19 20:44:56 localhost NetworkManager[679]: <info> [1710895496.8349] dhcp4
(ens36): gateway 192.168.13.2



2)/var/log/secure:客户端远程登录linux的ssh的日志文件



【下面的日志是使用一个不存在的账号密码进行登录产生的日志文件】

Mar 19 20:48:43 localhost sshd[2956]: Invalid user aaa from 172.16.100.1 port
51705
Mar 19 20:48:43 localhost sshd[2956]: input_userauth_request: invalid user aaa
[preauth]
Mar 19 20:49:33 localhost sshd[2956]: pam_unix(sshd:auth): check pass; user
unknown



3)apache或者是nginx的日志,例如access_log error_log

192.168.1.8 - - [24/Jan/2024:07:09:44 -0500] "GET / HTTP/1.1" 403 4897 "-"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0 Safari/537.36"



查看日志文件内容变化/分析

tail -f 日志文件
日志文件的滚动



防止日志文件变的过大



日志文件的滚动



方法1:基于时间



方法2:基于空间




7,find命令




文件查找的命令




find:查找速度慢,但是非常精准



       根据文件名进行查找



locate:查询速度快,但是准确度低



       安装组件:mlocate



       locate是维护了一个系统的数据库,在数据库中记录了每个文件的文件名和路径



数据库是每天定时自动更新。




find的格式

find 搜索路径 查找条件 动作

搜索路径



常用写法:



1:/ 查找整个linux



2:./ 查看当前位置及其子目录



3:指定路径,例如:/home/aaa/bbb




查找条件



1:根据文件名查找 -name



2:根据文件类型查找 -type f -type d



3:根据文件的权限查找 -perm u=s -perm g=s



4:根据文件的时间戳查找 -mtime



动作



--print:输出查找结果



--exec 命令 \; 在find执行结束后,执行一个命令




案例




在文件系统中,找a.txt文件

[root@localhost yum.repos.d]# find / -name "a.txt" -print
/etc/a.txt
/home/a.txt
/a.txt



在文件系统中,找后缀是.txt的文件

[root@localhost yum.repos.d]# find / -name "*.txt" -print

在home下找后缀是txt的文件

[root@localhost yum.repos.d]# find /home -name "*.txt" -print

在home下,找后缀txt的文件,并且文件类型是一般文件

[root@localhost home]# find /home -name "*.txt" -type f
/home/aaa.txt

在系统中,找具有suid的文件的

[root@localhost home]# find / -perm -u=s 2>/dev/null



根据文件的时间戳查找文件的内容

-mtime [+-]n:文件的创建(单位是天)
-ctime [+-]n:文件修改时间(单位是天)
-atime [+-]n:文件的访问时间(单位是天)
说明
n:单位是天
-mtime 5:表示5天之前的那一天所创建的文件
-n:
-mtime -5:表示在5天之内所创建的文件
+n:
-mtime +5:表示在5天之前所创建的文件
-mmin [+-]n: 单位是分钟
-cmin [+-]n: 单位是分钟
-amin [+-]n: 单位是分钟

find执行命令



案例:



将所有后缀是txt的文件,都复制到tmp下

[root@localhost home]# find / -name "*.txt" -exec cp -a {} /tmp \;

将/home下后缀是txt的文件删除

[root@localhost home]# find /home/ -name "*txt" -exec rm -rf {} \;

find提权案例



前提:给用户做sudo授权,授权可以执行find命令



提权格式

find /xxx -exec /bin/bash \;

8,网络管理 配置文件



配置文件说明



路径:/etc/sysconfig/network-scripts



文件名:ifcfg-网卡名




网卡名:

ip link show
ip addr



网卡配置文件

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
UUID=f47bde51-fa78-4f79-b68f-d5dd90cfc698 
HWADDR=xx-xx-xx-xx-xx-xx-xx 
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.100.2 
NETMASK=255.255.0.0
GATEWAY=172.16.1.1 
DNS1=8.8.8.8 
DNS2=114.114.114.114



添加网卡




第一步:添加一个新网卡




第二步:查看新网卡的网卡名

ip addr



第三步:为新网卡创建配置文件

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37

修改文件的内容



1. 修改网卡名称



2. 修改uuid【建议删除】



3. 修改HWADDR【建议删除】



4. 修改ip地址等信息

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes



第四步:重启网卡



建议:关闭NetworkManager

systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network



检查是否修改成功

ip addr

相关命令



ifocnfig命令



作用



1:查看ip地址



2:设置ip地址【在内存中设置】



如果没有这个命令,需要安装组件:net-tools




1)查看ip地址

ifconfig
ifconfig ens33
ifconfig -a



2)修改ip地址

ifconfig 网卡名 ip地址 netmask 子网掩码 up
案例
ifconfig ens37 1.1.1.1 netmask 255.0.0.0 up



ip addr命令

ip addr
ip addr s 网卡名



ip link show命令

ip link show
ip link show 网卡名



ping命令

1:测试网络
2:解析域名
选项
-c
-w
-4



netstat



ss 是netstat 的升级版



选项



-t:显示基于tcp协议的连接



xshell链接linux



访问网站的http



-u:显示基于udp协议的连接



-n:以数字的方式显示连接中的端口



-a:显示全部的连接



-l:显示等到客户端连接的状态



-p:显示链接的进程的进程id【pid】




网络连接的状态

LISTEN:表示服务器端开启了一个端口,但是尚未有客户端进行连接
ESTABLISHED:表示客户端和服务端已经建立了链接



检查当前主机是否开启了22端口

ss -anl | grep 22



lsof命令



作用:检查端口是哪个进程启动的



格式:

lsof -i :端口



这个命令可能需要自己安装:lsof




判断22端口是哪个进程发起的

[root@localhost ~]# lsof -i :22