root password

银河麒麟系统(*#V10.1版本*)

切换为root

因为root密码会一直改变

1
2
3
kylin@kylin:~/桌面$sudo -i 
[sudo]kylin的密码:此处输入普通用户kylin的密码856413ASF
root@kylin:~/桌面#

允许以root用户的身份登录到系统,并使用root的环境变量和家目录

apt-get指令管理安装包

1
2
3
4
5
6
sudo apt-get install XXX
sudo apt-get remove XXX 卸载,值得注意的是,remove仅仅卸载软件,但是并不卸载配置文件
sudo apt-get purge XXX 卸载指令,同时卸载相应的配置文件
sudo apt-get autoremove
sudo apt-get update 将所有包的来源更新,也就是提取最新的包信息
sudo apt-get upgrade 一般执行在apt-get update之后,它的作用是将系统中旧版本的包升级成最新的,慎用!因为在linux下,由于大部分为非商业软件,所以稳定性并没有得到很好的验证

PS:

sudo apt-get autoremove

在卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包。

看起来非常完美的指令,但是建议慎用!!这条指令很可能将你要用的依赖包同时卸载,有时候你的安装包并没有通过apt-get指令来管理,apt-get管理工具不会加入这些包的信息,所以在检索包的依赖关系时可能出问题.

又或者是另一种情况:举个例子:在安装某个包时,这个包依赖git,但是git并非你主动下载的,而是作为依赖下载的,包安装完之后系统可能就会提示git作为依赖不再需要使用,它并不知道你是不是正在使用这个软件包。

/etc/apt/sources.list

mysql

1
mysql -u root -p   #登录mysql

mysql passwd:856413

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SHOW VARIABLES LIKE 'validate_password%';   #查看密码策略
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 6 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; #修改root密码

查看mysql状态service mysql status

退出\q

1
2
3
4
5
6
7
8
9
10
11
12
13
create database dbname;  #创建dbname数据库
show databases; #显示数据库
show tables; #显示数据表
use dbname; #选择dbname数据库

create table tablename( #创建数据表
column1 datatype constrains,
column2 datatype constrains,
...
)
create table student( id varchar(10) primary key, name varchar(30), sex int, phone_number varchar(20) );


查看所有对象的详细信息和注释(表、视图、函数等):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#1.表、视图、字段的详细信息、注释说明
#1.1.表、视图
select * from information_schema.tables where table_schema in ('test') order by table_schema,table_type,table_name;
select * from information_schema.views where table_schema in ('test') order by table_schema,table_name;
#1.2.字段
select * from information_schema.columns where table_schema in ('test') order by table_schema,table_name,ordinal_position;
#2.表、视图的字段简要信息
#2.1超级简要
describe student; #非常简要
describe student_view;
#2.2.简要。比describe多点
show full columns from student;
show full columns from student_view;
#3.函数、存储过程
select * from information_schema.routines where routine_schema in ('test') order by routine_schema,routine_type,routine_name;

#student,student_view,test

查看所有对象DDL定义语句(表、视图、函数等)

1
2
3
4
5
6
7
8
#1.2.查看所有对象DDL定义语句(表、视图、函数等)
show create table student;
show create view student_view;
show create function get_stu_name;
show create procedure my_procedure;
show create database test;
show create tablespace ***;
show create user root;

SSH

虚拟机网络为NAT模式

sudo apt install openssh-server——安装ssh

sudo service ssh restart——重启ssh服务器

sudo vi /etc/ssh/sshd_config——修改配置文件

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#       $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

Port 22 #默认22端口
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin yes #允许root用户通过SSH登录
StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server

查看SSH服务状态是否正常运行/etc/init.d/ssh status或者service ssh status

查看端口表netstat -int或者看netstat -aptn | grep 22

nginx

tomcat

db2表空间不会自动增加,需要手动更改存储空间大小

集群

zookper、nginx、redis

NAS(Network Attached Storage)

MQ(Message Queue)

awk、grep、sed

awk、grep、sed是Linux三剑客,这三个工具经常被联合使用,可以实现强大的文本处理和数据处理功能。

  1. grepgrep命令用于在文件中搜索指定的模式或文本。它可以根据正则表达式匹配文本,并输出匹配的行。grep命令支持多种选项,如忽略大小写、递归搜索、显示行号等。通过grep命令,可以快速筛选出包含特定模式的行,进行文本的过滤和查找。
  2. sedsed命令是一个流式文本编辑器,用于对文本进行替换、删除、插入等操作。它通过读取输入流的方式,逐行处理文本,并输出处理后的结果。sed命令使用基于正则表达式的模式匹配和替换规则,可以对文本进行复杂的编辑操作。sed命令支持多种选项和命令,如替换、删除、插入、打印等,通过组合不同的命令和选项,可以实现对文本的灵活处理。
  3. awkawk是一种强大的文本处理工具,它可以根据指定的模式和动作对文本进行处理和分析。awk命令将文本按行分割成字段,并提供了丰富的内置函数和语法,可以对字段进行操作和计算。awk命令的主要思想是基于模式和动作的规则,通过匹配模式来选择要执行的动作,从而实现对文本的处理。awk命令可以用于数据提取、数据转换、数据统计等多种用途。

这三个工具的组合使用可以实现复杂的文本处理和数据处理任务。通常的使用方式是,先使用grep命令筛选出需要的行,然后使用sed命令对选定的行进行编辑和转换,最后使用awk命令对处理后的数据进行进一步的分析和计算。这种组合使用的方式可以大大提高文本处理的效率和灵活性,是Linux系统中非常重要和常用的工具集。

awk

awk 是一种强大的文本处理工具,用于在文本文件中进行数据抽取和报告生成。它以逐行处理文本文件的方式工作,将每一行拆分为字段,然后执行用户定义的操作。以下是 awk 命令的一般语法:

1
awk 'pattern { action }' input-file
  • pattern 是用于匹配行的模式。
  • { action } 是在模式匹配时执行的操作。
  • input-file 是输入的文本文件。

这是一个简单的例子,假设有一个包含学生成绩的文本文件(grades.txt),每行格式如下:

1
2
3
Alice 90
Bob 85
Charlie 92

现在,如果我们想输出分数超过 90 的学生,我们可以使用如下 awk 命令:

1
awk '$2 > 90 { print $1, $2 }' grades.txt

这个命令的意思是,如果第二个字段(分数)大于 90,则打印第一个字段(学生姓名)和第二个字段(分数)。在这个例子中,它将输出:

1
2
Alice 90
Charlie 92

接下来,如果你有特定的问题或需求,可以提出来,我会尽力帮助你理解和使用 awk 命令。

grep

grep(Global search Regular Expression and Print out the line)是一个在Linux和Unix系统上常用的命令行工具,用于在文件中搜索指定的模式或文本grep命令的基本语法如下:

1
grep [options] pattern [file...]

其中,pattern表示要搜索的模式或文本,file表示要在其中搜索的文件。如果不指定文件,则默认从标准输入中读取数据。

grep命令的常用选项包括:

  • -i:忽略大小写,不区分大小写地搜索模式。
  • -r:递归地搜索目录下的所有文件。
  • -n:显示匹配行的行号。
  • -v:反向匹配,只显示不匹配的行。
  • -l:只显示包含匹配的文件名,而不显示匹配的具体行。
  • -w:只匹配整个单词,而不是部分匹配。
  • -c:只显示匹配的行数,而不显示具体匹配的内容。

grep命令的一些常见用法示例:

  1. 在文件中搜索指定的模式:
1
grep "pattern" file.txt
  1. 忽略大小写地搜索模式:
1
grep -i "pattern" file.txt
  1. 递归地搜索目录下的所有文件:
1
grep -r "pattern" directory/
  1. 显示匹配行的行号:
1
grep -n "pattern" file.txt
  1. 反向匹配,只显示不匹配的行:
1
grep -v "pattern" file.txt
  1. 只显示包含匹配的文件名,而不显示匹配的具体行:
1
grep -l "pattern" file.txt
  1. 只匹配整个单词,而不是部分匹配:
1
grep -w "word" file.txt
  1. 只显示匹配的行数,而不显示具体匹配的内容:
1
grep -c "pattern" file.txt

以上是grep命令的一些常见用法,它可以帮助我们在文件中快速搜索和筛选出需要的内容。

|

在Linux中,竖线符号(|)被称为管道符号(pipe),它用于将一个命令的输出作为另一个命令的输入。管道符号的功能是将前一个命令的输出传递给后一个命令进行处理,从而实现多个命令的组合和协作。

管道符号的用法如下:

1
command1 | command2

其中,command1command2是两个独立的命令。command1的输出会作为command2的输入进行处理。

管道符号的功能和用途如下:

  1. 过滤和处理数据:通过管道符号,可以将一个命令的输出作为另一个命令的输入,从而实现对数据的过滤和处理。例如,可以使用grep命令过滤文件中的特定行,然后使用awk命令提取和处理这些行的数据。
1
grep pattern file | awk '{ print $1 }'
  1. 实现命令的组合:通过管道符号,可以将多个命令组合在一起,实现更复杂的操作。每个命令都可以专注于自己的功能,通过管道符号将它们连接起来,以实现更复杂的任务。
1
command1 | command2 | command3
  1. 提高效率和灵活性:使用管道符号可以将多个命令串联起来,每个命令只需关注自己的部分,从而提高效率和灵活性。可以根据需要随时添加、删除或修改命令,以满足不同的需求。

  2. 实现输入/输出重定向:通过管道符号,可以将命令的输出重定向到文件或其他设备中。例如,可以将命令的输出重定向到文件中保存,或者将命令的输出传递给其他程序进行处理。

1
command1 | command2 > output.txt

总之,管道符号是Linux中非常强大和常用的功能,它可以将多个命令连接在一起,实现数据的过滤、处理和组合,提高效率和灵活性,同时也实现了输入/输出的重定向。

用户、组

useradd

useradd 命令是用于创建新用户的命令。下面是 useradd 命令的常用参数:

  • -c:用于指定用户的注释信息。
  • -d:用于指定用户的家目录,默认值为 /home/<username>
  • -e:用于指定用户账号的失效日期,格式为 YYYY-MM-DD。
  • -f:用于指定用户账号的失效前警告天数。
  • -g:用于指定用户的初始主组。
  • -G:用于指定用户的附加组。
  • -m:用于自动创建用户的家目录。
  • -M:用于不创建用户的家目录。
  • -n:用于创建用户时,不要将用户的用户名作为主目录名。
  • -r:用于创建系统用户。
  • -s:用于指定用户的默认 shell。
  • -u:用于指定用户的 UID。

除了上述常用参数外,useradd 命令还有一些其他的参数,可以通过 man useradd 命令查看。需要注意的是,使用 useradd 命令时需要具有管理员权限。

示例:可以使用以下命令同时使用 -d-g 参数来创建一个新用户,并指定该用户的家目录和初始主组:

1
sudo useradd -d /home/testuser -g testgroup testuser

以上命令会创建一个名为 testuser 的新用户,将其家目录设置为 /home/testuser,并将其初始主组设置为 testgroup。请注意,使用这些命令时需要管理员权限。

groupadd

groupadd 命令是用于创建新用户组的命令。下面是 groupadd 命令的常用参数:

  • -f:用于强制创建用户组,即使该用户组已经存在。
  • -g:用于指定用户组的 GID。
  • -K:用于指定用户组的默认属性,可以使用 -o 参数覆盖默认属性。
  • -o:用于允许创建 GID 相同的用户组。
  • -p:用于指定用户组的密码,该参数不常用。

除了上述常用参数外,groupadd 命令还有一些其他的参数,可以通过 man groupadd 命令查看。需要注意的是,使用 groupadd 命令时需要具有管理员权限。

示例:演示如何使用 groupadd 命令创建一个新用户组 testgroup,并将其 GID 设置为 1001:

1
sudo groupadd -g 1001 testgroup

以上命令会创建一个名为 testgroup 的新用户组,并将其 GID 设置为 1001。

检查

grep bash /etc/passwd | awk -F ":" '{print $1,$3,$4,$6}'

这个命令的目的是在文件/etc/passwd中搜索包含字符串”bash”的行,并使用awk命令提取并打印匹配行中的第1、第3、第4和第6个字段(以”:”作为分隔符)。

首先,grep命令用于搜索包含字符串”bash”的行。它将从/etc/passwd文件中找到所有包含”bash”的行,并将它们传递给下一个命令。

然后,管道符(|)将grep的输出作为awk命令的输入。awk命令使用-F选项来指定字段分隔符为”:”,然后使用单引号将打印命令括起来。

在打印命令中,$1代表第一个字段(用户名),$3代表第三个字段(用户ID),$4代表第四个字段(组ID),$6代表第六个字段(家目录)。awk命令将这些字段打印出来,每个字段之间用空格分隔。

1
2
3
root@kylin-vmwarevirtualplatform:~# grep bash /etc/passwd | awk -F ":" '{print $1,$3,$4,$6}'
root 0 0 /root
kylin 1000 1000 /home/kylin

因此,这个命令的输出将是那些默认shell为”bash”的用户的用户名、用户ID、组ID和家目录。

/etc/passwd文件

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
41
42
43
root@kylin-vmwarevirtualplatform:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
messagebus:x:101:101::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:102:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:103:104:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:104:105:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-coredump:x:105:106:systemd Core Dumper,,,:/run/systemd:/usr/sbin/nologin
syslog:x:106:111::/home/syslog:/usr/sbin/nologin
avahi-autoipd:x:107:115:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
strongswan:x:109:65534::/var/lib/strongswan:/usr/sbin/nologin
cups-pk-helper:x:110:118:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
lightdm:x:111:119:Light Display Manager:/var/lib/lightdm:/bin/false
sshd:x:112:65534::/run/sshd:/usr/sbin/nologin
xrdp:x:113:121::/run/xrdp:/usr/sbin/nologin
avahi:x:114:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
pulse:x:115:124:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
saned:x:116:126::/var/lib/saned:/usr/sbin/nologin
hplip:x:117:7:HPLIP system user,,,:/run/hplip:/bin/false
colord:x:118:127:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
nvidia-persistenced:x:119:128:NVIDIA Persistence Daemon,,,:/nonexistent:/usr/sbin/nologin
geoclue:x:120:130::/var/lib/geoclue:/usr/sbin/nologin
uuidd:x:121:131::/run/uuidd:/usr/sbin/nologin
kylin:x:1000:1000:kylin:/home/kylin:/bin/bash
mysql:x:122:132:MySQL Server,,,:/nonexistent:/bin/false

文件/etc/passwd中包含字符串”bash”的行通常是指用户的登录shell设置为bash的行。在Linux系统中,/etc/passwd文件是存储用户账户信息的文件,每行代表一个用户账户。每行由多个字段组成,字段之间使用冒号(:)进行分隔。

1
2
3
root@kylin-vmwarevirtualplatform:~# grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
kylin:x:1000:1000:kylin:/home/kylin:/bin/bash

对于包含字符串”bash”的行,可以根据字段的位置和含义来描述其特点:

  1. 第一个字段是用户名:通常是用户登录系统时使用的用户名。
  2. 第二个字段是密码占位符:通常是一个字母x,表示密码存储在其他文件中,而不是直接存储在/etc/passwd文件中。
  3. 第三个字段是用户ID(UID):唯一标识用户的数字值。
  4. 第四个字段是组ID(GID):指定用户所属的主要组。
  5. 第五字段是用户信息字段:通常是用户的全名或注释。
  6. 第六字段是用户主目录:表示用户的主目录路径。
  7. 第七字段是登录shell:表示用户登录时使用的shell程序。

对于包含字符串”bash”的行,第七个字段的值将是”/bin/bash”或类似的路径,表示该用户的登录shell是bash。这是bash作为默认shell的常见设置。

bash

在Linux中,Bash(Bourne Again SHell)是一种命令行解释器(shell)。它是一个广泛使用的开源Unix shell,也是许多Linux发行版和其他Unix-like系统的默认shell。Bash提供了一个用户与操作系统交互的界面,允许用户执行命令、运行脚本以及管理文件系统和其他系统资源。

以下是Bash的一些主要特点和功能:

  1. 命令解释器: Bash是一个命令行解释器,它解释用户输入的命令并将其传递给操作系统执行。

  2. 脚本语言支持: Bash也是一种脚本语言,用户可以编写Shell脚本以自动执行一系列命令。这使得Bash成为系统管理员和开发人员自动化任务的强大工具。

  3. 变量和环境变量: Bash支持变量,用户可以使用变量来存储和检索数据。环境变量是一种特殊类型的变量,对整个系统可见,影响用户会话和程序的行为。

  4. 管道和重定向: Bash允许使用管道(|)将一个命令的输出传递给另一个命令,以及使用重定向符号(>、<)来控制输入和输出流的方向。

  5. 条件语句和循环: Bash支持条件语句(if-else)和循环(for、while),使得用户能够根据条件执行不同的命令或多次执行一组命令。

  6. 通配符和正则表达式: Bash支持通配符(例如,* 和 ?)和正则表达式,用于进行文件名匹配和模式匹配。

  7. 命令历史: Bash会保存用户执行过的命令历史记录,可以通过方向键或者使用history命令来检索和重新执行之前执行过的命令。

  8. 别名: 用户可以使用别名为常用命令创建简短的替代名称,以便更快地输入和执行命令。

总体而言,Bash是一个功能强大的工具,为用户提供了灵活的方式来与Linux系统进行交互和管理。

备份

1
2
3
cp -p /etc/passwd /root/backup/passwd_bak_`date +%Y%M%d`

cp -p /etc/shadow /root/backup/shadow_bak_`date +%Y%M%d`
1
2
3
4
5
6
7

root@kylin-vmwarevirtualplatform:~/backup# cp -p /etc/passwd /root/backup/passwd_bak_`date +%Y%m%d`
root@kylin-vmwarevirtualplatform:~/backup# ll
总用量 12
drwxr-xr-x 2 root root 4096 12月 19 12:48 ./
drwx------ 8 root root 4096 12月 19 12:06 ../
-rw-r--r-- 1 root root 2465 12月 4 16:58 passwd_bak_20231219
1
2
3
4
5
6
7
8
root@kylin-vmwarevirtualplatform:~/backup# cp -p /etc/shadow /root/backup/shadow_bak_`date +%Y%M%d`
root@kylin-vmwarevirtualplatform:~/backup# ll
总用量 16
drwxr-xr-x 2 root root 4096 12月 19 12:53 ./
drwx------ 8 root root 4096 12月 19 12:06 ../
-rw-r--r-- 1 root root 2465 12月 4 16:58 passwd_bak_20231219
-rw-r----- 1 root shadow 1316 12月 4 16:58 shadow_bak_20235319

PS:命令里边日期附近的符号是``

和md文档的这个这个符号一样。

/etc/shadow文件

/etc/shadow 是一个重要的系统文件,它存储了系统用户的加密密码和其他与账户安全相关的信息。这个文件通常只有 root 用户或具有特殊权限的用户才能访问。

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
41
42
43
root@kylin-vmwarevirtualplatform:~# cat /etc/shadow
root:*:19125:0:99999:7:::
daemon:*:19125:0:99999:7:::
bin:*:19125:0:99999:7:::
sys:*:19125:0:99999:7:::
sync:*:19125:0:99999:7:::
games:*:19125:0:99999:7:::
man:*:19125:0:99999:7:::
lp:*:19125:0:99999:7:::
mail:*:19125:0:99999:7:::
news:*:19125:0:99999:7:::
uucp:*:19125:0:99999:7:::
proxy:*:19125:0:99999:7:::
www-data:*:19125:0:99999:7:::
backup:*:19125:0:99999:7:::
list:*:19125:0:99999:7:::
irc:*:19125:0:99999:7:::
gnats:*:19125:0:99999:7:::
nobody:*:19125:0:99999:7:::
_apt:*:19125:0:99999:7:::
messagebus:*:19125:0:99999:7:::
systemd-timesync:*:19125:0:99999:7:::
systemd-network:*:19125:0:99999:7:::
systemd-resolve:*:19125:0:99999:7:::
systemd-coredump:*:19125:0:99999:7:::
syslog:*:19125:0:99999:7:::
avahi-autoipd:*:19125:0:99999:7:::
dnsmasq:*:19125:0:99999:7:::
strongswan:*:19125:0:99999:7:::
cups-pk-helper:*:19125:0:99999:7:::
lightdm:*:19125:0:99999:7:::
sshd:*:19125:0:99999:7:::
xrdp:!:19125:0:99999:7:::
avahi:*:19125:0:99999:7:::
pulse:*:19125:0:99999:7:::
saned:*:19125:0:99999:7:::
hplip:*:19125:0:99999:7:::
colord:*:19125:0:99999:7:::
nvidia-persistenced:*:19125:0:99999:7:::
geoclue:*:19125:0:99999:7:::
uuidd:*:19125:0:99999:7:::
kylin:$6$Rnb7Xyd9Codc11D6$mhH99JHib1QMp5Et.iYBDEmPR8bu6aU5culTmQNb6CC9u6lvibD2ODkZFv222d7jH.S429EvsxKxlUygaUT9E/:19695:0:99999:7:::
mysql:!:19695:0:99999:7:::

/etc/shadow 文件的每一行代表一个用户账户,字段之间使用冒号(:)分隔。

以下是 /etc/shadow 文件的字段说明:

  1. 用户名:表示用户的登录名。
  2. 密码:经过加密的用户密码。在大多数情况下,密码字段会显示为一串乱码或星号(*),表示密码已经被加密并存储在此处。
  3. 最后一次修改密码的日期:表示用户最后一次更改密码的日期,以自 1970 年 1 月 1 日以来的天数计算。
  4. 密码过期天数:表示密码过期之前的天数。如果为 0,则表示密码已经过期。
  5. 密码过期提前警告天数:表示在密码过期之前多少天开始提醒用户更改密码。
  6. 密码不可用天数:表示在用户更改密码后,密码将在多少天内无法使用。
  7. 密码到期日期:表示密码将在哪一天过期,以自 1970 年 1 月 1 日以来的天数计算。
  8. 保留字段:保留供将来使用的字段。

请注意,由于 /etc/shadow 文件涉及到用户密码和账户安全信息,只有具有足够权限的用户才能查看和修改该文件。在进行任何更改之前,请确保你了解系统的安全性和操作规范。

口令策略和口令有效期

/etc/login.defs文件

/etc/login.defs 文件是一个配置文件,它包含了与用户登录相关的默认设置。在 Linux 系统中,该文件用于定义用户账户的默认值和限制。

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
root@kylin-vmwarevirtualplatform:~# cat /etc/login.defs
#
# /etc/login.defs - Configuration control definitions for the login package.
#
# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH.
# If unspecified, some arbitrary (and possibly incorrect) value will
# be assumed. All other items are optional - if not specified then
# the described action or option will be inhibited.
#
# Comment lines (lines beginning with "#") and blank lines are ignored.
#
# Modified for Linux. --marekm

# REQUIRED for useradd/userdel/usermod
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define MAIL_DIR and MAIL_FILE,
# MAIL_DIR takes precedence.
#
# Essentially:
# - MAIL_DIR defines the location of users mail spool files
# (for mbox use) by appending the username to MAIL_DIR as defined
# below.
# - MAIL_FILE defines the location of the users mail spool files as the
# fully-qualified filename obtained by prepending the user home
# directory before $MAIL_FILE
#
# NOTE: This is no more used for setting up users MAIL environment variable
# which is, starting from shadow 4.0.12-1 in Debian, entirely the
# job of the pam_mail PAM modules
# See default PAM configuration files provided for
# login, su, etc.
#
# This is a temporary situation: setting these variables will soon
# move to /etc/default/useradd and the variables will then be
# no more supported
MAIL_DIR /var/mail
#MAIL_FILE .mail

#
# Enable logging and display of /var/log/faillog login failure info.
# This option conflicts with the pam_tally PAM module.
#
FAILLOG_ENAB yes

#
# Enable display of unknown usernames when login failures are recorded.
#
# WARNING: Unknown usernames may become world readable.
# See #290803 and #298773 for details about how this could become a security
# concern
LOG_UNKFAIL_ENAB no

#
# Enable logging of successful logins
#
LOG_OK_LOGINS no

#
# Enable "syslog" logging of su activity - in addition to sulog file logging.
# SYSLOG_SG_ENAB does the same for newgrp and sg.
#
SYSLOG_SU_ENAB yes
SYSLOG_SG_ENAB yes

#
# If defined, all su activity is logged to this file.
#
#SULOG_FILE /var/log/sulog

#
# If defined, file which maps tty line to TERM environment parameter.
# Each line of the file is in a format something like "vt100 tty01".
#
#TTYTYPE_FILE /etc/ttytype

#
# If defined, login failures will be logged here in a utmp format
# last, when invoked as lastb, will read /var/log/btmp, so...
#
FTMP_FILE /var/log/btmp

#
# If defined, the command name to display when running "su -". For
# example, if this is defined as "su" then a "ps" will display the
# command is "-su". If not defined, then "ps" would display the
# name of the shell actually being run, e.g. something like "-sh".
#
SU_NAME su

#
# If defined, file which inhibits all the usual chatter during the login
# sequence. If a full pathname, then hushed mode will be enabled if the
# user's name or shell are found in the file. If not a full pathname, then
# hushed mode will be enabled if the file exists in the user's home directory.
#
HUSHLOGIN_FILE .hushlogin
#HUSHLOGIN_FILE /etc/hushlogins

#
# *REQUIRED* The default PATH settings, for superuser and normal users.
#
# (they are minimal, add the rest in the shell startup files)
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

#
# Terminal permissions
#
# TTYGROUP Login tty will be assigned this group ownership.
# TTYPERM Login tty will be set to this permission.
#
# If you have a "write" program which is "setgid" to a special group
# which owns the terminals, define TTYGROUP to the group number and
# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign
# TTYPERM to either 622 or 600.
#
# In Debian /usr/bin/bsd-write or similar programs are setgid tty
# However, the default and recommended value for TTYPERM is still 0600
# to not allow anyone to write to anyone else console or terminal

# Users can still allow other people to write them by issuing
# the "mesg y" command.

TTYGROUP tty
TTYPERM 0600

#
# Login configuration initializations:
#
# ERASECHAR Terminal ERASE character ('\010' = backspace).
# KILLCHAR Terminal KILL character ('\025' = CTRL/U).
# UMASK Default "umask" value.
#
# The ERASECHAR and KILLCHAR are used only on System V machines.
#
# UMASK is the default umask value for pam_umask and is used by
# useradd and newusers to set the mode of the new home directories.
# 022 is the "historical" value in Debian for UMASK
# 027, or even 077, could be considered better for privacy
# There is no One True Answer here : each sysadmin must make up his/her
# mind.
#
# If USERGROUPS_ENAB is set to "yes", that will modify this UMASK default value
# for private user groups, i. e. the uid is the same as gid, and username is
# the same as the primary group name: for these, the user permissions will be
# used as group permissions, e. g. 022 will become 002.
#
# Prefix these values with "0" to get octal, "0x" to get hexadecimal.
#
ERASECHAR 0177
KILLCHAR 025
UMASK 022

#
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 1000
UID_MAX 60000
# System accounts
#SYS_UID_MIN 100
#SYS_UID_MAX 999

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
#SYS_GID_MIN 100
#SYS_GID_MAX 999

#
# Max number of login retries if password is bad. This will most likely be
# overriden by PAM, since the default pam_unix module has it's own built
# in of 3 retries. However, this is a safe fallback in case you are using
# an authentication module that does not enforce PAM_MAXTRIES.
#
LOGIN_RETRIES 5

#
# Max time in seconds for login
#
LOGIN_TIMEOUT 60

#
# Which fields may be changed by regular users using chfn - use
# any combination of letters "frwh" (full name, room number, work
# phone, home phone). If not defined, no changes are allowed.
# For backward compatibility, "yes" = "rwh" and "no" = "frwh".
#
CHFN_RESTRICT rwh

#
# Should login be allowed if we can't cd to the home directory?
# Default in no.
#
DEFAULT_HOME yes

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local

#
# Enable setting of the umask group bits to be the same as owner bits
# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is
# the same as gid, and username is the same as the primary group name.
#
# If set to yes, userdel will remove the user's group if it contains no
# more members, and useradd will create by default a group with the name
# of the user.
#
USERGROUPS_ENAB yes

#
# Instead of the real user shell, the program specified by this parameter
# will be launched, although its visible name (argv[0]) will be the shell's.
# The program may do whatever it wants (logging, additional authentification,
# banner, ...) before running the actual shell.
#
# FAKE_SHELL /bin/fakeshell

#
# If defined, either full pathname of a file containing device names or
# a ":" delimited list of device names. Root logins will be allowed only
# upon these devices.
#
# This variable is used by login and su.
#
#CONSOLE /etc/consoles
#CONSOLE console:tty01:tty02:tty03:tty04

#
# List of groups to add to the user's supplementary group set
# when logging in on the console (as determined by the CONSOLE
# setting). Default is none.
#
# Use with caution - it is possible for users to gain permanent
# access to these groups, even when not logged in on the console.
# How to do it is left as an exercise for the reader...
#
# This variable is used by login and su.
#
#CONSOLE_GROUPS floppy:audio:cdrom

#
# If set to "yes", new passwords will be encrypted using the MD5-based
# algorithm compatible with the one used by recent releases of FreeBSD.
# It supports passwords of unlimited length and longer salt strings.
# Set to "no" if you need to copy encrypted passwords to other systems
# which don't understand the new algorithm. Default is "no".
#
# This variable is deprecated. You should use ENCRYPT_METHOD.
#
#MD5_CRYPT_ENAB no

#
# If set to MD5 , MD5-based algorithm will be used for encrypting password
# If set to SHA256, SHA256-based algorithm will be used for encrypting password
# If set to SHA512, SHA512-based algorithm will be used for encrypting password
# If set to DES, DES-based algorithm will be used for encrypting password (default)
# Overrides the MD5_CRYPT_ENAB option
#
# Note: It is recommended to use a value consistent with
# the PAM modules configuration.
#
ENCRYPT_METHOD SHA512

#
# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512.
#
# Define the number of SHA rounds.
# With a lot of rounds, it is more difficult to brute forcing the password.
# But note also that it more CPU resources will be needed to authenticate
# users.
#
# If not specified, the libc will choose the default number of rounds (5000).
# The values must be inside the 1000-999999999 range.
# If only one of the MIN or MAX values is set, then this value will be used.
# If MIN > MAX, the highest value will be used.
#
# SHA_CRYPT_MIN_ROUNDS 5000
# SHA_CRYPT_MAX_ROUNDS 5000

################# OBSOLETED BY PAM ##############
# #
# These options are now handled by PAM. Please #
# edit the appropriate file in /etc/pam.d/ to #
# enable the equivelants of them.
#
###############

#MOTD_FILE
#DIALUPS_CHECK_ENAB
#LASTLOG_ENAB
#MAIL_CHECK_ENAB
#OBSCURE_CHECKS_ENAB
#PORTTIME_CHECKS_ENAB
#SU_WHEEL_ONLY
#CRACKLIB_DICTPATH
#PASS_CHANGE_TRIES
#PASS_ALWAYS_WARN
#ENVIRON_FILE
#NOLOGINS_FILE
#ISSUE_FILE
#PASS_MIN_LEN
#PASS_MAX_LEN
#ULIMIT
#ENV_HZ
#CHFN_AUTH
#CHSH_AUTH
#FAIL_DELAY

################# OBSOLETED #######################
# #
# These options are no more handled by shadow. #
# #
# Shadow utilities will display a warning if they #
# still appear. #
# #
###################################################

# CLOSE_SESSIONS
# LOGIN_STRING
# NO_PASSWORD_CONSOLE
# QMAIL_DIR



可以使用文本编辑器(如 Vi 编辑器)打开 /etc/login.defs 文件进行查看和编辑。以下是一些可能在该文件中找到的常见设置:

  • PASS_MAX_DAYS:定义用户密码的最大有效天数。
  • PASS_MIN_DAYS:定义用户必须保持密码的最小天数。
  • PASS_WARN_AGE:定义在密码过期之前提前多少天向用户发出警告。
  • UID_MINUID_MAX:定义用户的最小和最大 UID 值。
  • GID_MINGID_MAX:定义组的最小和最大 GID 值。
  • LOGIN_RETRIES:定义用户登录失败的最大尝试次数。
  • LOGIN_TIMEOUT:定义用户登录超时的时间(以秒为单位)。
  • UMASK:定义新创建文件和目录的默认权限掩码。
  • ENV_PATH:定义用户登录时使用的默认环境变量路径。

请注意,对 /etc/login.defs 文件进行更改可能会对系统的安全性和用户体验产生影响。在编辑该文件之前,建议先备份原始文件,并确保您了解所做更改的后果。

更详细的关于 /etc/login.defs 文件的说明可以在 Linux 系统的文档或手册中找到。您可以使用 man login.defs 命令来查看相关的手册页。

远程登陆取消telnet采用ssh

lsof

lsof 是一个用于列出打开文件和网络连接的命令,它可以显示系统中当前打开的文件和网络连接的相关信息。下面是 lsof 命令的一些常见用法和选项:

  • lsof -i:列出所有的网络连接信息。
  • lsof -i :<port>:列出指定端口号的网络连接信息。
  • lsof -iTCPlsof -iUDP:只列出 TCP 或 UDP 协议的网络连接信息。
  • lsof -u <username>:列出指定用户打开的文件和网络连接信息。
  • lsof -c <command>:列出指定命令打开的文件和网络连接信息。
  • lsof -p <pid>:列出指定进程 ID 打开的文件和网络连接信息。
  • lsof -i -a -c <command>:同时使用多个选项进行过滤,例如列出指定命令的网络连接信息。
  • lsof <filename>:列出指定文件被哪些进程打开。

除了上述选项之外,lsof 还有其他一些用于进一步过滤和显示信息的选项。可以通过 man lsof 命令查看 lsof 的完整帮助文档,了解更多详细的用法和选项。

请注意,使用 lsof 命令可能需要以 root 或具有适当权限的用户身份运行,以便查看所有进程和文件的详细信息。

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
41
42
43
44
45
46
47
root@kylin-vmwarevirtualplatform:~# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kyseclogd 700 root 3u IPv4 28847 0t0 TCP *:8751 (LISTEN)
systemd-r 702 systemd-resolve 12u IPv4 29087 0t0 UDP localhost:domain
systemd-r 702 systemd-resolve 13u IPv4 29088 0t0 TCP localhost:domain (LISTEN)
avahi-dae 812 avahi 12u IPv4 31090 0t0 UDP *:mdns
avahi-dae 812 avahi 13u IPv6 31091 0t0 UDP *:mdns
avahi-dae 812 avahi 14u IPv4 31092 0t0 UDP *:59366
avahi-dae 812 avahi 15u IPv6 31093 0t0 UDP *:38192
cupsd 816 root 6u IPv6 30374 0t0 TCP ip6-localhost:ipp (LISTEN)
cupsd 816 root 7u IPv4 30375 0t0 TCP localhost:ipp (LISTEN)
miracat_u 843 root 5u IPv4 30574 0t0 TCP *:24605 (LISTEN)
nmbd 1034 root 13u IPv4 36274 0t0 UDP *:netbios-ns
nmbd 1034 root 14u IPv4 36275 0t0 UDP *:netbios-dgm
nmbd 1034 root 15u IPv4 61523 0t0 UDP 192.168.67.133:netbios-ns
nmbd 1034 root 16u IPv4 61524 0t0 UDP 192.168.67.255:netbios-ns
nmbd 1034 root 17u IPv4 61525 0t0 UDP 192.168.67.133:netbios-dgm
nmbd 1034 root 18u IPv4 61526 0t0 UDP 192.168.67.255:netbios-dgm
xrdp-sesm 1081 root 7u IPv6 35993 0t0 TCP ip6-localhost:3350 (LISTEN)
charon 1085 root 10u IPv6 37118 0t0 UDP *:isakmp
charon 1085 root 11u IPv6 37119 0t0 UDP *:ipsec-nat-t
charon 1085 root 12u IPv4 37120 0t0 UDP *:isakmp
charon 1085 root 13u IPv4 37121 0t0 UDP *:ipsec-nat-t
sshd 1096 root 3u IPv4 36016 0t0 TCP *:ssh (LISTEN)
sshd 1096 root 4u IPv6 36018 0t0 TCP *:ssh (LISTEN)
dnsmasq 1112 dnsmasq 4u IPv4 37033 0t0 UDP localhost:domain
dnsmasq 1112 dnsmasq 5u IPv4 37034 0t0 TCP localhost:domain (LISTEN)
dnsmasq 1112 dnsmasq 6u IPv6 37035 0t0 UDP ip6-localhost:domain
dnsmasq 1112 dnsmasq 7u IPv6 37036 0t0 TCP ip6-localhost:domain (LISTEN)
dnsmasq 1112 dnsmasq 12u IPv4 82440 0t0 UDP *:48169
dnsmasq 1112 dnsmasq 13u IPv4 82441 0t0 UDP *:10730
dnsmasq 1112 dnsmasq 14u IPv4 82478 0t0 UDP *:49769
dnsmasq 1112 dnsmasq 15u IPv4 82479 0t0 UDP *:24371
xl2tpd 1173 root 3u IPv4 36959 0t0 UDP *:l2f
xrdp 1210 xrdp 11u IPv6 59568 0t0 TCP *:ms-wbt-server (LISTEN)
mysqld 1259 mysql 22u IPv4 59277 0t0 TCP localhost:33060 (LISTEN)
mysqld 1259 mysql 24u IPv4 59335 0t0 TCP localhost:mysql (LISTEN)
kysec-syn 1456 root 9u IPv4 58731 0t0 TCP *:8750 (LISTEN)
smbd 1989 root 46u IPv6 61632 0t0 TCP *:microsoft-ds (LISTEN)
smbd 1989 root 47u IPv6 61633 0t0 TCP *:netbios-ssn (LISTEN)
smbd 1989 root 48u IPv4 61634 0t0 TCP *:microsoft-ds (LISTEN)
smbd 1989 root 49u IPv4 61635 0t0 TCP *:netbios-ssn (LISTEN)
miracle-a 2114 kylin 10u IPv4 62067 0t0 TCP *:7250 (LISTEN)
yh-signat 2343 kylin 11u IPv6 64559 0t0 TCP *:8668 (LISTEN)
sshd 2834 root 4u IPv4 67318 0t0 TCP 192.168.67.133:ssh->192.168.67.1:56246 (ESTABLISHED)
sshd 2937 kylin 4u IPv4 67318 0t0 TCP 192.168.67.133:ssh->192.168.67.1:56246 (ESTABLISHED)
dhclient 3225 root 8u IPv4 82390 0t0 UDP *:bootpc

日志审计

rsyslog

rsyslog 是一个功能强大的日志管理工具,用于收集、处理和转发系统日志。它是 Linux 系统中最常用的日志服务之一,被广泛应用于各种 Linux 发行版中。

rsyslog 可以接收来自不同来源的日志消息,如系统内核、应用程序、网络设备等,并将它们保存到本地文件或发送到远程服务器。它支持多种日志协议和格式,如 syslog、TCP、UDP、TLS、JSON 等。

rsyslog 的主要特点包括:

  1. 灵活的配置:rsyslog 提供了丰富的配置选项,允许用户根据需要定制日志的输入源、输出目标、过滤规则和处理动作。

  2. 强大的过滤功能:rsyslog 可以根据日志内容、日志级别、日志来源等条件进行灵活的过滤,以便对日志进行精确的处理和转发。

  3. 高效的日志处理:rsyslog 使用高度优化的算法和数据结构,能够高效地处理大量的日志消息,并提供可靠的日志传输和存储机制。

  4. 安全的传输:rsyslog 支持使用 TLS/SSL 加密协议来保护日志的传输过程,确保日志的机密性和完整性。

  5. 可扩展性:rsyslog 提供了丰富的插件和模块,可以与其他工具和系统集成,如 Elasticsearch、Kafka、MySQL 等。

在安装完 rsyslog 后,默认情况下,它会自动收集系统日志并将其保存到 /var/log 目录下的不同日志文件中。可以通过编辑 rsyslog.conf/etc/rsyslog.d/ 目录下的配置文件来修改和定制日志的处理方式。

要启动、停止或重新加载 rsyslog 服务,可以使用以下命令:

1
2
3
4
sudo systemctl start rsyslog    # 启动 rsyslog 服务
sudo systemctl stop rsyslog # 停止 rsyslog 服务
sudo systemctl restart rsyslog # 重启 rsyslog 服务
sudo systemctl reload rsyslog # 重新加载 rsyslog 配置

通过 rsyslog,您可以更好地管理和监控系统日志,以便及时发现和解决潜在的问题,并提供更好的系统可用性和安全性。

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
root@kylin-vmwarevirtualplatform:~# cat /etc/rsyslog.conf
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
#module(load="immark") # provides --MARK-- message capability

# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")

# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

访问控制

/etc/group

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
root@kylin-vmwarevirtualplatform:~# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,kylin
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:kylin
floppy:x:25:
tape:x:26:
sudo:x:27:kylin
audio:x:29:pulse,root,kylin
dip:x:30:kylin
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:kylin
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
messagebus:x:101:
systemd-timesync:x:102:
systemd-journal:x:103:
systemd-network:x:104:
systemd-resolve:x:105:
systemd-coredump:x:106:
crontab:x:107:
input:x:108:
kvm:x:109:
render:x:110:
syslog:x:111:
bluetooth:x:112:
ssl-cert:x:113:
netdev:x:114:
avahi-autoipd:x:115:
ssh:x:116:
i2c:x:117:
lpadmin:x:118:kylin
lightdm:x:119:
nopasswdlogin:x:120:
xrdp:x:121:
avahi:x:122:
scanner:x:123:saned
pulse:x:124:
pulse-access:x:125:
saned:x:126:
colord:x:127:
nvidia-persistenced:x:128:
sambashare:x:129:kylin
geoclue:x:130:
uuidd:x:131:
kylin:x:1000:
mysql:x:132:

/etc/group 文件是一个系统级别的配置文件,它包含了系统中所有组的信息。每个用户都可以属于一个或多个组,组是一种将用户分组的机制,这有助于管理文件和目录的访问权限。

/etc/group 文件中的每一行都描述了一个组,其中包含以下列:

  1. 组名:组的名称,用于标识该组。

  2. 组密码:组密码用于限制对组的访问。在大多数情况下,组密码为空,这意味着任何人都可以加入该组。

  3. GID:组ID(GID)是一个数字,用于唯一标识该组。

  4. 组成员:该组中的用户列表,用逗号分隔。

以下是一个示例 /etc/group 文件的内容:

1
2
3
4
5
6
7
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,john
john:x:1000:
users:x:1001:john,mary

在上面的示例中,有7个组:

  • root 组,GID 为 0,只有 root 用户属于该组。

  • daemon 组,GID 为 1,只有系统守护进程属于该组。

  • bin 组,GID 为 2,只有二进制文件所有者属于该组。

  • sys 组,GID 为 3,只有系统管理员属于该组。

  • adm 组,GID 为 4,该组有两个成员 syslogjohn

  • john 组,GID 为 1000,只有 john 用户属于该组。

  • users 组,GID 为 1001,该组有两个成员 johnmary

请注意,/etc/group 文件是一个系统级别的配置文件,只有管理员才有权限修改它。如果您需要对个人用户进行特定的组分配更改,应该使用 usermod 命令或编辑用户的个人配置文件(例如 ~/.bashrc~/.bash_profile)。