树莓派配置LNMP 环境

1. 安装数据库MariaDB /MySQL

pi@raspberrypi:~ $ sudo apt install mariadb-server
pi@raspberrypi:~ $ sudo apt install mariadb-client

pi@raspberrypi:~ $ sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 50
Server version: 10.3.25-MariaDB-0+deb10u1 Raspbian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

出现以上信息说明MariaDB 安装成功, 然后输入

MariaDB [(none)]> use mysql
MariaDB [mysql]> UPDATE user SET password=password('<your_password>') WHERE user='root';
MariaDB [mysql]> UPDATE user SET plugin='mysql_native_password' WHERE user = 'root';
MariaDB [mysql]> flush ppiileges;

退出MariaDB,重启服务

sudo systemctl restart mariadb 

然后用可以用root 用户和密码登陆

mysql -u root -p 

2. 安装Nginx

sudo apt-get install nginx

默认的nginx网站配置文件为 /etc/nginx/sites-available/default

3. 安装php

sudo apt install php-fpm
sudo apt install php7.3-fpm
sudo apt install php7.3-mbstring 
sudo apt install php7.3-xml
sudo apt install php7.3-mysql
sudo apt install php7.3-common 
sudo apt install php7.3-gd 
sudo apt install php7.3-json 
sudo apt install php7.3-cli
sudo apt install php7.3-curl

安装完成后,FPM服务将自动启动,要检查服务状态,请运行:

sudo systemctl status php7.3-fpm

编辑Nginx服务器配置文件sudo vim /etc/nginx/sites-available/default(大约56行),以便Nginx可以处理PHP文件:

server {
 # . . . other code
 location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php7.4-fpm.sock;
 }
}

重启Nginx服务,以使新配置生效:

sudo systemctl restart nginx

树莓派更换阿里云源

sudo vim /etc/apt/sources.list

将原有内容用#注释掉,更改为:

deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi

修改raspbi.list 文件

sudo nano /etc/apt/sources.list.d/raspi.list

将原有内容用#注释掉,修改为:

deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main

然后更新:

sudo apt-get update
sudo apt-get upgrade

Windows 11 安装安卓(Android)子系统 (WSA)

Windows 11的新功能中,“Windows Subsystem for Android”(简称WSA),即"Android子系统",可以在Win11 PC上直接安装运行各种安卓手机APP应用与游戏,无需安装第三方模拟器或虚拟机。

Android 子系统要求

确保Windows 11版本为22000.xxx或更高版本。
硬件必须支持并启用BIOS/UEFI虚拟化
确保微软商店版本为22110.1402.6.0或更高版本,并单击“获取更新”按钮升级其版本。
安卓子系统默认会分配4G内存,建议16G内存以上的电脑使用

一、安装 Windows 虚拟化支持

进入设置 → 应用 → 可选功能 → 更多 Windows 功能,找到并勾选开启「Hyper-V」和「虚拟机平台」两个选项,安装完成后会提示重启系统

二、Win11 正式版安装安卓子系统方法教程

Windows 11正式版,可以使用“下载WSA离线安装包”的方法安装部署安卓子系统,可以直接绕过地区和测试版限制。

WSA安卓子系统的应用离线安装包是从Windows中的微软应用商店中提取的,可以通过命令行安装。

  1. 打开 [https://store.rg-adguard.net]

  2. 输入 [https://www.microsoft.com/store/productid/9p3395vx91nr] 选择 Slow,点击对勾

  3. 最下方找到文件:MicrosoftCorporationII.WindowsSubsystemForAndroid_xxxx_neutral ~ 8wekyb3d8bbwe.msibundle 的最新版文件,然后开始下载。

  4. 用管理员权限运行 PowerShell ,然后安装刚下载的文件:

# 安装命令如下: 请确保的路径正确:
Add-AppxPackage "D:\文件所在的路径\wsa.Msixbundle"

回车之后就开始安装。安装完成后,可以在Windows开始菜单中找到 “适用于 Android 的 Windows 子系统” 的应用图标。

三、在Win11 安卓子系统安装 APK 软件

“适用于 Android 的 Windows 子系统”内置亚马逊应用商店,这个软件商店非常鸡肋。可以使用 ADB 工具安装自己需要的 apk 软件

Windows 11 WSA 安装 APK 方法:

  1. 打开 WSA 安卓子系统设置页面,打开「开发人员模式」 选项

  2. 下载安卓 ADB 命令行调试工具,将 adb 命令加入到系统环境变量

  3. 打开 Windows 终端 (命令行),输入以下命令:

# 确保已正确将 adb 命令加入到系统的环境变量
# 执行下面的命令能看到 adb 版本号则表示 ok,如有错误,请检查环境变量是否配置正确
adb version

# 第 1 步:连接 WSA
adb connect 127.0.0.1:58526
# 其中 127.0.0.1为本地IP, 58526 是WSA 使用的端口号

# 第 2 步:安装 APK
# 连接成功之后,就能用下面命令来安装 APK 了
adb install 你的APK文件完整路径
# 注意 .apk 的路径最好无中文且无空格,否则需要用英文双引号包裹。
# 例如:
adb install d:\download\weixin.apk

# 最后按下回车即可安装
# 安装完成后,在 Windows 开始菜单的“所有应用”里就能找到你安装的 Android 应用

这样就能使用 adb 命令安装 apk 文件到 Windows 11 安卓子系统 WSA 了。重点是开启开发者模式,正确安装 adb 命令。

安装国内的 Android 应用商店

每次安装软件的时候使用adb命令比较麻烦。为了更方便地下载常用的安卓应用,我们可以在WSA安装一个国内的应用商店,然后通过它快速搜索下载各种常用的安卓应用和游戏。一些不包含在商店中的应用程序,通过apk文件安装。

Windows11 – 安卓子系统的特色

  • 支持将安卓 App 固定到开始菜单或任务栏,并通过鼠标、触摸或笔输入与它们交互。
  • 安卓 App 可集成到 Alt + Tab 和任务视图中,并能在 App 之间快速切换。
  • 可在操作中心中查看安卓 App 的推送通知,或在 Windows 应用程序和安卓 App 之间共享剪贴板。
  • 微软还添加了无障碍体验,许多 Windows 辅助功能设置都适用于安卓 App。

Windows10如何关闭自动更新

1. 问题描述

默认的Windows 更新中的暂停更新时间最长为35天,无法设置更大的天数。如果想“永久”暂停更新就需要另想办法。通过修改注册表的方式可以把这个日期设置为自己想要的。

2. 修改步骤

打开注册表,定位到:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings,新建一个类型为“DWORD (32)值”:

将其命名为FlightSettingsMaxPauseDays,基数选择十进制,然后输入你想暂停的最大天数即可(这里输入3000),

修改后不用重启电脑, 重新打开更新的高级选项,可以看到原本的35天已经变成了3000天。

Windows 下命令行工具校验MD5, SHA1, SHA256

使用Windows 10/11 自带工具 certuil 可以校验文件的 MD5, SHA1, SHA256,SHA512 等的哈希值。
cmd调出命令行,输入如下命令

certuil --hashfile <file_name> <hash_type>

例如:

certuil --hashfile win10.iso MD5
certuil --hashfile win10.iso SHA256

实际使用

PS D:\Downloads>  certutil -hashfile .\veket-2.0.6.iso MD5
MD5 的 .\veket-2.0.6.iso 哈希:
a5bcf7d8ac8035638227a7e7499f2d01
CertUtil: -hashfile 命令成功完成。

NFS 解决目标主机showmount -e信息泄露(CVE-1999-0554)

原文链接:https://www.cnblogs.com/yunxuanedu/p/14262757.html

企业中,一般都会使用NFS网络文件系统。最近笔者在项目上做等保测评的工作中,发现了一个“目标主机showmount -e信息泄露(CVE-1999-0554)“的问题。最终采取的解决措施如下:

1. 问题描述

目前,我有三台主机,分别为主机a,主机b和主机c,其中主机a为服务器,部署了nfs,只允许主机b使用,然而主机c可以通过showmount -e命令来浏览主机a的目录清单。

#主机a的nfs服务配置文件,其中10.28.7.210是主机b的IP地址
[root@a ~]# cat /etc/exports
/data  10.28.7.210/32(rw,sync)
#主机b使用showmount -e命令可以查看到的信息
[root@b ~]# showmount -e 10.28.7.253
Export list for 10.28.7.253:
/data 10.28.7.210/32
[root@b ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.28.7.210  netmask 255.255.255.0  broadcast 10.28.7.255
#主机c也可以使用showmount -e命令查看nfs服务器上共享出来的目录信息
[root@c ~]# showmount -e 10.28.7.253 
Export list for 10.28.7.253:
/data 10.28.7.210/32
[root@c ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:62:18:E8  
          inet addr:10.28.7.252  Bcast:10.28.7.255  Mask:255.255.255.0

2. 解决方法

在NFS服务器上的/etc/hosts.allow和/etc/hosts.deny文件添加以下内容即可解决该问题。

编辑/etc/hosts.allow文件

[root@a ~]# cat /etc/hosts.allow
#
# hosts.allow    This file contains access rules which are used to
#        allow or deny connections to network services that
#        either use the tcp_wrappers library or that have been
#        started through a tcp_wrappers-enabled xinetd.
#
#        See 'man 5 hosts_options' and 'man 5 hosts_access'
#        for information on rule syntax.
#        See 'man tcpd' for information on tcp_wrappers
#
#
mountd:10.28.7.210    #<==添加客户端IP地址,相当于白名单

编辑/etc/hosts.deny文件

[root@a ~]# cat /etc/hosts.deny 
#
# hosts.deny    This file contains access rules which are used to
#        deny connections to network services that either use
#        the tcp_wrappers library or that have been
#        started through a tcp_wrappers-enabled xinetd.
#
#        The rules in this file can also be set up in
#        /etc/hosts.allow with a 'deny' option instead.
#
#        See 'man 5 hosts_options' and 'man 5 hosts_access'
#        for information on rule syntax.
#        See 'man tcpd' for information on tcp_wrappers
#
#
mountd:all    #<==添加该行,相当于黑名单

在以上两个文件中添加对应内容之后,不需要重启nfs服务,即可生效

3. 结果测试

#主机c使用showmount -e命令,无法查看相关信息[root@c ~]# showmount -e 10.28.7.253 
rpc mount export: RPC: Authentication error; why = Failed (unspecified error)
[root@c ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:62:18:E8  
          inet addr:10.28.7.252  Bcast:10.28.7.255  Mask:255.255.255.0
#主机b使用正常[root@b ~]# showmount -e 10.28.7.253
Export list for 10.28.7.253:
/data 10.28.7.210/32
[root@b ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.28.7.210  netmask 255.255.255.0  broadcast 10.28.7.255

VirtualBox Linux 虚拟机下共享文件夹权限不够

VirtualBox 虚拟机下Linux 共享文件在/media/目录下。如果设置的共享目录是 ShareDoc, 共享文件夹的地址是
"`/media/sf_ShareDoc". 访问时提示权限不够.

在虚拟机下查看共享文件夹的属性,发现该目录的所有者是root,所属组是vboxsf。而一般登录的用户和所属组都是(你的用户名),所以确实没有权限。

ls -l drwxrwx---  1 root vboxsf    0 84 10:32 sf_ShareDoc

而共享文件夹的所有者和所属组是不能修改的。那么解决权限不足问题的方法就是将自己登录的用户,添加到vboxsf组中。

sudo usermod -aG vboxsf $(whoami)
# 或者
sudo usermod -aG vboxsf your_name
重启虚拟机,共享文件夹可以使用了。

防空防灾警报

预先警报信号

预先警报信号是在敌方对我方有空袭预兆时发放。
鸣响方式是:鸣36秒停24秒,反复3遍为一个周期,时间为3分钟。战时根据需要可循环发放。预先警报信号的特点是声音低沉、有力、平缓,间隔时间较长。
它告知市民,敌人可能对我城市进行空袭,要提前做好各种防空袭准备。听到预先警报信号后,在室内的人员,应当按照防空袭疏散掩蔽预案,立即拉断电源、关闭燃气、熄灭炉火,携带好个人防护器材和必需的生活用品,按定人、定位、定路线的要求,迅速有序地进入人防工程或疏散地域隐蔽。在公共场所的人员,应当听从有关部门人员的指挥,迅速到指定地点隐蔽,夜间应严格遵守灯火管制的规定熄灭灯火。

空袭警报信号

空袭警报信号,是在敌方对我方空袭征候明显,将要展开攻击或已开始攻击时发放。
鸣响方式是:鸣6秒停6秒,反复15遍为一个周期,时间为3分钟。空袭警报信号的特点是声音低沉、急促,鸣停时间相同。
它告知市民,敌机或其他空袭兵器已经临近,空袭行动即将或已经开始,市民应迅速就近进入人防工程或疏散地域隐蔽。情况紧急无法进入防空工程或疏散地域时,要利用地形、地物就近隐蔽。在室内的市民,可在5层以上钢筋混凝土结构房的楼房底层走廊或楼梯下,或在跨度较小的卫生间等处藏身,或在靠墙角桌下床下卧倒。要避开门窗和易燃、易爆物。在公共场所的人员,不要慌张、拥挤、乱跑,可就近进入地下室、地铁站或钢筋混凝土建筑底层隐蔽,也可利用地形、地物分散隐蔽,不要在高压线、加油站、加气站等危险处停留。在空旷地带的人员,可就近选择低洼地、路沟边、土堆旁、大树下隐蔽,迅速卧倒,脸向下、双手置于胸前,在空袭中,尽力使头和胸部离开地面。

解除警报信号

解除警报信号,是在敌方对我方阶段空袭危险消除或战情缓和时发放。
鸣放方式是:连续鸣3分钟。解除警报信号的特点是声音低沉、缓慢、连续鸣放,没有间隔。
它告知市民,空袭情况已解除,可以按照防空袭预案消除空袭后果,恢复城市正常生产和生活秩序,市民应配合人防专业队伍开展消除空袭后果工作,就近救护伤员、找寻被困人员,扑灭初起火灾、清理废墟等。警报解除后,市民仍要注意收听广播,了解解除警报后人员行动的注意事项,关注疫情、放射性沾染、染毒或带菌情况等通报,了解敌空袭规模、方式及城市破坏情况通报,以便做好再次防空袭行动准备。

灾情警报信号

灾情警报信号,是在重大自然灾害或有毒、有害物质等灾害即将来临时发放。
鸣响方式是:鸣15秒停10秒,再鸣5秒停10秒,反复3遍为一个周期,计时2分钟。灾情警报信号的特点是声音低沉、短促,间隔时间相同。
它告知市民,重大自然灾害或有毒、有害物质即将来临,要提前做好各种应急准备,以应对自然灾害的突然袭击

Linux 命令行中比较两个目录的5个方法

在 Linux 中比较两个目录是一项常见的工作,特别是当需要确保两个目录之间的文件完全相同时。

1. 使用 diff 命令比较两个目录

diff 命令可以比较两个文件或目录之间的差异。要比较两个目录,只需将两个目录作为参数传递给 diff 命令即可。例如,假设我们有两个目录“dir1”和“dir2”,我们可以使用以下命令比较它们之间的差异:

$ diff -r dir1/ dir2/

在这个命令中,“-r”选项告诉 diff 命令递归比较目录及其子目录中的所有文件。diff 命令将列出两个目录之间的差异,包括文件名和行号。行前面的符号可以告诉你哪些行存在于第一个目录中,哪些行存在于第二个目录中。

2. 使用 rsync 命令比较两个目录

rsync 命令是一个强大的文件同步工具,它可以比较两个目录之间的差异。使用 rsync 命令比较两个目录,只需将两个目录作为参数传递给 rsync 命令即可。

例如,要比较目录“dir1”和“dir2”,可以使用以下命令:

$ rsync -av --dry-run dir1/ dir2/

在这个命令中,“-av”选项表示以递归模式同步目录,“--dry-run”选项表示不要实际执行同步操作,而只是显示哪些文件将被同步。

$ rsync -avz --delete /path/to/dir1/ /path/to/dir2/

其中,-a 表示归档模式,-v 表示输出详细信息,-z 表示启用压缩传输,并使用 --delete 选项删除目标目录中不再存在于源目录中的文件。
rsync 命令将列出两个目录之间的差异,包括文件名和文件属性。行前面的符号可以告诉你哪些文件存在于第一个目录中,哪些文件存在于第二个目录中。

3. 使用 find 命令比较两个目录

find 命令可以递归遍历目录树,并执行指定的命令。要比较两个目录之间的差异,可以使用 find 命令找到两个目录中的所有文件,并将它们发送到 diff 命令进行比较。例如,要比较目录“dir1”和“dir2”,可以使用以下命令:

$ diff <(cd dir1; find . -type f | sort) <(cd dir2; find . -type f | sort)

在这个命令中,“<( )”符号表示将命令的输出作为文件输入传递给 diff 命令。

4. Meld 工具

Meld 是一款免费的图形化比较工具,可以用来比较文件和目录之间的差异。它不仅可以显示文件和目录之间的差异,还可以让用户轻松地合并它们。以下是在 Linux 中安装和使用 Meld 的示例命令:

$ sudo apt-get install meld   # Ubuntu/Debian 安装命令
$ meld /path/to/dir1 /path/to/dir2

在打开的 Meld 窗口中,你可以看到两个目录之间的所有不同之处,并且可以使用 Meld 提供的工具合并它们。

5. Kompare 工具

Kompare 是另一个免费的图形化比较工具,可以用来比较文件和目录之间的差异。它提供了类似于 Meld 的界面,让用户可以轻松地找到不同之处并合并它们。以下是在 Linux 中安装和使用 Kompare 的示例命令:

$ sudo apt-get install kompare   # Ubuntu/Debian 安装命令
$ kompare /path/to/dir1 /path/to/dir2

Linux 日志输出等级:/proc/sys/kernel/printk

作用

通过读写/proc/sys/kernel/printk文件可读取和修改控制台的日志级别。如插入U盘,键鼠等弹出设备的输入输出msg信息等。方便后续用 dmseg 命令查看

日志等级

内核通过printk() 输出的信息具有日志级别,日志级别是通过在printk() 输出的字符串前加一个带尖括号的整数来控制的,如printk("<6>Hello, world!\n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。

#define KERN_EMERG  "<0>"   /* systemis unusable */
#define KERN_ALERT  "<1>"   /* actionmust be taken immediately */
#define KERN_CRIT    "<2>"   /*critical conditions */
#define KERN_ERR     "<3>"   /* errorconditions */
#define KERN_WARNING "<4>"   /* warning conditions */
#define KERN_NOTICE  "<5>"   /* normalbut significant */
#define KERN_INFO    "<6>"   /*informational */
#define KERN_DEBUG   "<7>"   /*debug-level messages */

未指定日志级别的printk() 采用的默认级别是DEFAULT_MESSAGE_LOGLEVEL,这个宏在kernel/printk.c 中被定义为整数4,即对应KERN_WARNING在宏定义中,数值越小,优先级越高,其紧急和严重程度就越高。

日志等级文件

在系统下通过读写/proc/sys/kernel/printk文件,来读取控制台的日志信息:

cat /proc/sys/kernel/printk
4       4       1       7
(1) 控制台日志级别:优先级高于该值的消息将被打印至控制台。
(2) 缺省的消息日志级别:将用该值来打印没有优先级的消息。
(3) 最低的控制台日志级别:控制台日志级别可能被设置的最小值。
(4) 缺省的控制台:控制台日志级别的缺省值。

这四个值是在kernel/printk.c中被定义的:

int console_printk[4] = {
                DEFAULT_CONSOLE_LOGLEVEL,       /* console_loglevel */
                DEFAULT_MESSAGE_LOGLEVEL,       /* default_message_loglevel */
                MINIMUM_CONSOLE_LOGLEVEL,     /* minimum_console_loglevel */
                DEFAULT_CONSOLE_LOGLEVEL,       /* default_console_loglevel */
};

设置日志信息等级

cat /proc/sys/kernel/printk
4       4       1       7
echo 8 > /proc/sys/kernel/printk
cat /proc/sys/kernel/printk
8       4       1       7
echo 8 1 1 1 > /proc/sys/kernel/printk
cat /proc/sys/kernel/printk
8       1       1       1