命令的用法
1:netstat命令
查看网络的相关信息
常见的选项:
-n | 以数字的形式显示ip地址和端口号 |
-a | 显示所有的socket套接字 |
-p | 显示进程的相关信息 |
-t | 显示tcp传输协议的套接字 |
[root@localhost /]# netstat -pant Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:39467 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1174/rpc.mountd tcp 0 0 0.0.0.0:44753 0.0.0.0:* LISTEN 1124/rpc.statd
如果没有n的话,就会以主机名来显示ip地址
-a:显示所有的套接字(就是监听的状态和已经建立的连接),如果没有这个选项的话,就显示已经建立的连接,
-t:显示tcp的连接
2:chattr和lsattr命令
这个命令就是更改文件或者目录的属性,连root用户都要被受限制
常用的选项:
-a | 文件只能被追加写入,不能进行任何的操作,文件夹有着个权限的话,能在里面创建文件,不能重命名 |
-i | 文件被锁定,进行不了任何的操作,文件夹有这个权限的话,什么都不能做 |
这2个选项一但设置后,root用户都删除不了,但是可以通过root用户修改这2个权限
3:/etc/shadow的字段和密码
/etc/shadow的字段
q7:$6/::0:99999:7:::
每个字段的含义:
第一个字段为:用户名
第二个字段为:加密口令
第三个字段为:最后一次修改的日期(距离1970年1月1日过去的天数)
第三个字段为;最小修改密码的时间
第四个字段为:最大修改密码的时间
第五个字段为:密码过期前的警告天数
第六个字段为:账户宽限日期,就是密码被禁用后的宽限天数
第七个字段为:账户被禁用日期(距离1970年过去的天数)
保留字段:功能扩展用的
密码的状态
ntp:!!:19637::::::
*表示非登录用户,就是系统用户
!!表示没有设置密码
!表示密码被锁定
设置密码被锁定的命令
usermod -L 锁定密码
usermod -U 解锁密码
passwd -l 锁定密码
passwd -u 解锁密码
passwd -S 查看密码的状态
4:ssh的密钥的设置
1:scp命令
就是在连接上了xshell后可以使用的命令,就是远程复制主机上的内容
2:免密登录的介绍
就是服务器登录到其他的主机上面去,不需要输入密码(比较麻烦)
免密的操作:
1)在客户端上面生成密钥
[root@client ~]# ssh-keygen -t rsax
需要输入三次回车
会生成几个文件
known_hosts 记录ssh访问过计算机的公钥
id_rsa 生成的私钥
id_rsa.pud 生成的公钥
authorized_keys 存放过的无密码登录服务器公钥,与公钥的内容相同
[root@client .ssh]# ls id_rsa id_rsa.pub [root@client .ssh]#
2)将生成的公钥发送给服务器
ssh-copy-id 服务器的ip地址
[root@client .ssh]# ssh-copy-id 192.168.10.100
这样服务器上面就会有几个文件
/root/.ssh
[root@server .ssh]# ls authorized_keys known_hosts [root@server .ssh]#
3)修改服务器上面的配置文件
口令认证就是:每次登录需要输入用户名和密码
密钥登录就是:需要密钥进行匹配,认证成功就能直接登录上去
就是客户机有密钥和私钥(自己留着),公钥发送给服务器,当服务器接收到客户机的请求时,就会将自己的公钥与客户机的公钥进行匹配
[root@server ssh]# vim /etc/ssh/sshd_config 修改里面的几个参数 PermitRootLogin yes 允许root用户登录 PasswordAuthentication no 是否允许口令认证
4)重启sshd服务
[root@server ssh]# systemctl restart sshd
5)客户机登陆服务器
就是需要密钥才能登入,禁止使用密码来登录
[root@client /]# ssh 192.168.10.100
配置好了之后,不需要输入密码就能直接连接上去了,就是修改ssh的配置文件的话,会影响xshell的连接主机,如果是设置了不能使用密码的话,连接主机的时候就只能使用密钥来登录
5:date命令
常用的日期和时间域
%F | 完整的日期格式,等于%Y-%m-%d |
%T | 完整的时间格式,等于%H%M%S |
显示完整的日期和时间
#多个选项,用 双引号来包含 [root@localhost opt]# date +'%F %X' 2023-11-08 23时01分23秒 [root@localhost opt]#
设置日期
使用选项-s
[root@controller ~]# date -s "2021-01-01 21:23:11" Fri Jan 1 21:23:11 CST 2021
六:硬链接和软连接
都是使用link命令
格式:
link 选项 源文件 目标文件
1:创建一个硬链接
[q7@controller mnt]$ ls 11 [q7@controller mnt]$ sudo link /mnt/11 /mnt/22 [q7@controller mnt]$ ll total 8 -rw-r--r--. 2 root root 6 Nov 12 16:28 11 -rw-r--r--. 2 root root 6 Nov 12 16:28 22 [q7@controller mnt]$
硬链接就是源文件一样,对硬链接文件进行修改,就相当于是对源文件进行修改
[q7@controller mnt]$ sudo vim 22 dasda dasd ada da ~ ~ #查看源文件 [q7@controller mnt]$ cat 11 dasda dasd ada da [q7@controller mnt]$
2:创建一个软连接
加上一个-s的选项
[q7@controller mnt]$ sudo ln -s /mnt/11 /mnt/22 [q7@controller mnt]$ ls 11 22 [q7@controller mnt]$ ll total 4 -rw-r--r--. 1 root root 18 Nov 12 16:32 11 lrwxrwxrwx. 1 root root 7 Nov 12 16:44 22 -> /mnt/11 [q7@controller mnt]$
七:/etc/sudoers
这个配置文件就是用户授权的文件
每个字段的意思
q7 all=(all) NOPASSWD:ALL
第一个字段:代表授权使用sudo的用户或者组
第二个字段:代表允许授权用户在哪些主机上使用这些权利
第三个字段:允许被授权的用户提权到什么组级别的权限,all包含root用户权限
第四个字段:提权的时候是否需要输入自身的密码使用特权
第五个字段:代表执行什么的命令,all代表允许执行所有命令
八:Linux与windows之间的文件上传
安装lrzsz软件包
[root@client ~]# yum -y install lrzsz
rz将文件上传到linux里面
sz将文件上传到windows里面 sz 文件名
九:scp命令的用法
scp命令是基于ssh协议的文件的传输
-r 选项能将文件夹的里面的内容都拷贝过去
从本地主机复制文件到远程服务器
scp 本地文件名 username@主机名:/文件路径
[root@controller mnt]# scp /mnt/11 root@client:/mnt/
从远程服务器复制文件到本地
[root@controller mnt]# scp root@client:/mnt/22 /mnt
将文件夹里面的内容复制过来
[root@controller mnt]# ls 11 22 dd hgfs [root@controller mnt]# scp -r /mnt/dd/ root@client:/opt
10:curl命令的用法
curl是利用url语法在命令行方式下工作的开源文件传输工具
1:curl +url 可以获取网页的源码
[root@controller mnt]# curl huaweiyun.com <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html> [root@controller mnt]#
2:o和O选项
-o就是将文件保存为命令中指定的文件名的文件
[root@controller mnt]# curl -o /root/22 www.baidu.com/index.php
-O使用URL默认的文件名保存文件到本地
[root@controller mnt]# curl -O www.baidu.com/index.php
11:tailf查看日志的命令
tailf跟tail -f 一样跟踪的查看文件的内容
12:/etc/fstab
/dev/mapper/rhel-swap none swap defaults 0 0
第一个字段:file system 这里就是挂载的文件系统的设备名称或者块的信息,也可以是远程文件系统
第二个字段:挂载点,文件系统挂载的地方,swap分区这里是none,没有挂载点
第三个字段:type,这里就是指定文件系统的类型,ext4,xfs
第四个字段:options,defaults这个选项包含(rw,suid,async)
第五个字段:dump是否备份,此处为1的话,就是要备份,0的话就是不备份
第六个字段:pass 这里用来指定如何使用fsck来检查硬盘,0的话就是不检查
一般的话,就是 /dev/sdb1 /mnt ext4 default 0 0
13:crontab命令
就是一个计划任务,就是关于什么时候执行命令
这个命令的描述在/etc/crontab这个文件里面
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
里面的字段的含义:
第一个字段:表示分钟(0~59)
第二个字段:小时(0~23)
第三个字段:几号(1~31)
第四个字段:月份(1~12)
第五个字段:week(0~7)
第六个字段:command,可以是系统命令也可以是自己编写的脚本文件
还可使用一下特殊字符
*:表示所有可能出现的值
,:表示隔开的值制定一个列表的范围 1,3,5,7
-:可以整数之间的中杠表示一个整数的范围2-6表示2,3,4,5,6
/:指定时间的间隔频率, 0~23/2 表示每隔2个小时执行一次,*/10 表示每隔10分钟执行一次
一些特殊的含义:
* * * * * command命令 * 表示每分钟都执行或者每小时执行 1-5表示1到5分钟之内或者1到5小时之间执行 */5 表示每隔5分钟执行,或者每隔5小时执行 1,5,6 表示1分钟,5分钟,6分钟执行
软件包为crontabs
[root@controller ~]# systemctl status crond.service ● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2023-11-18 22:49:56 CST; 8min ago Main PID: 1423 (crond)
服务的名称为crond
命令的选项为:
-u 就是指定用户
-e 编辑用户的crontab
-l:列出用户的crontab
-r:就是删除用户的crontab
14:firewall和selinux的设置
1:服务
firewall-cmd 服务相关的命令
临时放行服务和临时删除服务
临时添加 [root@controller /]# firewall-cmd --add-service=http success [root@controller /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client http mountd nfs rpc-bind samba ssh ports: #临时删除 [root@controller /]# firewall-cmd --remove-service=http success [root@controller /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client mountd nfs rpc-bind samba ssh ports:
永久放行和永久删除------要配合permanent参数使用
--reload参数---让永久生效的规则立刻生效
[root@controller /]# firewall-cmd --permanent --add-service=http success #使用 --reload这个命令,让永久生效的命令立刻生效 [root@controller /]# firewall-cmd --reload success [root@controller /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client http mountd nfs rpc-bind samba ssh #永久删除 [root@controller /]# firewall-cmd --permanent --remove-service=http success [root@controller /]# firewall-cmd --reload success [root@controller /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client mountd nfs rpc-bind samba ssh ports:
查看防火墙的状态
[root@controller /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client mountd nfs rpc-bind samba ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@controller /]#
获取所有支持的服务
[root@controller /]# firewall-cmd --get-services | grep mountd RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit collectd condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync
2:端口
临时添加端口和临时删除端口(reload之后就会失效)
[root@controller /]# firewall-cmd --add-port=6666/tcp success [root@controller /]# firewall-cmd --list-ports 6666/tcp [root@controller /]# firewall-cmd --remove-port=6666/tcp success [root@controller /]# firewall-cmd --list-ports [root@controller /]#
永久生效端口和永久删除端口(reload之后生效)
要加端口号和类型
#永久添加端口 [root@controller /]# firewall-cmd --permanent --add-port=6666/tcp success [root@controller /]# firewall-cmd --reload success [root@controller /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client mountd nfs rpc-bind samba ssh ports: 6666/tcp #永久删除端口 [root@controller /]# firewall-cmd --permanent --remove-port=6666/tcp success [root@controller /]# firewall-cmd --reload success [root@controller /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client mountd nfs rpc-bind samba ssh ports:
selinux的设置
就是开启一些服务的布尔值,就是要知道跟这个服务有关的布尔值
查看ftpd服务布尔值 [root@controller /]# semanage boolean -l | grep ftpd ftpd_anon_write (off , off) Allow ftpd to anon write ftpd_connect_all_unreserved (off , off) Allow ftpd to connect all unreserved ftpd_connect_db (off , off) Allow ftpd to connect db ftpd_full_access (on , on) Allow ftpd to full access ftpd_use_cifs (off , off) Allow ftpd to use cifs ftpd_use_fusefs (off , off) Allow ftpd to use fusefs ftpd_use_nfs (off , off) Allow ftpd to use nfs ftpd_use_passive_mode (off , off) Allow ftpd to use passive mode [root@controller /]# #修改关闭布尔值 [root@controller /]# setsebool -P ftpd_full_access=off [root@controller /]# semanage boolean -l | grep ftpd ftpd_anon_write (off , off) Allow ftpd to anon write ftpd_connect_all_unreserved (off , off) Allow ftpd to connect all unreserved ftpd_connect_db (off , off) Allow ftpd to connect db ftpd_full_access (off , off) Allow ftpd to full access ftpd_use_cifs (off , off) Allow ftpd to use cifs ftpd_use_fusefs (off , off) Allow ftpd to use fusefs ftpd_use_nfs (off , off) Allow ftpd to use nfs ftpd_use_passive_mode (off , off) Allow ftpd to use passive mode [root@controller /]#
semanage 加上-P的选项就是永久修改,不加上就是临时修改
selinux可以修改文件的上下文类型,布尔值,这些与服务保持类似性,就能够被服务所加载
[root@controller www]# semanage fcontext -a -t httpd_sys_content_t '/www/aaa(/.*)?' [root@controller www]# restorecon -RFv /www/aaa Relabeled /www/aaa from system_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0 Relabeled /www/aaa/index.html from system_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s
15:history-c和history -w
history -c:该命令用于清除历史记录。它会删除当前会话中的所有历史记录,使得当前会话中的历史记录列表为空。这对于临时清除历史记录非常有用,例如在临时关闭终端或会话时。
history -w:该命令用于将当前终端的历史记录保存到指定的文件中。它会将当前会话中的历史记录保存到指定的文件中,以便在其他终端或会话中继续查看和使用。这个命令通常用于将历史记录导出到文件,以便长期保存或共享。您需要指定一个有效的文件路径作为参数,以便将历史记录保存到该文件中。
16:echo命令
选项参数:
-e:使用反斜杠的转义功能生效
-n:输出时,不在行尾换行
echo自带换行
17:grep命令
选项:
-r | 递归的搜索文本的内容 |
-l | 只列出包含内容的文件名 |
-v | 取反 |
运维的操作:
查找报错的日志:
[root@controller httpd]# grep -r error
18:rpm -qc 包名
就是查找安装的包,安装了哪些配置文件