【学习笔记】13.5 使用者的特殊 shell 与 PAM 模块

我们前面一直谈到的大多是一般身份使用者与系统管理员 (root) 的相关操作, 而且大多是讨论关于可登陆系统的帐号来说。那么换个角度想,如果我今天想要创建的, 是一个”仅能使用 mail server 相关邮件服务的帐号,而该帐号并不能登陆 Linux 主机”呢?如果不能给予该帐号一个密码,那么该帐号就无法使用系统的各项资源,当然也包括 mail 的资源, 而如果给予一个密码,那么该帐号就可能可以登陆 Linux 主机啊!呵呵~伤脑筋吧~ 所以,下面让我们来谈一谈这些有趣的话题啰!

另外,在本章之前谈到过 /etc/login.defs 文件中,关于密码长度应该默认是 5 个字串长度,但是我们上面也谈到,该设置值已经被 PAM 模块所取代了,那么 PAM 是什么?为什么他可以影响我们使用者的登陆呢?这里也要来谈谈的!

13.5.1 特殊的 shell, /sbin/nologin

在本章一开头的 passwd 文件结构里面我们就谈过系统帐号这玩意儿,这玩意儿的 shell 就是使用 /sbin/nologin ,重点在于系统帐号是不需要登陆的!所以我们就给他这个无法登陆的合法 shell。 使用了这个 shell 的用户即使有了密码,你想要登陆时他也无法登陆,因为会出现如下的讯息喔:

This account is currently not available.
我们所谓的”无法登陆”指的仅是:”这个使用者无法使用 bash 或其他 shell 来登陆系统”而已, 并不是说这个帐号就无法使用其他的系统资源喔! 举例来说,各个系统帐号,打印工作由 lp 这个帐号在管理, WWW 服务由 apache 这个帐号在管理, 他们都可以进行系统程序的工作,但是”就是无法登陆主机取得互动的 shell”而已啦!_

换个角度来想,如果我的 Linux 主机提供的是邮件服务,所以说,在这部 Linux 主机上面的帐号, 其实大部分都是用来收受主机的信件而已,并不需要登陆主机的呢! 这个时候,我们就可以考虑让单纯使用 mail 的帐号以 /sbin/nologin 做为他们的 shell , 这样,最起码当我的主机被尝试想要登陆系统以取得 shell 环境时,可以拒绝该帐号呢!

另外,如果我想要让某个具有 /sbin/nologin 的使用者知道,他们不能登陆主机时, 其实我可以创建” /etc/nologin.txt “这个文件, 并且在这个文件内说明不能登陆的原因,那么下次当这个使用者想要登陆系统时, 屏幕上出现的就会是 /etc/nologin.txt 这个文件的内容,而不是默认的内容了!

例题:当使用者尝试利用纯 mail 帐号 (例如 myuser3) 时,利用 /etc/nologin.txt 告知使用者不要利用该帐号登陆系统。答:直接以 vim 编辑该文件,内容可以是这样:

[root@study ~]# vim /etc/nologin.txt
This account is system account or mail account.

Please DO NOT use this account to login my Linux server.

想要测试时,可以使用 myuser3 (此帐号的 shell 是 /sbin/nologin) 来测试看看!

[root@study ~]# su - myuser3
This account is system account or mail account.

Please DO NOT use this account to login my Linux server.

结果会发现与原本的默认讯息不一样喔! _

在过去,我们想要对一个使用者进行认证 (authentication),得要要求使用者输入帐号密码, 然后通过自行撰写的程序来判断该帐号密码是否正确。也因为如此,我们常常得使用不同的机制来判断帐号密码, 所以搞的一部主机上面拥有多个各别的认证系统,也造成帐号密码可能不同步的验证问题! 为了解决这个问题因此有了 PAM (Pluggable Authentication Modules, 嵌入式模块) 的机制!

PAM 可以说是一套应用程序接口 (Application Programming Interface, API),他提供了一连串的验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。由于 PAM 仅是一套验证的机制,又可以提供给其他程序所调用引用,因此不论你使用什么程序,都可以使用 PAM 来进行验证,如此一来,就能够让帐号密码或者是其他方式的验证具有一致的结果!也让程序设计师方便处理验证的问题喔! [5]

PAM 模块与其他程序的相关性图13.5.1、PAM 模块与其他程序的相关性

如上述的图示, PAM 是一个独立的 API 存在,只要任何程序有需求时,可以向 PAM 发出验证要求的通知, PAM 经过一连串的验证后,将验证的结果回报给该程序,然后该程序就能够利用验证的结果来进行可登陆或显示其他无法使用的讯息。 这也就是说,你可以在写程序的时候将 PAM 模块的功能加入,就能够利用 PAM 的验证功能啰。 因此目前很多程序都会利用 PAM 喔!所以我们才要来学习他啊!

PAM 用来进行验证的数据称为模块 (Modules),每个 PAM 模块的功能都不太相同。举例来说, 还记得我们在本章使用 passwd 指令时,如果随便输入字典上面找的到的字串, passwd 就会回报错误信息了!这是为什么呢?这就是 PAM 的 pam_cracklib.so 模块的功能!他能够判断该密码是否在字典里面! 并回报给密码修改程序,此时就能够了解你的密码强度了。

所以,当你有任何需要判断是否在字典当中的密码字串时,就可以使用 pam_cracklib.so 这个模块来验证! 并根据验证的回报结果来撰写你的程序呢!这样说,可以理解 PAM 的功能了吧?

PAM 借由一个与程序相同文件名的配置文件来进行一连串的认证分析需求。我们同样以 passwd 这个指令的调用 PAM 来说明好了。 当你执行 passwd 后,这支程序调用 PAM 的流程是:

  • 使用者开始执行 /usr/bin/passwd 这支程序,并输入密码;
  • passwd 调用 PAM 模块进行验证;
  • PAM 模块会到 /etc/pam.d/ 找寻与程序 (passwd) 同名的配置文件;
  • 依据 /etc/pam.d/passwd 内的设置,引用相关的 PAM 模块逐步进行验证分析;
  • 将验证结果 (成功、失败以及其他讯息) 回传给 passwd 这支程序;
  • passwd 这支程序会根据 PAM 回传的结果决定下一个动作 (重新输入新密码或者通过验证!)

从上头的说明,我们会知道重点其实是 /etc/pam.d/ 里面的配置文件,以及配置文件所调用的 PAM 模块进行的验证工作! 既然一直谈到 passwd 这个密码修改指令,那我们就来看看 /etc/pam.d/passwd 这个配置文件的内容是怎样吧!

[root@study ~]# cat /etc/pam.d/passwd
#%PAM-1.0  <==PAM&#x7248;&#x672C;&#x7684;&#x8BF4;&#x660E;&#x800C;&#x5DF2;&#xFF01;
auth       include      system-auth   <==&#x6BCF;&#x4E00;&#x884C;&#x90FD;&#x662F;&#x4E00;&#x4E2A;&#x9A8C;&#x8BC1;&#x7684;&#x8FC7;&#x7A0B;
account    include      system-auth
password   substack     system-auth
-password   optional    pam_gnome_keyring.so use_authtok
password   substack     postlogin
&#x9A8C;&#x8BC1;&#x7C7B;&#x522B;   &#x63A7;&#x5236;&#x6807;&#x51C6;     PAM &#x6A21;&#x5757;&#x4E0E;&#x8BE5;&#x6A21;&#x5757;&#x7684;&#x53C2;&#x6570;

在这个配置文件当中,除了第一行宣告 PAM 版本之外,其他任何” # “开头的都是注解,而每一行都是一个独立的验证流程, 每一行可以区分为三个字段,分别是验证类别(type)、控制标准(flag)、PAM的模块与该模块的参数。 下面我们先来谈谈验证类别与控制标准这两项数据吧!

Tips 你会发现在我们上面的表格当中出现的是” include (包括) “这个关键字,他代表的是”请调用后面的文件来作为这个类别的验证”, 所以,上述的每一行都要重复调用 /etc/pam.d/system-auth 那个文件来进行验证的意思!

验证类别主要分为四种,分别说明如下:

这四个验证的类型通常是有顺序的,不过也有例外就是了。 会有顺序的原因是,(1)我们总是得要先验证身份 (auth) 后, (2)系统才能够借由使用者的身份给予适当的授权与权限设置 (account),而且(3)登陆与登出期间的环境才需要设置, 也才需要记录登陆与登出的信息 (session)。如果在运行期间需要密码修订时,(4)才给予 password 的类别。这样说起来, 自然是需要有点顺序吧!

那么”验证的控制旗标(control flag)”又是什么?简单的说,他就是”验证通过的标准”啦! 这个字段在管控该验证的放行方式,主要也分为四种控制方式:

如果将这些控制旗标以图示的方式配合成功与否的条件绘图,会有点像下面这样:

PAM 控制旗标所造成的回报流程图13.5.2、PAM 控制旗标所造成的回报流程

程序运行过程中遇到验证时才会去调用 PAM ,而 PAM 验证又分很多类型与控制,不同的控制旗标所回报的讯息并不相同。 如上图所示, requisite 失败就回报了并不会继续,而 sufficient 则是成功就回报了也不会继续。 至于验证结束后所回报的信息通常是”succes 或 failure “而已,后续的流程还需要该程序的判断来继续执行才行。

谈完了配置文件的语法后,现在让我们来查阅一下 CentOS 5.x 提供的 PAM 默认文件的内容是啥吧! 由于我们常常需要通过各种方式登陆 (login) 系统,因此就来看看登陆所需要的 PAM 流程为何:

[root@study ~]# cat /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so
&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;&#x5176;&#x5B9E; login &#x4E5F;&#x8C03;&#x7528;&#x591A;&#x6B21;&#x7684; system-auth &#xFF0C;&#x6240;&#x4EE5;&#x4E0B;&#x9762;&#x5217;&#x51FA;&#x8BE5;&#x914D;&#x7F6E;&#x6587;&#x4EF6;

[root@study ~]# cat /etc/pam.d/system-auth
#%PAM-1.0
This file is auto-generated.

User changes will be destroyed the next time authconfig is run.

auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

上面这个表格当中使用到非常多的 PAM 模块,每个模块的功能都不太相同,详细的模块情报可以在你的系统中找到:

/etc/pam.d/*&#xFF1A;&#x6BCF;&#x4E2A;&#x7A0B;&#x5E8F;&#x4E2A;&#x522B;&#x7684; PAM &#x914D;&#x7F6E;&#x6587;&#x4EF6;&#xFF1B;
/lib64/security/*&#xFF1A;PAM &#x6A21;&#x5757;&#x6587;&#x4EF6;&#x7684;&#x5B9E;&#x9645;&#x653E;&#x7F6E;&#x76EE;&#x5F55;&#xFF1B;
/etc/security/*&#xFF1A;&#x5176;&#x4ED6; PAM &#x73AF;&#x5883;&#x7684;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#xFF1B;
/usr/share/doc/pam-*/&#xFF1A;&#x8BE6;&#x7EC6;&#x7684; PAM &#x8BF4;&#x660E;&#x6587;&#x6863;&#x3002;

例如鸟哥使用未 update 过的 CentOS 7.1 ,pamnologin 说明文档在: /usr/share/doc/pam-1.1.8/txts/README.pam_nologin。你可以自行查阅一下该模块的功能。 鸟哥这里仅简单介绍几个较常使用的模块,详细的信息还得要您努力查阅参考书呢! ^^

总之,就是依据验证类别 (type) 来看,然后先由 login 的设置值去查阅,如果出现” include system-auth ” 就转到 system-auth 文件中的相同类别,去取得额外的验证流程就是了。然后再到下一个验证类别,最终将所有的验证跑完! 就结束这次的 PAM 验证啦!

经过这样的验证流程,现在你知道为啥 /etc/nologin 存在会有问题,也会知道为何你使用一些远端连线机制时, 老是无法使用 root 登陆的问题了吧?没错!这都是 PAM 模块提供的功能啦!

例题:为什么 root 无法以 telnet 直接登陆系统,但是却能够使用 ssh 直接登陆?答:一般来说, telnet 会引用 login 的 PAM 模块,而 login 的验证阶段会有 /etc/securetty 的限制! 由于远端连线属于 pts/n (n 为数字) 的动态终端机接口设备名称,并没有写入到 /etc/securetty , 因此 root 无法以 telnet 登陆远端主机。至于 ssh 使用的是 /etc/pam.d/sshd 这个模块, 你可以查阅一下该模块,由于该模块的验证阶段并没有加入 pam_securetty ,因此就没有 /etc/securetty 的限制!故可以从远端直接连线到服务器端。

另外,关于 telnet 与 ssh 的细部说明,请参考鸟哥的 Linux 私房菜服务器篇

除了前一小节谈到的 /etc/securetty会影响到 root 可登陆的安全终端机, /etc/nologin 会影响到一般使用者是否能够登陆的功能之外,我们也知道 PAM 相关的配置文件在 /etc/pam.d , 说明文档在 /usr/share/doc/pam-(版本) ,模块实际在 /lib64/security/ 。那么还有没有相关的 PAM 文件呢? 是有的,主要都在 /etc/security 这个目录内!我们下面介绍几个可能会用到的配置文件喔!

我们在第十章谈到的 ulimit 功能中, 除了修改使用者的 ~/.bashrc 配置文件之外,其实系统管理员可以统一借由 PAM 来管理的! 那就是 /etc/security/limits.conf 这个文件的设置了。这个文件的设置很简单,你可以自行参考一下该文件内容。 我们这里仅作个简单的介绍:

&#x8303;&#x4F8B;&#x4E00;&#xFF1A;vbird1 &#x8FD9;&#x4E2A;&#x7528;&#x6237;&#x53EA;&#x80FD;&#x521B;&#x5EFA; 100MB &#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x4E14;&#x5927;&#x4E8E; 90MB &#x4F1A;&#x8B66;&#x544A;
[root@study ~]# vim /etc/security/limits.conf
vbird1    soft        fsize         90000
vbird1    hard        fsize        100000
#&#x5E10;&#x53F7;   &#x9650;&#x5236;&#x4F9D;&#x636E;    &#x9650;&#x5236;&#x9879;&#x76EE;     &#x9650;&#x5236;&#x503C;
&#x7B2C;&#x4E00;&#x5B57;&#x6BB5;&#x4E3A;&#x5E10;&#x53F7;&#xFF0C;&#x6216;&#x8005;&#x662F;&#x7FA4;&#x7EC4;&#xFF01;&#x82E5;&#x4E3A;&#x7FA4;&#x7EC4;&#x5219;&#x524D;&#x9762;&#x9700;&#x8981;&#x52A0;&#x4E0A; @ &#xFF0C;&#x4F8B;&#x5982; @projecta
&#x7B2C;&#x4E8C;&#x5B57;&#x6BB5;&#x4E3A;&#x9650;&#x5236;&#x7684;&#x4F9D;&#x636E;&#xFF0C;&#x662F;&#x4E25;&#x683C;&#xFF08;hard&#xFF09;&#xFF0C;&#x8FD8;&#x662F;&#x4EC5;&#x4E3A;&#x8B66;&#x544A;&#xFF08;soft&#xFF09;&#xFF1B;
&#x7B2C;&#x4E09;&#x5B57;&#x6BB5;&#x4E3A;&#x76F8;&#x5173;&#x9650;&#x5236;&#xFF0C;&#x6B64;&#x4F8B;&#x4E2D;&#x9650;&#x5236;&#x6587;&#x4EF6;&#x5927;&#x5C0F;&#xFF0C;
&#x7B2C;&#x56DB;&#x5B57;&#x6BB5;&#x4E3A;&#x9650;&#x5236;&#x7684;&#x503C;&#xFF0C;&#x5728;&#x6B64;&#x4F8B;&#x4E2D;&#x5355;&#x4F4D;&#x4E3A; KB&#x3002;
&#x82E5;&#x4EE5; vbird1 &#x767B;&#x9646;&#x540E;&#xFF0C;&#x8FDB;&#x884C;&#x5982;&#x4E0B;&#x7684;&#x64CD;&#x4F5C;&#x5219;&#x4F1A;&#x6709;&#x76F8;&#x5173;&#x7684;&#x9650;&#x5236;&#x51FA;&#x73B0;&#xFF01;
[vbird1@study ~]$ ulimit -a
....&#xFF08;&#x524D;&#x9762;&#x7701;&#x7565;&#xFF09;....

file size               &#xFF08;blocks, -f&#xFF09; 90000
....&#xFF08;&#x540E;&#x9762;&#x7701;&#x7565;&#xFF09;....

[vbird1@study ~]$ dd if=/dev/zero of=test bs=1M count=110
File size limit exceeded
[vbird1@study ~]$ ll --block-size=K test
-rw-rw-r--. 1 vbird1 vbird1 90000K Jul 22 01:33 test
&#x679C;&#x7136;&#x6709;&#x9650;&#x5236;&#x5230;&#x4E86;
&#x8303;&#x4F8B;&#x4E8C;&#xFF1A;&#x9650;&#x5236; pro1 &#x8FD9;&#x4E2A;&#x7FA4;&#x7EC4;&#xFF0C;&#x6BCF;&#x6B21;&#x4EC5;&#x80FD;&#x6709;&#x4E00;&#x4E2A;&#x4F7F;&#x7528;&#x8005;&#x767B;&#x9646;&#x7CFB;&#x7EDF; &#xFF08;maxlogins&#xFF09;
[root@study ~]# vim /etc/security/limits.conf
@pro1   hard   maxlogins   1
&#x5982;&#x679C;&#x8981;&#x4F7F;&#x7528;&#x7FA4;&#x7EC4;&#x529F;&#x80FD;&#x7684;&#x8BDD;&#xFF0C;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#x4F3C;&#x4E4E;&#x5BF9;&#x521D;&#x59CB;&#x7FA4;&#x7EC4;&#x624D;&#x6709;&#x6548;&#x5594;&#xFF01;&#x800C;&#x5982;&#x679C;&#x4F60;&#x5C1D;&#x8BD5;&#x591A;&#x4E2A; pro1 &#x7684;&#x767B;&#x9646;&#x65F6;&#xFF0C;
&#x7B2C;&#x4E8C;&#x4E2A;&#x4EE5;&#x540E;&#x5C31;&#x65E0;&#x6CD5;&#x767B;&#x9646;&#x4E86;&#x3002;&#x800C;&#x4E14;&#x5728; /var/log/secure &#x6587;&#x4EF6;&#x4E2D;&#x8FD8;&#x4F1A;&#x51FA;&#x73B0;&#x5982;&#x4E0B;&#x7684;&#x4FE1;&#x606F;&#xFF1A;
pam_limits&#xFF08;login:session&#xFF09;: Too many logins &#xFF08;max 1&#xFF09; for pro1

这个文件挺有趣的,而且是设置完成就生效了,你不用重新启动任何服务的! 但是 PAM 有个特殊的地方,由于他是在程序调用时才予以设置的,因此你修改完成的数据, 对于已登陆系统中的使用者是没有效果的,要等他再次登陆时才会生效喔!另外, 上述的设置请在测试完成后立刻注解掉,否则下次这两个使用者登陆就会发生些许问题啦! _

/var/log/secure, /var/log/messages
如果发生任何无法登陆或者是产生一些你无法预期的错误时,由于 PAM 模块都会将数据记载在 /var/log/secure 当中,所以发生了问题请务必到该文件内去查询一下问题点!举例来说, 我们在 limits.conf 的介绍内的范例二,就有谈到多重登陆的错误可以到 /var/log/secure 内查阅了! 这样你也就知道为何第二个 pro1 无法登陆啦!_

Original: https://www.cnblogs.com/nightnine/p/14697303.html
Author: dozeoo
Title: 【学习笔记】13.5 使用者的特殊 shell 与 PAM 模块

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529791/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • prometheus监控

    介绍 Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常…

    Linux 2023年6月6日
    088
  • PySimpleGUI 踩坑记

    最近在写一些处理芯片数据的代码,想给小伙伴们用,就想到写个GUI的页面,正好有人推荐使用PySimpleGUI, 首次使用就遇到了坑: 之前没有加try,运行的时候直接报错 inv…

    Linux 2023年6月14日
    068
  • Java秒杀系统四:高并发优化

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月11日
    092
  • mysql 8.0.20 忘记密码,修改密码

    由于mysql更新较快,8.0对比5.7很多操作有了变化,特别修改密码,和忘记密码这一块已经和以前完全不一样了。 一、 忘记密码 1、 在my.cnf 文件中添加skip-gran…

    Linux 2023年6月6日
    087
  • 什么是虚拟计算机集群

    这个问题来自近期几位网友的私信,他们不约而同问到一个问题:什么是虚拟计算机集群?Laxcus分布式操作系统是如何做的?下面就正式回答一下这个问题。 在我们传统的认知里,或者大家平常…

    Linux 2023年6月6日
    089
  • 利用卷积神经网络处理cifar图像分类

    这是一个图像分类的比赛CIFAR( CIFAR-10 – Object Recognition in Images ) 首先我们需要下载数据文件,地址: http://…

    Linux 2023年6月6日
    0102
  • Linux——基础命令用法(下)

    一、linux用户 1、什么是用户 用户用于运行某些进程并拥有某些文件或目录。 [En] Users are used to run certain processes and o…

    Linux 2023年5月27日
    087
  • linux与windows的批处理应用

    本文主要记录一下,不同服务器部署springboot项目时,用到的批处理命令 linux,针对maven-assembly-plugin打的tar.gz包的springboot项目…

    Linux 2023年6月14日
    082
  • JavaScript this

    本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。 博主…

    Linux 2023年6月13日
    080
  • mysql基本操作

    mysql常用命令: 1查询数据库 show database; 2切换库 use test; 3查看库里的表 show tables; 4查看表里的字段 desc tb_name…

    Linux 2023年6月6日
    082
  • Linux——基础命令用法(上)

    一、Linux基础命令 1、Linux命令的语法 一条完整的Linux命令的组成部分: 命令 选项 参数 命令:是某个具体的功能 选项:是对函数的修改(通常以-开头,-表示选项的短…

    Linux 2023年5月27日
    069
  • NewReplacer使用技巧

    上次写博客至今有段时间了,这些日子,认真过,努力过,职场中不管有哪些让人失意或不快的事,终归到底,是自己不够强大。。。 好吧,新的一年,不磨磨唧唧了,一般处理xss漏洞使用正则匹配…

    Linux 2023年6月6日
    087
  • Windows 11 绕过 TPM 方法

    在 Windows 11 安装界面按 Shift + F10 打开命令行界面,执行如下命令: REG ADD HKLM\SYSTEM\Setup\LabConfig /v Bypa…

    Linux 2023年6月13日
    092
  • 不割韭菜,纯分享:剖析HTML中的类,运维开发必备前端技能,我们一起坚持。

    写在开篇 开篇之前,先提个问题,什么是类?分类吗?可以这么说吧!我们可以给物体分类,也可以给人分类。正所谓,物以类聚,人以群分。难道我们这里是给元素分类?用分类来理解是不准确的啦!…

    Linux 2023年6月7日
    090
  • jmeter压测 报connect reset和unexpected end of file from server的解决方案

    今天做负载压测,500并发没有报错,500并发以上就报错,报错率很高,主要有两种错误: 报错1: 报错2: 解决方案: 1.压测机的注册表中添加 DefaultReceiveWin…

    Linux 2023年6月8日
    078
  • 高通方案的Android设备几种开机模式的进入与退出

    高通方案的Android设备主要有以下几种开机模式,Android、EDL、Fastboot、Recovery和FFBM,其进入及退出的方式如下表。 adb reboot boot…

    Linux 2023年6月7日
    0114
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球