linux shell常用命令简述与linux拒绝root登陆的解决方案

附录
linux命令大全https://man.linuxde.net/
Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

搭建临时的http服务器

python3 -m http.server 9999 #搭建服务器,访问端口为9999

iptables

规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。

-t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。

# 通用匹配:源地址目标地址的匹配
-p:指定要匹配的数据包协议类型;
-s, --source [!] address[/mask] :把指定的一个/一组地址作为源地址,按此规则进行过滤。当后面没有 mask 时,address 是一个地址,比如:192.168.1.1;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0。
-d, --destination [!] address[/mask] :地址格式同上,但这里是指定地址为目的地址,按此进行过滤。
-i, --in-interface [!] <网络接口name> :指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT,FORWARD,PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反。
-o, --out-interface [!] <网络接口name> :指定数据包出去的网络接口。只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。

# 查看管理命令
-L, --list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则。

# 规则管理命令
-A, --append chain rule-specification 在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定。
-I, --insert chain [rulenum] rule-specification 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号。
-D, --delete chain rule-specification -D, --delete chain rulenum 在指定的链 chain 中删除一个或多个指定规则。
-R num:Replays替换/修改第几条规则

# 链管理命令(这都是立即生效的)
-P, --policy chain target :为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的。
-F, --flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则。
-N, --new-chain chain 用指定的名字创建一个新的链。
-X, --delete-chain [chain] :删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链。
-E, --rename-chain old-chain new-chain :用指定的新名字去重命名指定的链。这并不会对链内部造成任何影响。
-Z, --zero [chain] :把指定链,或者表中的所有链上的所有计数器清零。

-j, --jump target <指定目标> :即满足某条件时该执行什么样的动作。target 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链。
-h:显示帮助信息;
参数作用
-P设置默认策略:iptables -P INPUT DROP
-F清空规则链
-L查看规则链
-A在规则链的末尾加入新规则
-I num在规则链的头部加入新规则
-D num删除某一条规则
-s匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d匹配目标地址
-i网卡名称 匹配从这块网卡流入的数据
-o网卡名称 匹配从这块网卡流出的数据
-p匹配协议,如tcp,udp,icmp
–dport num匹配目标端口号
–sport num匹配来源端口号
iptables -L -n - #查看已添加的规则
iptables -P INPUT DROP # 配置默认的不让进
iptables -P FORWARD DROP # 默认的不允许转发
iptables -P OUTPUT ACCEPT # 默认的可以出去
iptables -A INPUT -p all -s 192.168.1.0/24 -j ACCEPT  # 允许机房内网机器可以访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开启80端口,因为web对外都是这个端口
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许被ping
iptables -L -n --line-numbers #将地址全乎转化为ip的形式并且按照序号显示规则
iptables -D INPUT 8 # 删除序号为8的规则
iptables -A INPUT -p tcp -m tcp -s 192.168.0.8 -j DROP  # 屏蔽恶意主机(比如,192.168.0.8

参考文章:iptables

tcpdump

tcpdump -i eth0 #监控eth0网卡的流量
tcpdump host 172.16.250.1 #监控172.16.250.1ip的流量
tcpdump host 172.16.250.1 and 172.16.250.3 #监控这两个ip之间的流量
tcpdump host A and \( B or C \) #监控a与B或者a与C之间的数据包
tcpdump host A not C #监控主机A除了与C通信之外的数据包

学习一个 Linux 命令:tcpdump 命令
tcpdump的用法

strace

跟踪某程序调用的linux系统函数
常用命令:

strace -p [pid]
strace ping 127.0.0.1 #跟踪ping命令执行过程中所有的系统命令
strace -c -p [pid] #跟踪对应pid程序的系统函数并按照执行时间排序。
strace -e open -p [pid] #跟踪对应pid程序调用的open系统函数的执行情况
strace -e poll,select,connect,recvfrom,sendto nc www.news.com 80  #测试服务器链接
strace -e open,access 2>&1 | grep your-filename  #查看某文件有没有被调用

strace命令

mv

mv命令一般有两个用法,第一个是更改文件名:
mv 1.txt 1.html #将1.txt改为1.html
第二个用法,移动文件
mv 1.txt /root/desktop/ #将1.txt移动到桌面

xxd

查看文件的16进制格式的数据,或者将数据转换成ascii码字符。
有一个1.txt,内容为\x4545.

xxd 1.txt #查看文件的16进制格式的数据

在这里插入图片描述

xxd -r -ps 1.txt #还原成字符

在这里插入图片描述

chown

更改文件的所有者

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或–quite或——silent:不显示错误信息;
-h或–no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
–dereference:效果和“-h”参数相同;
–help:在线帮助;
–reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
–version:显示版本信息。

chown -R root:root test

递归处理test文件夹,将文件夹下所有的文件的拥有者都设置为root组的root用户

chattr命令文件权限属性设置

a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。

-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性。

在这里插入图片描述

nl

每一行之前加一个行号并输出
在这里插入图片描述

sed

对文本进行替换,支持正则表达式,下面例子是将文档中对3转化为1。
在这里插入图片描述

sort

排序:cat 1.txt | sort
逆向排序:cat 1.txt | sort -r

systemctl

systemctl enable httpd.service #设置httpd服务开机自启
systemctl disable httpd.service #设置httpd服务关闭开机自启
systemctl status httpd.service #检查服务状态
systemctl is-active httpd.service #看其是否是active状态

uniq

默认去重复

-c 给每一行结果加一个序号

-d 仅显示从富行

-u 仅显示不重复的行

head

只看前十条数据

-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。

pwd

pwd #查看当前工作文件夹路径

tar

tar -zxvf file_name -C behinder #解压文件到当前文件夹下到名为behinder的文件夹内
tar -cvf log.tar fileA #将fileA打包成log.tar,不进行压缩
tar -zcvf log.tar.gz fileA #将fileA打包并且以gzip命令压缩为log.tat.gz文件
tar -jcvf log.tar.bz2 fileA #将fileA打包并且以bzip2命令压缩为log.tat.bz2文件
tar -ztvf log.tar.gz #查看压缩包内有什么文件

tail

tail 1.txt 查1.txt最后十条数据

tail -f /var/log/syslog #查看最后十条系统日志

mount

mount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。

mount /dev/vda1 /nuoyan
将/edv/vda1 挂在到当前目录下的nuoyan,这样子的话修改nuoyan就相当于修改/edv/vda1。

nc

-w 1 #设置连接超时时间为1

-v 显示命令运行过程与结果

-l 999 #监听端口为999

传送文件

发送方:nc -l 999 < 1.txt

接收方:nc 发送方ip 999 >1.txt

端口扫描

nc -v -w 1 ip 1-10 #查看指定ip的1-100端口开放情况
在这里插入图片描述

zip

#将/home/Blinux/html/这个目录下所有文件和文件夹打包为当前目录下的html.zip
dzip -q -r html.zip /home/Blinux/html

#上面的命令操作是将绝对地址的文件及文件夹进行压缩,以下给出压缩相对路径目录,比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果:
zip -q -r html.zip html

#比如现在我的html目录下,我操作的zip压缩命令是:
zip -q -r html.zip *

nodejs

node.js安装后要执行的操作:ln -s /usr/local/myapp/nodejs/bin/npm /usr/local/bin/

gedit

gedit #打开一个文本框来编辑文本

setsid

setsid nohup python3 test.py & #代表这个脚本不会随着命令行等关闭而关闭,会一直在后台运行

ls

ls -alht #查看当前目录下所有文件大小,-t是按修改时间排序
ls -la #查看所有文件权限

-rwx rwx rwx
d开头代表是文件夹,-开头代表普通文件,剩下九个字母分为三组,分别对应拥有者权限,拥有者用户的组内其他用户的权限,其他用户的权限

awk

awk -F: ‘$3==0{print $1}’ /etc/passwd
#以 ':'为分隔符读取/etc/passwd的数据,当第三个部分等于0的时候,输出第一个部分。
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

$n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。
$0 这个变量包含执行过程中当前行的文本内容。
[N] ARGC 命令行参数的数目。
[G] ARGIND 命令行中当前文件的位置(从0开始算)。
[N] ARGV 包含命令行参数的数组。
[G] CONVFMT 数字转换格式(默认值为%.6g)。
[P] ENVIRON 环境变量关联数组。
[N] ERRNO 最后一个系统错误的描述。
[G] FIELDWIDTHS 字段宽度列表(用空格键分隔)。
[A] FILENAME 当前输入文件的名。
[P] FNR 同NR,但相对于当前文件。
[A] FS 字段分隔符(默认是任何空格)。
[G] IGNORECASE 如果为真,则进行忽略大小写的匹配。
[A] NF 表示字段数,在执行过程中对应于当前的字段数。
[A] NR 表示记录数,在执行过程中对应于当前的行号。
[A] OFMT 数字的输出格式(默认值是%.6g)。
[A] OFS 输出字段分隔符(默认值是一个空格)。
[A] ORS 输出记录分隔符(默认值是一个换行符)。
[A] RS 记录分隔符(默认是一个换行符)。
[N] RSTART 由match函数所匹配的字符串的第一个位置。
[N] RLENGTH 由match函数所匹配的字符串的长度。
[N] SUBSEP 数组下标分隔符(默认值是34)。

rm

rm 1.txt #删除1.txt
rm -rf ~/Desktop/demo #强制删除demo文件夹

nohup

nohup ./teamserver 47.x.x.x password c2.profile &
#将./teamserver 47.x.x.x password c2.profile这条命令放在后台执行

jobs

jobs -l #查看后台任务列表,并显示任务号

fg

fg %1 #将任务号为1的任务放在前台执行

control +z/c

control + z # 暂停当前任务并放到后台
control + c #终止当前任务

bg

bg %1 #将任务号为1的后台任务在后台继续执行,一般在使用了control+z命令后使用

cp

cp mota.py ~/Desktop #将mota.py文件复制到桌面

wget

wget https://download.oracle.com/test.txt #将文件下载到当前目录

rdesktop

rdesktop 192.168.123.12:3389 #kali上使用这个命令可以进行rdp连接指定的windows电脑

ps

ps aux 查看目前运行的所有程序 回显有user 跟 pid
a:显示现行终端机下的所有程序,包括其他用户的程序。
u:以用户为主的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
f: 显示更详细的进程信息
在这里插入图片描述

netstat

netstat -anplt
netstat -ntlp #显示当前开启端口
-a或–all:显示所有连线中的Socket;
-n或–numeric:直接使用ip地址,而不通过域名服务器;
-p或–programs:显示正在使用Socket的程序识别码和程序名称;
-l或–listening:显示监控中的服务器的Socket;
-t或–tcp:显示TCP传输协议的连线状况;
-o或–times:显示计时器
在这里插入图片描述

lsof

常用参数:
lsof -p <进程号>:列出指定进程号所打开的文件;
lsof -i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )

curl

curl ifconfig.me #查看本机的外网ip

SCP命令

scp是安全的文件拷贝,基于ssh的登录

假定你想把本地计算机/home下的一个名为a.tar.tz的文件拷贝到远程服务器192.168.0.2上的/home/tmp。而且你在远程服务器 上的帐号名为root。可以用这个命令:
scp /home/a.tar.tz root@192.168.0.2:/home/tmp/

如果把文件从远程机器拷贝到本机当前目录用这个命令:
scp root@192.168.0.2:/home/a.tar.tz

拷贝远程机器的整个目录下的文件
scp -r root@192.168.0.2:/home/* ./

拷贝远程机器的整个目录到本机的指定文件夹内
scp -r root@120.55.194.145:/root/123 C:\Users\Admin\Desktop\csdn_increase_vister-master

last

显示用户最近登陆情况
在这里插入图片描述

w

显示当前登陆用户的列表
在这里插入图片描述

top

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92
Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie
Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers
Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached

解释:

top - 09:44:56[当前系统时间],
16 days[系统已经运行了16天],
1 user[个用户当前登录],
load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
143 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用CPU百分比],
0.1%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[],
0.0%st[],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap: 5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量],

lastlog

lastlog命令用于显示系统中所有用户最近一次登录信息。
在这里插入图片描述

用户添加与删除

先创建用户再加入组:
useradd testuser #创建用户testuser
passwd testuser #给已创建的用户testuser设置密码
说明:新创建的用户会在/home下创建一个用户目录testuser
userdel testuser #删除用户testuser
rm -rf testuser #删除用户testuser所在目录
gpasswd -A root test #将root用户指定为test组的管理员
gpasswd -a zhangsan test#将zhangsan加到test组,并且同时zhangsan也属于以前的组
gpasswd -d zhangsan test #将zhangsan从test中移出

新建用户直接加入组:
groupadd developers #添加一个用户组
useradd -g developers testuser
useradd -G admins,ftp,www,developers cnzhx
#指定用户所属的附加群组
usermod -a -g developers testuser 将用户不从自己原组中移出来并且添加到deve组中,若不加-a选项,则是将用户从原组中移动到新组。

arp

探测arp列表确定内网主机分布
在这里插入图片描述

其他

nautilus #打开图形化文件夹

find / -type f -name ‘*.txt’ | xargs grep “123” #全局查找内容含有123的txt文件

nslookup -type=mx baidu.com 8.8.8.8
#指定dns服务器为8.8.8.8来查询百度的mx记录

/etc/init.d/apache2 start #启动apache2服务
java -XstartOnFirstThread -jar Behinder.jar #启动冰蝎

重启网卡 /etc/init.d/networking restart
查看网关 route -n

echo -n “fff” | base64 #将fff用base64编码进行转换并输出结果

附录:linux中/etc/passwd文件简述
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。但是Linux /etc/passwd文件中都有些什么内容呢?

   root:x:0:0:root:/root:/bin/bash

  bin:x:1:1:bin:/bin:/sbin/nologin

  daemon:x:2:2:daemon:/sbin:/sbin/nologin

  desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin

  mengqc:x:500:500:mengqc:/home/mengqc:/bin/bash

从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
  用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

口令(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

主目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
参考:/etc/passwd详解

linux拒绝root登陆的解决方案

1.查看ssh服务状态
ssh status
2.修改配置文件
#vim /etc/ssh/sshd_config

#PermitRootLogin prohibit-password
PermitRootLogin yes

#PasswordAuthentication yes
PasswordAuthentication yes

3.启动ssh服务
ssh start


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页