亮的MARK库

mark.liangliang.org.cn

检查了下:systemctl –full -a grep x2duuid

root@debian:/home/liang# ls -l /dev/disk/by-uuid/ lrwxrwxrwx 1 root root 10 2月 3 22:52 02c8b877-eb4d-48be-a494-f973bd05172b -> ../../sda5 lrwxrwxrwx 1 root root 10 2月 3 22:52 2C665449665415C4 -> ../../sda3 lrwxrwxrwx 1 root root 10 2月 3 22:52 73feeb2f-807b-496d-bc8b-b7fc64688b7d -> ../../sda6 lrwxrwxrwx 1 root root 10 2月 3 22:52 813b4388-6d89-4b69-9741-a9af8de4386f -> ../../sda2 lrwxrwxrwx 1 root root 10 2月 3 22:52 a527342d-3db5-4561-abde-fcb5501998b3 -> ../../sda1 root@debian:/home/liang# nano /etc/fstab swap uuid change swap分区激活

mysql -uroot -p

添加用户 以root用户登录数据库,运行以下命令: create user liang identified by ‘liang’; 创建数据库blog create database blog;

授权

命令格式:grant privilegesCode on dbName.tableName to username@host identified by “password”;

grant all privileges on blog.* to liang@’%’ identified by ‘liang’; flush privileges; 上面的语句将lblog数据库的所有操作权限都授权给了用户liang 在mysql.db表里可以查看到新增数据库权限的信息:

也可以通过show grants命令查看权限授予执行的命令:

show grants for ‘liang’; privilegesCode表示授予的权限类型,常用的有以下几种类型:

all privileges:所有权限。 select:读取权限。 delete:删除权限。 update:更新权限。 create:创建权限。 drop:删除数据库、数据表权限。 dbName.tableName表示授予权限的具体库或表,常用的有以下几种选项:

.:授予该数据库服务器所有数据库的权限。 dbName.*:授予dbName数据库所有表的权限。 dbName.dbTable:授予数据库dbName中dbTable表的权限。 username@host表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型:

localhost:只允许该用户在本地登录,不能远程登录。 %:允许在除本机之外的任何一台机器远程登录。 192.168.12.32:具体的IP表示只允许该用户从特定IP登录。 password指定该用户登录时的面。

flush privileges表示刷新权限变更。

修改密码 运行以下命令可以修改用户密码

update mysql.user set password = password(‘password’) where user = ‘liang’ and host = ‘%’; flush privileges; 删除用户 运行以下命令可以删除用户:

drop user liang@’%’; drop user命令会删除用户以及对应的权限,执行命令后你会发现mysql.user表和mysql.db表的相应记录都消失了。

常用命令组 创建用户并授予指定数据库全部权限:适用于Web应用创建MySQL用户

create user liang identified by ‘liang’; grant all privileges on blog.* to liang@’%’ identified by ‘liang’; flush privileges; 创建了用户liang,并将数据库blog的所有权限授予liang。可以远程登陆。

如果要使liang可以从本机登录,并且将所有数据库均授权给liang,只能本地登陆: grant all privileges on . to liang@’localhost’ identified by ‘liang’;

数据库的操作 MySQL中,数据库的操作基本有:创建,查看,选择,以及删除4种。

创建数据库:CREATE DATABASE database_name;,后面的database_name是你要创建的数据库的名称; 查看数据库:SHOW DATABASES;,查看已经创建的所有数据库 选择数据库:USE database_name;,选择名为database_name的数据库,很多数据库的操作都需要先选中一个数据库,再执行进一步的操作; 删除数据库:DROP DATABASE database_name;,删除名为database_name的数据库;

扩展阅读 https://blog.csdn.net/guoziqing506/article/details/80426545

debian下Apache的配置文件位置

默认配置文件所在目录都是在/etc/apache2/

目录下有如下目录

conf-available    包含可以使用的配置文件
conf-enabled      包含已经启用的配置文件
mods-available    包含可以使用的模块
mods-enabled      包含已经启用的模块
sites-available   包含可以使用的站点配置
sites-enabled     包含已经启用的站点配置

配置文件:

apache2.conf    主配置文件
ports.conf      默认监听端口
envvars          apache的设置变量如log位置
magic            ?

apache2.conf 指定wwwroot可用

<Directory /www/wwwroot/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

多站点的配置

建站web1 web2
web1
域名为blog.domain.org
站点别名为name_blog
配置文件为web1_blog.conf
页面文件目录为/www/wwwroot/blog/

web2
域名为web.domain.org
站点别名为name_web
配置文件为web2_www.conf
页面文件目录为/www/wwwroot/web/

根据apache2.conf 配置文件目录指向

/etc/apache2/sites-available

在sites-available目录下建立web1_blog

#touch /etc/apache2/sites-available/web1_blog.conf

在sites-available目录下建立web2_www

#touch /etc/apache2/sites-available/web2_www.conf

web1_blog中写入:

<VirtualHost *:80>
  ServerAdmin adminxxx@domain.org
  ServerName blog.domain.org
  ServerAlias name_blog
  DocumentRoot /www/wwwroot/blog
</VirtualHost>

web2_www中写入:

<VirtualHost *:80>
  ServerAdmin adminxxx@domain.org
  ServerName www.domain.org
  ServerAlias name_web
  DocumentRoot /www/wwwroot/www
</VirtualHost>

web3_xxx web4_xxx 5 6 7

ServerName        域名站点绑定
DocumentRoot      站点根目录
ServerAlias       站点别名
ServerAdmin       站点管理员信息如邮件

web1 web2创建目录

#mkdir /www/wwwroot/blog /www/wwwroot/www

用a2ensite启用站点

#a2ensite web1_blog.conf
#a2ensite web2_www.conf

执行了a2ensite之后会在 /etc/apache2/sites-enable/ 创建web1_blog和web2_www两个link文件. sites-enable是包含已经启用的站点配置的文件夹 通过a2ensite命令启用在sites-available目录中已经配置好的站点 apache就会在sites-enable中创建一个对应的配置连接。 这样的好处是对于维护站点更加方便

配置模块的mods-available和mods-enable目录同样道理。

a2enmod rewrite 启用rewrite模块 a2dismod rewrite 停用rewrite模块

重新加载apache服务

#systemctl reload apache2

分别上传文件到这两个站点的根目录下,就实现了在一个主机上配置多个站点。

关于配置命令

a2enmod rewrite         启用rewrite模块
a2dismod rewrite        停用rewrite模块
a2ensite siteConfName   启用站点siteConfName
a2dissite siteConfName  停用站点siteConfName

这篇博文的,主要目的是为了方便我和大家安装GNOME扩展。我将我安装过的所有扩展列在此处。

常用扩展

Clipboard Indicator

https://extensions.gnome.org/extension/779/clipboard-indicator/

Dash to Dock

https://extensions.gnome.org/extension/307/dash-to-dock/

Gno-Menu

https://extensions.gnome.org/extension/608/gnomenu/

Hide Top Bar

https://extensions.gnome.org/extension/545/hide-top-bar/

No Title Bar

https://extensions.gnome.org/extension/1267/no-title-bar/

Removable Drive Menu

https://extensions.gnome.org/extension/7/removable-drive-menu/

TopIcons Plus

https://extensions.gnome.org/extension/1031/topicons/

Unite

https://extensions.gnome.org/extension/1287/unite/

User Themes

https://extensions.gnome.org/extension/19/user-themes/

扩展安装和启用方法

安装

通过浏览器安装
  1. 安装浏览器扩展 https://chrome.google.com/webstore/detail/gphhapmejobijbbhgpjhcjognlahblep
  2. 通过包管理器安装chrome-gnome-shell-git
  3. 安装完毕后,就可以通过https://extensions.gnome.org/ 直接安装扩展通过软件包安装
  4. 进入 https://extensions.gnome.org/ 下载自己需要的插件包
  5. 提取并解压到~/.local/share/gnome-shell/extensions,即可安装启用-停用-卸载扩展
  • 使用包管理器安装gnome-shell-extensions``gnome-tweak-tools在Tweaks中进行管理
  • 通过浏览器访问 https://extensions.gnome.org/local/ 进行卸载(需要浏览器扩展)

防火墙

防火墙是一组规则。当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。下面是一个简单的例子:

防火墙可以根据协议或基于目标的规则过滤请求。

一方面, iptables 是 Linux 机器上管理防火墙规则的工具。

另一方面,firewalld 也是 Linux 机器上管理防火墙规则的工具。

你有什么问题吗?如果我告诉你还有另外一种工具,叫做 nftables,这会不会糟蹋你的美好一天呢?

好吧,我承认整件事确实有点好笑,所以让我来解释一下。这一切都从 Netfilter 开始,它在 Linux 内核模块级别控制访问网络栈。几十年来,管理 Netfilter 钩子的主要命令行工具是 iptables 规则集。

因为调用这些规则所需的语法看起来有点晦涩难懂,所以各种用户友好的实现方式,如 ufw 和 firewalld 被引入,作为更高级别的 Netfilter 解释器。然而,ufw 和 firewalld 主要是为解决单独的计算机所面临的各种问题而设计的。构建全方面的网络解决方案通常需要 iptables,或者从 2014 年起,它的替代品 nftables (nft 命令行工具)。

iptables 没有消失,仍然被广泛使用着。事实上,在未来的许多年里,作为一名管理员,你应该会使用 iptables 来保护的网络。但是 nftables 通过操作经典的 Netfilter 工具集带来了一些重要的崭新的功能。

从现在开始,我将通过示例展示 firewalld 和 iptables 如何解决简单的连接问题。

使用 firewalld 配置 HTTP 访问

正如你能从它的名字中猜到的,firewalld 是 systemd 家族的一部分。firewalld 可以安装在 Debian/Ubuntu 机器上,不过,它默认安装在 RedHat 和 CentOS 上。如果您的计算机上运行着像 Apache 这样的 web 服务器,您可以通过浏览服务器的 web 根目录来确认防火墙是否正在工作。如果网站不可访问,那么 firewalld 正在工作。

你可以使用 firewall-cmd 工具从命令行管理 firewalld 设置。添加 –state 参数将返回当前防火墙的状态:

  1. # firewall-cmd --state
    
        
    2.  ```
        running

默认情况下,firewalld 处于运行状态,并拒绝所有传入流量,但有几个例外,如 SSH。这意味着你的网站不会有太多的访问者,这无疑会为你节省大量的数据传输成本。然而,这不是你对 web 服务器的要求,你希望打开 HTTP 和 HTTPS 端口,按照惯例,这两个端口分别被指定为 80 和 443。firewalld 提供了两种方法来实现这个功能。一个是通过 –add-port 参数,该参数直接引用端口号及其将使用的网络协议(在本例中为TCP)。 另外一个是通过 –permanent 参数,它告诉 firewalld 在每次服务器启动时加载此规则:

  1. # firewall-cmd --permanent --add-port=80/tcp  (常用)
    
        
    2.  ```
        # firewall-cmd --permanent --add-port=443/tcp

–reload 参数将这些规则应用于当前会话:

  1. # firewall-cmd --reload
    
        
    
    查看当前防火墙上的设置,运行 –list-services:
    
    1.  ```
        # firewall-cmd --list-services
  2. dhcpv6-client http https ssh
    
        
    
    假设您已经如前所述添加了浏览器访问,那么 HTTP、HTTPS 和 SSH 端口现在都应该是和 dhcpv6-client 一样开放的 —— 它允许 Linux 从本地 DHCP 服务器请求 IPv6 IP 地址。
    
    ### 使用 iptables 配置锁定的客户信息亭
    
    我相信你已经看到了信息亭——它们是放在机场、图书馆和商务场所的盒子里的平板电脑、触摸屏和 ATM 类电脑,邀请顾客和路人浏览内容。大多数信息亭的问题是,你通常不希望用户像在自己家一样,把他们当成自己的设备。它们通常不是用来浏览、观看 YouTube 视频或对五角大楼发起拒绝服务攻击的。因此,为了确保它们没有被滥用,你需要锁定它们。
    
    一种方法是应用某种信息亭模式,无论是通过巧妙使用 Linux 显示管理器还是控制在浏览器级别。但是为了确保你已经堵塞了所有的漏洞,你可能还想通过防火墙添加一些硬性的网络控制。在下一节中,我将讲解如何使用iptables 来完成。
    
    关于使用 iptables,有两件重要的事情需要记住:你给出的规则的顺序非常关键;iptables 规则本身在重新启动后将无法保持。我会一次一个地在解释这些。
    
    ### 信息亭项目
    
    为了说明这一切,让我们想象一下,我们为一家名为 BigMart 的大型连锁商店工作。它们已经存在了几十年;事实上,我们想象中的祖父母可能是在那里购物并长大的。但是如今,BigMart 公司总部的人可能只是在数着亚马逊将他们永远赶下去的时间。
    
    尽管如此,BigMart 的 IT 部门正在尽他们最大努力提供解决方案,他们向你发放了一些具有 WiFi 功能信息亭设备,你在整个商店的战略位置使用这些设备。其想法是,登录到 BigMart.com 产品页面,允许查找商品特征、过道位置和库存水平。信息亭还允许进入 bigmart-data.com,那里储存着许多图像和视频媒体信息。
    
    除此之外,您还需要允许下载软件包更新。最后,您还希望只允许从本地工作站访问 SSH,并阻止其他人登录。下图说明了它将如何工作:
    
    ![](http://116.196.113.144/wp-content/uploads/2019/01/013019_1248_firewalld2-1.jpg)
    
    _信息亭流量IP表_
    
    \*信息亭业务流由 iptables 控制。 \*
    
    ### 脚本
    
    以下是 Bash 脚本内容:
    
    1.  ```
        #!/bin/bash
  3. iptables -A OUTPUT -p tcp -d bigmart.com -j ACCEPT
    
        
    3.  ```
        iptables -A OUTPUT -p tcp -d bigmart-data.com -j ACCEPT
  4. iptables -A OUTPUT -p tcp -d ubuntu.com -j ACCEPT
    
        
    5.  ```
        iptables -A OUTPUT -p tcp -d ca.archive.ubuntu.com -j ACCEPT
  5. iptables -A OUTPUT -p tcp --dport 80 -j DROP
    
        
    7.  ```
        iptables -A OUTPUT -p tcp --dport 443 -j DROP
  6. iptables -A INPUT -p tcp -s 10.0.3.1 --dport 22 -j ACCEPT
    
        
    9.  ```
        iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP

我们从基本规则 -A 开始分析,它告诉 iptables 我们要添加规则。OUTPUT 意味着这条规则应该成为输出链的一部分。-p 表示该规则仅使用 TCP 协议的数据包,正如 -d 告诉我们的,目的地址是 bigmart.com。-j 参数的作用是当数据包符合规则时要采取的操作是 ACCEPT。第一条规则表示允许(或接受)请求。但,往下的规则你能看到丢弃(或拒绝)的请求。

规则顺序是很重要的。因为 iptables 会对一个请求遍历每个规则,直到遇到匹配的规则。一个向外发出的浏览器请求,比如访问 bigmart.com 是会通过的,因为这个请求匹配第一条规则,但是当它到达 dport 80 或 dport 443 规则时——取决于是 HTTP 还是 HTTPS 请求——它将被丢弃。当遇到匹配时,iptables 不再继续往下检查了。(LCTT 译注:此处原文有误,径改。)

另一方面,向 ubuntu.com 发出软件升级的系统请求,只要符合其适当的规则,就会通过。显然,我们在这里做的是,只允许向我们的 BigMart 或 Ubuntu 发送 HTTP 或 HTTPS 请求,而不允许向其他目的地发送。

最后两条规则将处理 SSH 请求。因为它不使用端口 80 或 443 端口,而是使用 22 端口,所以之前的两个丢弃规则不会拒绝它。在这种情况下,来自我的工作站的登录请求将被接受,但是对其他任何地方的请求将被拒绝。这一点很重要:确保用于端口 22 规则的 IP 地址与您用来登录的机器的地址相匹配——如果不这样做,将立即被锁定。当然,这没什么大不了的,因为按照目前的配置方式,只需重启服务器,iptables 规则就会全部丢失。如果使用 LXC 容器作为服务器并从 LXC 主机登录,则使用主机 IP 地址连接容器,而不是其公共地址。

如果机器的 IP 发生变化,请记住更新这个规则;否则,你会被拒绝访问。

在家玩(是在某种一次性虚拟机上)?太好了。创建自己的脚本。现在我可以保存脚本,使用 chmod 使其可执行,并以 sudo 的形式运行它。不要担心”igmart-data.com 没找到”之类的错误 —— 当然没找到;它不存在。

  1. chmod +X scriptname.sh
    
        
    2.  ```
        sudo ./scriptname.sh

你可以使用 cURL 命令行测试防火墙。请求 ubuntu.com 奏效,但请求 manning.com 是失败的 。

  1. curl ubuntu.com
    
        
    2.  ```
        curl manning.com

配置 iptables 以在系统启动时加载

现在,我如何让这些规则在每次信息亭启动时自动加载?第一步是将当前规则保存。使用 iptables-save 工具保存规则文件。这将在根目录中创建一个包含规则列表的文件。管道后面跟着 tee 命令,是将我的sudo 权限应用于字符串的第二部分:将文件实际保存到否则受限的根目录。

然后我可以告诉系统每次启动时运行一个相关的工具,叫做 iptables-restore 。我们在上一章节(LCTT 译注:指作者的书)中看到的常规 cron 任务并不适用,因为它们在设定的时间运行,但是我们不知道什么时候我们的计算机可能会决定崩溃和重启。

有许多方法来处理这个问题。这里有一个:

在我的 Linux 机器上,我将安装一个名为 anacron 的程序,该程序将在 /etc/ 目录中为我们提供一个名为 anacrontab 的文件。我将编辑该文件并添加这个 iptables-restore 命令,告诉它加载那个 .rule 文件的当前内容。当引导后,规则每天(必要时)01:01 时加载到 iptables 中(LCTT 译注:anacron 会补充执行由于机器没有运行而错过的 cron 任务,因此,即便 01:01 时机器没有启动,也会在机器启动会尽快执行该任务)。我会给该任务一个标识符(iptables-restore),然后添加命令本身。如果你在家和我一起这样,你应该通过重启系统来测试一下。

  1. sudo iptables-save  sudo tee /root/my.active.firewall.rules
    
        
    2.  ```
        sudo apt install anacron
  2. sudo nano /etc/anacrontab
    
        
    4.  ```
        1 1 iptables-restore iptables-restore < /root/my.active.firewall.rules

我希望这些实际例子已经说明了如何使用 iptables 和 firewalld 来管理基于 Linux 的防火墙上的连接问题。

原文出处:https://linux.cn/article-10075-1.html

扩展阅读

一、firewalld 守护进程

firewall-cmd命令需要firewalld进程处于运行状态。我们可以使用systemctl status/start/stop/restart firewalld来控制这个守护进程。firewalld进程为防火墙提供服务。 当我们修改了某些配置之后(尤其是配置文件的修改),firewall并不会立即生效。可以通过两种方式来激活最新配置systemctl restart firewalld和firewall-cmd –reload两种方式,前一种是重启firewalld服务,建议使用后一种”重载配置文件”。重载配置文件之后不会断掉正在连接的tcp会话,而重启服务则会断开tcp会话。
二、控制端口/服务
可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名。虽然开放http服务就是开放了80端口,但是还是不能通过端口号来关闭,也就是说通过指定服务名开放的就要通过指定服务名关闭;通过指定端口号开放的就要通过指定端口号关闭。还有一个要注意的就是指定端口的时候一定要指定是什么协议,tcp还是udp。知道这个之后以后就不用每次先关防火墙了,可以让防火墙真正的生效。

1

2

3

4

5

6

7

firewall-cmd –add-service=mysql # 开放mysql端口

firewall-cmd –remove-service=http # 阻止http端口

firewall-cmd –list-services  # 查看开放的服务

firewall-cmd –add-port=3306/tcp # 开放通过tcp访问3306

firewall-cmd –remove-port=80tcp # 阻止通过tcp访问3306

firewall-cmd –add-port=233/udp # 开放通过udp访问233

firewall-cmd –list-ports  # 查看开放的端口

三、伪装****IP
防火墙可以实现伪装IP的功能,下面的端口转发就会用到这个功能。

1

2

3

firewall-cmd –query-masquerade # 检查是否允许伪装IP

firewall-cmd –add-masquerade # 允许防火墙伪装IP

firewall-cmd –remove-masquerade# 禁止防火墙伪装IP

四、端口转发
端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。 如果配置好端口转发之后不能用,可以检查下面两个问题:

  • 比如我将80端口转发至8080端口,首先检查本地的80端口和目标的8080端口是否开放监听了

  • 其次检查是否允许伪装IP,没允许的话要开启伪装IP

1

2

3

4

5

6

# 将80端口的流量转发至8080

firewall-cmd –add-forward-port=port=80:proto=tcp:toport=8080

# 将80端口的流量转发至

firewall-cmd –add-forward-port=port=80:proto=tcp:toaddr=192.168.1.0.1192.168.0.1

# 将80端口的流量转发至192.168.0.1的8080端口

firewall-cmd –add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080

  • 当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
  • 端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

服务器运行了一些脚本后,突然发现无法ssh了。

root@X61T:/home/liang# service sshd restart Job for ssh.service failed because the control process exited with error code.
See “systemctl status ssh.service” and “journalctl -xe” for details.

使用systemctl检查状态

Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。

常用的systemctl命令:

systemctl list-unit-files                               列出所有可用的单元 systemctl list-units                                     列出所有运行中单元 systemctl –failed                                        列出所有失败单元 systemctl status firewalld.service           检查某个单元或服务是否运行 systemctl list-unit-files –type=service    列出所有服务(启用和禁用) systemctl start httpd.service                    启动 systemctl restart httpd.service                 重启 systemctl stop httpd.service                     停止 systemctl reload httpd.service                 重载服务 systemctl status httpd.service                  检查状态

检查一下ssh.service的状态

root@X61T:/home/liang# systemctl status ssh.service

发现

Process: 3448 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255)
Process: 3445 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
……
Jan 30 08:18:03 X61T systemd[1]: Starting OpenBSD Secure Shell server…
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a
Jan 30 08:18:03 X61T systemd[1]: Failed to start OpenBSD Secure Shell server.
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Unit entered failed state.
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Failed with result ‘exit-code’.

使用journalctl访问内部的数据

root@X61T:/home/liang# journalctl -u ssh.service

Jan 30 08:18:03 X61T systemd[1]: Starting OpenBSD Secure Shell server… Jan 30 08:18:03 X61T systemd[1]: ssh.service: Main process exited, code=exited, Jan 30 08:18:03 X61T systemd[1]: Failed to start OpenBSD Secure Shell server. Jan 30 08:18:03 X61T systemd[1]: ssh.service: Unit entered failed state. Jan 30 08:18:03 X61T systemd[1]: ssh.service: Failed with result ‘exit-code’.

systemd尝试提供一套集中化管理方案,从而统一打理全部内核及用户级进程的日志信息。这套系统能够收集并管理日志内容,而这也就是journal。journal的实现归功于journald守护进程,其负责处理由内核、initrd以及服务等产生的信息。

对比一下 init.d 和 systemd :

service daemon———————–> rsyslog ———————————–> /var/log

systemd ———-> systemd-journald —> ram DB —-> rsyslog —-> /var/log

当 systemd 启动后,systemd-journald 也会立即启动。将日志存入RAM中,当rsyslog 启动后会读取该RAM并完成筛选分类写入目录 /var/log 。内核启动过程将消息写入到结构化的事件日志中(数据库),默认情况下重启后删除syslog 的信息也可以由 systemd-journald 转发到 rsyslog 中进一步处理默认情况下,systemd 的日志保存在 /run/log/journal 中,系统重启就会清除,这是RHEL7的新特性。通过新建 /var/log/journal 目录,日志会自动记录到这个目录中,并永久存储。rsyslog 服务随后根据优先级排列日志信息,将它们写入到 /var/log目录中永久保存常规操作systemd提供了自己的日志系统(logging system),称为 journal。使用 systemd 日志,无需额外安装日志服务(syslog)。

读取日志的命令:

# journalctl

重要:显示所有的日志信息,notice或warning以粗体显示,红色显示error级别以上的信息

显示最后行数的日志:

# journalctl -n

显示最详细信息:

# journalctl -f

提示:其实它很像tailf命令,默认显示十行。随着匹配日志的增长而持续输出。只显示错误、冲突和重要告警信息

# journalctl -p err..alert

提示:也可以使用数字表示哟。

显示指定单元的所有消息:

# journalctl -u netcfg

重要:一般 -u 参数是 systemctl status 调用的参数之一(journalctl -l 可查看所有)提示:如果希望显示 kernel 的信息需要使用 journalctl -k 进行内核环缓存消息查询。

显示从某个时间 ( 例如 20分钟前 ) 的消息:

# journalctl –since “20 min ago”

# journalctl –since today

# journalctl –until YYYY-MM-DD

显示本次启动后的所有日志:

# journalctl -b

不过,一般大家更关心的不是本次启动后的日志,而是上次启动时的(例如,刚刚系统崩溃了)。可以使用 -b 参数:

journalctl -b -0 显示本次启动的信息

journalctl -b -1 显示上次启动的信息

journalctl -b -2 显示上上次启动的信息

journalctl -b -2 只显示错误、冲突和重要告警信息

显示特定进程的所有消息:

# journalctl _PID=1

1. \_COMM 显示特定程序的所有消息,例如:``journalctl /usr/lib/systemd/systemd`` 2. \_EXE 进程的可执行文件的路径 3. \_PID 进程的PID 4. \_UID 运行该进程用户的UID 5. _SYSTEMD_UNIT 启动该进程的 `systemd` 单元 提示:以上筛选条件可组合使用,例如:journalctl _SYSTEMD_UNIT=sshd.service _PID=1182

显示更多输出方案:

# journalctl -o shortshort-isoshort-perciseshort-monotonicverboseexportjsonjson-prettyjson-ssecat

进入ssh debug模式

root@X61T:/etc/init.d# /usr/sbin/sshd -d

debug1: sshd version OpenSSH_7.4, OpenSSL 1.0.2l  25 May 2017 debug1: private host key #0: ssh-rsa SHA256:yXduj8mTB9Lte+8TNQZPaqHtphuCgTcR18BY9jhY7sY debug1: private host key #1: ecdsa-sha2-nistp256 SHA256:kzdqml9P9ocCIKrNalil5lKOZtY9Eshrn6ntfFKEkFk debug1: private host key #2: ssh-ed25519 SHA256:nAcGxV9POMZeJxyqOWVsWu1s/WrvQSyhNDj0sQa90KY debug1: rexec_argv[0]=’/usr/sbin/sshd’ debug1: rexec_argv[1]=’-d’ debug1: Set /proc/self/oom_score_adj from 0 to -1000 debug1: Bind to port 22 on 0.0.0.0. Bind to port 22 on 0.0.0.0 failed: Address already in use. debug1: Bind to port 22 on ::. Bind to port 22 on :: failed: Address already in use. Cannot bind any address.

发现居然22端口被占用了
用netstat查出是谁在占用。 root@X61T:/etc/init.d# netstat -apn

列出所有端口 (包括监听和未监听的) netstat -a                   列出所有端口 netstat -at                   列出所有tcp端口 netstat -au                  列出所有udp端口
列出所有处于监听状态的 Sockets netstat -l              只显示监听端口 netstat -lt                  只列出所有监听 tcp 端口 netstat -lu                  只列出所有监听 udp 端口 netstat -lx              只列出所有监听 UNIX 端口 显示每个协议的统计信息 netstat -s                  显示所有端口的统计信息 netstat -st                  显示TCP端口的统计信息
netstat -su                  显示UDP端口的统计信息 在netstat输出中显示 PID 和进程名称 netstat –pt 命令如下: netstat -pan grep 5623 #其中5623位端口号 netstat 中参数选项
-a或–all:显示所有连线中的Socket; -A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址; -c或–continuous:持续列出网络状态;
-C或–cache:显示路由器配置的快取信息; -e或–extend:显示网络其他相关信息; -F或–fib:显示FIB; -g或–groups:显示多重广播功能群组组员名单; -h或–help:在线帮助; -i或–interfaces:显示网络界面信息表单;
-l或–listening:显示监控中的服务器的Socket; -M或–masquerade:显示伪装的网络连线; -n或–numeric:直接使用ip地址,而不通过域名服务器; -N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称;
-o或–timers:显示计时器; -p或–programs:显示正在使用Socket的程序识别码和程序名称; -r或–route:显示Routing Table; -s或–statistice:显示网络工作信息统计表; -t或–tcp:显示TCP传输协议的连线状况; -u或–udp:显示UDP传输协议的连线状况; -v或–verbose:显示指令执行过程; -V或–version:显示版本信息; -w或–raw:显示RAW传输协议的连线状况; -x或–unix:此参数的效果和指定”-A unix”参数相同; --ip或–inet:此参数的效果和指定”-A inet”参数相同。

root@X61T:/etc/init.d# service rsync stop

root@X61T:/etc/init.d# /usr/sbin/sshd -d

debug1: sshd version OpenSSH_7.4, OpenSSL 1.0.2l  25 May 2017 debug1: private host key #0: ssh-rsa SHA256:yXduj8mTB9Lte+8TNQZPaqHtphuCgTcR18BY9jhY7sY
debug1: private host key #1: ecdsa-sha2-nistp256 SHA256:kzdqml9P9ocCIKrNalil5lKOZtY9Eshrn6ntfFKEkFk debug1: private host key #2: ssh-ed25519 SHA256:nAcGxV9POMZeJxyqOWVsWu1s/WrvQSyhNDj0sQa90KY debug1: rexec_argv[0]=’/usr/sbin/sshd’ debug1: rexec_argv[1]=’-d’
debug1: Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::. Server listening on :: port 22.

root@X61T:/etc/init.d# service rsync stop

root@X61T:/etc/init.d# service ssh start

root@X61T:/etc/init.d# service rsync start

root@X61T:/home/liang# journalctl -u ssh.service

Jan 30 09:21:38 X61T systemd[1]: Starting OpenBSD Secure Shell server… Jan 30 09:21:38 X61T sshd[6526]: Server listening on 0.0.0.0 port 22. Jan 30 09:21:38 X61T sshd[6526]: Server listening on :: port 22. Jan 30 09:21:38 X61T systemd[1]: Started OpenBSD Secure Shell server.

搞定。

下面的资料是为什么Rsync会占用22端口

留下来参考

https://mike-hostetler.com/rsync-non-standard-ssh-port/

https://www.kaijia.me/2012/10/rsync-use-non-standard-ssh-port-solved/

apt-get install chkconfig

linux iptables关闭/开启(重启机器生效):

  开启: chkconfig iptables on  

  关闭: chkconfig iptables off 

linux iptables启用/禁用(立即生效,重启机器失效).

  启用: service iptables start  

  禁用: service iptables stop

下载 url:

wget http://www.w3schools.com/

全站下载

wget -r https://www.gnu.org/

(一般来说,网站的页面会有很多链接,点击之后可以链接到其他页面,其他页面也可能有链接,就这样一级一级链接下去,如果要把这些所有关联的页面都下载下来)

但是大部分网站不允许你下载所有网站的内容,如果网站检测不到浏览器标识,会拒绝你的下载连接或者给你发送回一个空白网页。这个时候在 wget 后面加上 user-agent 就可以:

wget -r -p -U Mozilla https://www.gnu.org/

为了避免被网站加入黑名单,我们可以限制下载的速度以及两次下载之间的等待时间:

wget –wait=20 –limit-rate=20K -r -p -U Mozilla https://www.gnu.org/

如何只是想下载特定文件夹下的网页,使用 –no-parent:

//只下载 `/js` 下的所有页面

wget –wait=20 –limit-rate=20K –no-parent -r -p -U Mozilla https://www.gnu.org/js/default.asp

更多内容请参考 GNU Wget Manual

https://www.gnu.org/

gnome:

/home/liang/.config/autostart

有些kde程序在gnome下会无法删除自启动,这个目录下找一找。我遇到的是KAlarm就是如此。

0%