Linux

Linux

常用命令

su和sudo

Sudo【superuser do 超级使用者】

关于su和sudo:

su 命令可以在一个登陆 session 下切换不同用户(通常是root).意思就是不需要退出当前用户的登录而切换到新用户。

su username

username 为空默认切换到root用户. 输入要登录用户密码即可。

另一种切换root用户的方法就是 su –

- 必须作为 su 的最后一个参数. 而 -l -login 没有该限制。

su 和 su - 进入的目录是不一样的

su 会保持前者的用户环境, 而 su - 会新建一个目的用户的环境

su 会保持当前用户的环境, 因为在某些情况下, 使用当前用户比管理员账户能更好的解决问题. 比如重现或者debug问题时,在当前用户环境下更高效

当然 su 在很多情况下是不建议使用的, 或者说是相当危险的. 因为 root 用户要在当前用户的环境下操作, 而不是自己的环境. 因为这会给非 root 用户 更改系统文件或数据的权限

Sudo和su区别:

最大的不同就是所需要的密码不同: sudo 需要的是当前用户的密码,而 su 命令需要的是 管理员的密码.

Sudo只是一个临时获取的root权限

sudo 命令比 su 命令更安全. su 命令需要其他用户也知道 root 密码, 而 sudo 只需要配置 sudoers file 即可, 而且可以随时删除特定用户的权限.

hhy@LAPTOP-3ITN966I:~$ su

Password:

root@LAPTOP-3ITN966I:/home/hhy# su - # 转到~目录,下面什么也没有

root@LAPTOP-3ITN966I:~# ls -l /etc/sudoers

-r–r—– 1 root root 755 Jan 18 2018 /etc/sudoers

root@LAPTOP-3ITN966I:~# ls

root@LAPTOP-3ITN966I:~#

ifconfig**一般需要root权限**

hhy@LAPTOP-3ITN966I:~$ ifconfig eth0 up

SIOCSIFFLAGS: Operation not permitted

` ssh登陆linux服务器操作``?```

XX先不了解。像是配置git。

root@LAPTOP-3ITN966I:/home/hhy# cat /etc/sudoers

#

# This file MUST be edited with the ‘visudo’ command as root.

#

# Please consider adding local content in /etc/sudoers.d/ instead of

# directly modifying this file.

#

# See the man page for details on how to write a sudoers file.

#

Defaults env_reset

Defaults mail_badpass

Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin”

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification

root ALL=(ALL:ALL) ALL

用户账号 登陆者来源主机名 =**(能够切换的身份)** 可运行的命令

# Members of the admin group may gain root privileges

%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command

%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on “#include” directives:

#includedir /etc/sudoers.d

如何在sudoers文件中添加

sudoers file 里面添加该用户?

用root权限 可以改变文件权限,然后添加进去后再修改回权限。

在root ALL=(ALL:ALL) ALL 下面添加一行,yourName 就是你的用户名:

yourName ALL=(ALL)AL

创建用户:

image-20211214000803250

make

https://www.cnblogs.com/hazir/p/linux_make_examples.html

关于Linux中的用户操作:

(1)通过/etc/passwd 来查看用户相关信息:

1、目前自己创建的用户:

root@LAPTOP-3ITN966I:/home/hhy# cat /etc/passwd

hhy : x:1000:1000:,,,:/home/hhy:/bin/bash

snort : x:999:1001:SNORT_IDS:/home/snort:/sbin/nologin

B19070208: x :1001:1002::/home/B19070208:/bin/sh

s01: x :1002:1003::/home/s01:/bin/sh

s02: x :1003:1003::/home/s02:/bin/sh

举例解析:

snort: x :999:1001:SNORT_IDS:/home/snort:/sbin/nologin

用户名(snort)

密码(x) 存储在/etc/shadow

用户 ID(999):代表用户的 ID 号,每个用户都要有一个唯一的 ID 。UID 号为 0 的是为 root 用户保留的,UID 号 1 到 99 是为系统用户保留的,UID 号 100-999 是为系统账户和群组保留的。

群组 ID (1001):代表群组的 ID 号,每个群组都要有一个唯一的 GID ,保存在 /etc/group文件中。

用户信息(SNORT_IDS):代表描述字段,可以用来描述用户的信息

家目录(/home/snort):代表用户的家目录。

Shell(/sbin/nologin):代表用户使用的 shell 类型。

2、目前创造的组:

如何查看所有的组啊?

hhy: x :1000:

snort: x :1001:

B19070208: x :1002:

student: x :1003:

3、useradd和adduser的区别:

useradd是一个Linux命令,但是它提供了很多参数在用户使用的时候根据自己的需要进行设置;而adduser是一个perl 脚本,在使用的时候会出现类似人机交互的界面,提供选项让用户填写和选择,这个命令比起useradd来说比较简单,也比较傻瓜。

区别1:adduser比较人性化,不是Linux命令。

区别2:使用shell不同

adduser命令有规范的,以下是不规范的命名格式:

root@LAPTOP-3ITN966I:/home/hhy# adduser B

adduser: Please enter a username matching the regular expression configured

via the NAME_REGEX[_SYSTEM] configuration variable. Use the `–force-badname’

option to relax this check or reconfigure NAME_REGEX.

/bin/sh:

/bin/bash:

此外,adduser好像会在home下面帮你创建一个文件夹,不知道useradd会不会???

目前推荐使用adduser 【perl脚本的】

清除Linux历史命令:

history-w

就是用内存中的历史命令覆盖 .bash_histroy 文件的内容,这样,即使 Shell 重新加载也加载不到任何命令了,因为此时 .bash_history 文件中已经空空如也了。

修改root密码

1
2
3
4
5
6
7
hhy@LAPTOP-3ITN966I:~$ sudo su root
[sudo] password for hhy:
root@LAPTOP-3ITN966I:/home/hhy# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@LAPTOP-3ITN966I:/home/hhy#
1
2
root@LAPTOP-3ITN966I:/bin# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash # 默认使用bash

gcc编译

1
2
3
4
5
b19070208@LAPTOP-3ITN966I:~/linux$ gcc -c  exp31.c
b19070208@LAPTOP-3ITN966I:~/linux$ gcc -o exp31 exp31.o
b19070208@LAPTOP-3ITN966I:~/linux$ ls
exp31 exp31.c exp31.o
b19070208@LAPTOP-3ITN966I:~/linux$ ./exp31

为什么exp31可以直接执行?已经有x执行权限了。

删除非空文件

删除一个不为空的文件夹就是 rm -rf XXX

其中-r recursion表示向下递归,不管多少级目录,一并删除。

-f force表示直接强行删除,不做任何提示。

注意:不是rmdir -rf XXX

shell编程

关于变量问题:

(1)目前好像是加单引号,双引号,以及不加,输出结果相同。shell中是不指定数据类型的,根据参与的运算决定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@server ~]# a=hello
[root@server ~]# echo $a
hello
[root@server ~]# b='hello'
[root@server ~]# echo $b
hello
[root@server ~]# c="hello"
[root@server ~]# echo $c
hello

#换成数字:也是没有什么区别的
root@LAPTOP-3ITN966I:/home/hhy# var1='1'
root@LAPTOP-3ITN966I:/home/hhy# expr $var1 + 1
2
root@LAPTOP-3ITN966I:/home/hhy# var1="1"
root@LAPTOP-3ITN966I:/home/hhy# expr $var1 + 1
2
root@LAPTOP-3ITN966I:/home/hhy# expr $var1+1
1+1

所以定义变量的时候,单双引号以及啥也不加会有什么区别呢???

(2)变量的计算需要用expr命令,而且表达式运算符和数字必须有空格。

关于运算符
运算符号 含义
+,- 加法,减法
,/,% 乘,除,取余
*
幂运算
++,– 自增加,自减少
<, <=, >, >= 比较符号
=, +=, -=, *=, /=, %= 赋值运算
shell中常用的运算命令
运算操作与运算命令 含义
(( )) 用于整数运算
let 用于整数运算,与(())类似
expr 用于整数运算,功能相对较多
bc linux下的计算器,适合小数及整数运算
$[ ] 用于整数运算

常见错误

E45: ‘readonly’ option is set (add ! to override)

不修改文件,直接退出 :q!

安装

rpm -qa | grep openssl #[搜索指定rpm包是否安装]

rpm:RPM是以一种数据库记录的方式将所需要的软件安装到Linux主机的一套管理程序

rpm -ivh 软件包名 #安装软件包并显示安装进度

rpm -qa 查询已经安装那些软件包

grep是“global search regular expression and print out the line”的简称,意思是全面搜索正则表达式,并将其打印出来。这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令。

1
rpm -e --justdb --nodeps <yourpackage>

rm -rf openssl-fips-2.0.16 强力删除openssl-fips-2.0.16

安装Linux桌面后终端无法打开 将系统语言改成英文

hexdump是Linux下的一个二进制文件查看工具,可以将二进制文件转换为ASCII、10进制、16进制或8进制进行查看。

常用选项:

-b 将每个字节显示为8进制
-c 将每个字节显示为ASCII字符
-C 每个字节显示为16进制和相应的ASCII字符

-d 每两个字节显示为10进制
-o 每两个字节显示为8进制
-x 每两个字节显示为16进制

网络知识

“ifconfig是用在LINUX或UNIX中的,IPCONFIG是用在WINDOWS中的,都是用来显示网卡信息的,只不过不同系统用不同的命令而已!!!”

192.168.2.0/24

192.168.2.0换成32位二进制,四组,每组8位

/24 表示前24位不变

shell命令行

补充知识:

Linux只有根目录,没有C盘,D盘这些概念,要访问需要挂载

桥接方式可以正常上网,

桌面版有界面

git命令

做web开发要用图形界面。

Linux采用的是树形结构。根目录

硬件对应的就是一个文件。

比如说打印机,虚拟文件系统,Linux将硬件和一个文件对应

Linux比较稳定,比windows稳定。

shell是在与Linux交互的界面。

shell维护一个命令库

shell的类型:

shell负责和Linux内核进行交互。

shell命令分类:

  • 外部命令
  • 内部命令

shell的注释

单行注释和多行注释

单行注释:#

多行注释:

1
2
3
$ :<<!
> #被注释的内容
> !

删除操作

1
2
rm -rf *   #代表删除当前目录下所有文件 rm -rf XX可以删除指定文件
rm -rf .git # 删除.git文件

git相关

1
ssh-keygen -t rsa -C "邮箱@example.com"

获得命令帮助

$ man ls # 用manual,表示用man命令来获取ls 命令的帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ubuntu安装wget
apt-get update
apt-get install wget
wget --version
#Ubuntu 里的 apt 工具
#apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

#tar
tar xvfz daq-2.0.6.tar.gz #xvfz

# pwd 查看目录 print working directory

# --enable 是启用软件源码包自带 --enable-包名[=arg],但是默认不启用的功能模块。
# 安装snort
tar -xvzf snort-2.9.11.tar.gz
cd snort-2.9.11
./configure --enable-sourcefile
make
sudo make install

解析tar命令行

-x 或者–extract或者–get 从备份中还原文件

-v 或者–verbose 显示指令执行过程

-f <备份文件> 指定备份文件

-z 或者–gzip或者–ungzip 通过gzip指令处理备份文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# && 表示前一条命令执行成功时,才执行后一条命令。

#Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一。管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题。

#ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig
$ ldconfig
$ ln -s /usr/local/bin/snort /usr/sbin/snort
$ snort -V
,,_ -*> Snort! <*-
o" )~ Version 2.9.18.1 GRE (Build 1005)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.8.1
Using PCRE version: 8.39 2016-06-14
Using ZLIB version: 1.2.11
#表明安装成功

#添加用户组 ,删除:groupdel
$ sudo groupadd snort
#添加用户 ,删除:userdel
$ sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

补充:

-g 分到指定的用户组

-c(comments) 备注,加上备注文字

-r 建立系统账号(root)

-s 指定用户登录后使用的shell

小知识:

adduser和useradd的区别:

adduser: 会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。

useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

snort的相关文件:

etc下面:

classification.config    : 描述了Snort理解的攻击分类类型(将规则分组为这些类型的分类),例如木马活动或系统调用检测。分类列表可以在Snort手册的第3.4.6节中找到
file_magic.conf            : 描述了用于标识文件类型的规则
reference.config        : 包含提供有关警报的更多信息的规则中引用的URL
snort.conf                : 是Snort的配置文件,它告诉Snort资源的位置,以及如何输出警报等
threshold.conf            : 允许您控制生成警报所需的事件数,这有助于抑制噪声警报    
gen-msg.map                : 告诉Snort哪个规则使用哪个预处理器,更多信息在这里。
unicode.map                : 提供Unicode语言和标识符之间的映,nSnort需要此文件才能启动。
1
2
3
4
5
6
# 它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件
ln -s /usr/local/bin/snort /usr/sbin/snort

#sudo su 运行sudo命令给su命令提权,运行su命令。要求执行该命令的用户必须在sudoers中才可以。
sudo su
#请输入密码:

小知识:

sudo su 和 su区别:

su是申请root用户,ubuntu,默认没有设置root用户的密码,所以需要我们先使用sudo passwd root设置root用户密码。

sudo su是转换成管理员

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 设置root的UNIX的密码,此处设置为123
hhy@LAPTOP-3ITN966I:/$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
# sudo su让输入user的密码
hhy@LAPTOP-3ITN966I:/$ sudo su
root@LAPTOP-3ITN966I:/# exit
exit
# su输入UNIX的密码
hhy@LAPTOP-3ITN966I:/$ su
Password:
root@LAPTOP-3ITN966I:/# exit
#我是谁
root@LAPTOP-3ITN966I:/# whoami
root

-f 强制force

-r 递归recursive

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# #号表示超级管理员,$号表示基本用户
# Ubuntu中sudo命令,默认创建者就是超级管理员
# centos进去直接就是超级管理员#
hhy@LAPTOP-3ITN966I:~$ ls -a #看到隐藏文件
. .bash_history .bashrc .config .profile .vim .vscode-server daq-2.0.7 snort-2.9.18.1
.. .bash_logout .cache .local .sudo_as_admin_successful .viminfo .wget-hsts helloworld

hhy@LAPTOP-3ITN966I:/$ ls -l
total 416 #指当前目录下所有文件所占用的空间总和,单位为k。可以使用ls –lh或者ls –alh查看。
#属性.硬链接数.拥有者.所在组.占空间.最近访问时间.文件名
drwxr-xr-x 2 root root 4096 Apr 10 11:03 bin
drwxr-xr-x 2 root root 4096 Aug 22 2020 boot
drwxr-xr-x 8 root root 2720 Sep 6 21:24 dev
drwxr-xr-x 93 root root 4096 Sep 6 21:24 etc
drwxr-xr-x 3 root root 4096 Apr 10 10:39 home
-rwxr-xr-x 3 root root 632048 Jun 19 12:37 init
drwxr-xr-x 20 root root 4096 Apr 10 11:05 lib
drwxr-xr-x 2 root root 4096 Apr 10 11:03 lib64
drwx------ 2 root root 16384 Apr 11 2019 lost+found
drwxr-xr-x 2 root root 4096 Aug 22 2020 media
drwxr-xr-x 7 root root 4096 Apr 10 10:38 mnt
drwxr-xr-x 2 root root 4096 Aug 22 2020 opt
dr-xr-xr-x 117 root root 0 Sep 6 21:24 proc
drwx------ 2 root root 4096 Sep 6 18:46 root
drwxr-xr-x 8 root root 160 Sep 6 21:24 run
drwxr-xr-x 2 root root 12288 Apr 10 11:03 sbin
drwxr-xr-x 2 root root 4096 Jul 10 2020 snap
drwxr-xr-x 2 root root 4096 Aug 22 2020 srv
dr-xr-xr-x 11 root root 0 Sep 6 21:24 sys
drwxrwxrwt 5 root root 4096 Sep 6 12:28 tmp
drwxr-xr-x 10 root root 4096 Aug 22 2020 usr
drwxr-xr-x 13 root root 4096 Aug 22 2020 var

drwxr-xr-x

directory+ 三个一组(三组)

第一组:文件所属者

第二组:

第三组:

image-20210923092345792

修改权限:

chmod

1
[root@localhost Desktop]# chmod 777 demo

安装snort

1
2
3
4
5
6
7
8
9
10
11
12
# 从根目录开始 /etc/snort/
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /etc/snort
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /etc/snort/rules
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /etc/snort/rules/iplists
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /etc/snort/preproc_rules
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /usr/local/lib/snort_dynamicrules
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /etc/snort/so_rules
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo touch /etc/snort/rules/iplists/default.balcklist
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo touch /etc/snort/rules/iplists/default.whitelist
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo touch /etc/snort/rules/local.rules
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /var/log/snort
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo mkdir /var/log/snort/archived_logs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#利用 chmod 可以藉以控制档案如何被他人所调用。只能文件属主或特权用户才能使用该功能来改变文件存取模式。
#chmod [-cfvR] [--help] [--version] mode file...
#调整权限
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chmod -R 5775 /etc/snort
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chmod -R 5775 /var/log/snort
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chmod -R 5775 /var/log/snort/archived_logs
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chmod -R 5775 /etc/snort/so_rules
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules

#Linux chown(英文全拼:change owner)命令
#改变文件属主
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chown -R snort:snort /etc/snort
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chown -R snort:snort /var/log/snort
root@LAPTOP-3ITN966I:/home/hhy/snort-2.9.18.1# sudo chown -R snort:snort

chmod

chown

蓝色的是目录文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
root/
bin # 所有用户可用执行文件
sbin #系统管理员用的执行文件
boot/
dev #所有设备文件,包括字符设备等
etc / #系统配置文件
......
snort/
preproc_rules
rules/
iplists/
default.balcklist
default.whitelist
local.rules
so_rules
root
usr/
bin #用户命令工具
games
include #C头文件
lib #函数库
local
sbin #系统命令工具
share
src #源代码目录
mnt #挂载点Mount point
home #普通用户的默认管理目录
lib # 共享库,供/bin和/sbin的文件使用
lost+found
proc #
run
snap
sys
init
lib64
media
opt
srv
tmp
var
1
2
3
4
5
6
wget https://github.com/snort3/libdaq/archive/refs/tags/v3.0.4.tar.gz -O libdaq-3.0.4.tar.gz
# 竟然是大写的O
# -O啥意思 file

sudo apt-get install -y
# -y, --yes, --assume-yes 默认都yes

到底有啥用:

1
2
sudo ldconfig
#ldconfig命令的用途:主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。
文章目录
  1. 1. Linux
    1. 1.1. 常用命令
      1. 1.1.1. su和sudo
      2. 1.1.2. make
      3. 1.1.3. 关于Linux中的用户操作:
      4. 1.1.4. 清除Linux历史命令:
      5. 1.1.5. 修改root密码
      6. 1.1.6. gcc编译
      7. 1.1.7. 删除非空文件
    2. 1.2. shell编程
    3. 1.3. 常见错误
      1. 1.3.1. 安装
    4. 1.4. 网络知识
    5. 1.5. shell命令行
      1. 1.5.0.1. shell的注释:
      2. 1.5.0.2. 删除操作
      3. 1.5.0.3. git相关
  2. 1.6. 安装snort
,