linux
linux下设置密码复杂度限制,怎么设置?
一、linux下设置密码复杂度限制,怎么设置?
在linux,设置密码复杂度的方法有几个
1. 一个是在/etc/login.defs文件,里面几个选项
PASS_MAX_DAYS 90 #密码最长过期天数
PASS_MIN_DAYS 80 #密码最小过期天数
PASS_MIN_LEN 10 #密码最小长度
PASS_WARN_AGE 7 #密码过期警告天数
2. 另外一个方法是,修改/etc/pam.d/system-auth文件
找到 password requisite pam_cracklib.so这么一行替换成如下:
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
参数含义:
尝试次数:5
最少不同字符:3
最小密码长度:10
最少大写字母:1
最少小写字母:3
最少数字:3
密码字典:/usr/share/cracklib/pw_dict
这样设置好,你可以做一下测试,不过需要先退出root,因为root用户并不会受这些限制,它可以设置任意的密码。
二、如何在Linux为系统用户设置密码复杂度策略?
这是linux密码策略决定的,建议用大写+数字+特殊符号,这种策略是可以更改的,
1、使用配置文件/etc/pam.conf
该文件是由如下的行所组成的:
service-namemodule-typecontrol-flagmodule-patharguments
service-name服务的名字,比如telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务。
module-type模块类型有四种:auth、account、session、password,即对应PAM所支持的四种管理方式。同一个服务可以调用多个PAM模块进行认证,这些模块构成一个stack。
control-flag用来告诉PAM库该如何处理与该服务相关的PAM模块的成功或失败情况。它有四种可能的值:required,requisite,sufficient,optional。
required表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即通知用户,而是要等到同一stack中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必要条件。
requisite与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一stack内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件。注:这种只有RedHat支持,Solaris不支持。
sufficient表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块,但是如果本模块返回失败的话可以忽略。可以认为是一个充分条件。
optional表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。
对于control-flag,从Linux-PAM-0.63版本起,支持一种新的语法,具体可参看LinuxPAM文档。
module-path用来指明本模块对应的程序文件的路径名,一般采用绝对路径,如果没有给出绝对路径,默认该文件在目录/usr/lib/security下面。
arguments是用来传递给该模块的参数。一般来说每个模块的参数都不相同,可以由该模块的开发者自己定义,但是也有以下几个共同的参数:
debug该模块应当用syslog()将调试信息写入到系统日志文件中。
no_warn表明该模块不应把警告信息发送给应用程序。
use_first_pass表明该模块不能提示用户输入密码,而应使用前一个模块从用户那里得到的密码。
try_first_pass表明该模块首先应当使用前一个模块从用户那里得到的密码,如果该密码验证不通过,再提示用户输入新的密码。
use_mapped_pass该模块不能提示用户输入密码,而是使用映射过的密码。
expose_account允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏用户名会对安全造成一定程度的威胁。
2、使用配置目录/etc/pam.d/(只适用于RedHatLinux)
该目录下的每个文件的名字对应服务名,例如ftp服务对应文件/etc/pam.d/ftp。如果名为xxxx的服务所对应的配置文件/etc/pam.d/xxxx不存在,则该服务将使用默认的配置文件/etc/pam.d/other。每个文件由如下格式的文本行所构成:
module-typecontrol-flagmodule-patharguments
每个字段的含义和/etc/pam.conf中的相同。
由于公司使用的是RedHat的Linux故此我将使用pam.d这个配置目录。密码复杂度通过/etc/pam.d/system-auth这个文件来实现的故此我们先看一下默认有什么内容然后将这个文件备份一个:
在这个文件中我们会用到pam_cracklib.so这个模块。pam_cracklib.so是一个常用并且非常重要的PAM模块。该模块主要的作用是对用户密码的强健性进行检测。即检查和限制用户自定义密码的长度、复杂度和历史等。如不满足上述强度的密码将拒绝使用。
pam_cracklib.so比较重要和难于理解的是它的一些参数和计数方法,其常用参数包括:
debug:将调试信息写入日志;
type=xxx:当添加/修改密码时,系统给出的缺省提示符是“NewUNIXpassword:”以及“RetypeUNIX
password:”,而使用该参数可以自定义输入密码的提示符,比如指定type=yourownword;
retry=N:定义登录/修改密码失败时,可以重试的次数;
Difok=N:定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;
minlen=N:定义用户密码的最小长度;
dcredit=N:定义用户密码中必须包含多少个数字;
ucredit=N:定义用户密码中必须包含多少个大写字母;
lcredit=N:定义用户密码中必须包含多少个小些字母;
ocredit=N:定义用户密码中必须包含多少个特殊字符(除数字、字母之外)
三、linux设置密码?
Linux系统的安全,可以给系统设置开机密码。注意,“开机密码”和“登录密码”是不同的
登录密码就是我们登录系统时候的密码,执行如下命令即可设置
passwd <用户名>
开机密码的设置比较复杂需要先生成一个md5,然后修改/boot/grub/menu.lst这个文件,重启才能生效
四、什么是复杂密码?
举例说明:简单密码:123456或abcdef中等强度:123abc高等强度123abc!明白没?简单是纯数字或纯字母中等是数字加字母高等是数字加字母加标点
五、电脑设置复杂密码?
密码策略指的是你设置的密码需要达到什么样的标准,比如最少位数,复杂程度等。解决办法是这样,单击“开始”-找到“控制面板”-找到“管理工具”并双击-双击“本地安全设置”-找到“帐户策略”并单击-找到“密码策略”并单击,就可以看到你设置的密码需要符合什么样的要求了。想要改动的话,双击“密码策略”中任何一个选项,改为你想要的,就可以了。
六、ipad密码怎么设置复杂密码?
1.
设置步骤也比较简单,对于ios7以前的版本需要在通用的密码中修改,那么ios7系统直接在设置中显示密码功能,首先我们选择设置。
2.
然后我们在设置中的左栏中找到密码并选择点击,如果密码没有打开的选择打开密码,同时把下面的简单关闭。
3.
默认设置简单密码的情况我们关闭简单后,自动弹出输入密码,然后输入老密码。
4.
输入老密码后,就提示输入更改的新密码,这个时候是复杂密码,可以随便输入数字和字母,第二遍输入确定。 如果密码没打开时就关闭简单,打开密码时可以直接输入复杂密码。
5.
复杂密码设置成功后,我们待机手机或pad,滑动开启应用后需要输入密码,此时的提示框如下,非常漂亮。可输入一长串的数字。
七、Windows 内核和 Linux 内核谁更复杂?
两个系统的内核结构不一样,没什么可比性,都有各自的优势。
Linux 内核和 Windows 内核有什么区别?
内核
什么是内核呢?
计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。
内核有哪些能力呢?
现代操作系统,内核一般会提供 4 个基本能力:
- 管理进程、线程,决定哪个进程、线程使用 CPU,也就是进程调度的能力;
- 管理内存,决定内存的分配和回收,也就是内存管理的能力;
- 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力;
- 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。
内核是怎么工作的?
内核具有很高的权限,可以控制 cpu、内存、硬盘等硬件,而应用程序具有的权限很小,因此大多数操作系统,把内存分成了两个区域:
- 内核空间,这个内存空间只有内核程序可以访问;
- 用户空间,这个内存空间专门给应用程序使用;
用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。因此,当程序使用用户空间时,我们常说该程序在用户态执行,而当程序使内核空间时,程序则在内核态执行。
应用程序如果需要进入内核空间,就需要通过系统调用,下面来看看系统调用的过程:
内核程序执行在内核态,用户程序执行在用户态。当应用程序使用系统调用时,会产生一个中断。发生中断后, CPU 会中断当前在执行的用户程序,转而跳转到中断处理程序,也就是开始执行内核程序。内核处理完后,主动触发中断,把 CPU 执行权限交回给用户程序,回到用户态继续工作。
Linux 的设计
Linux 的开山始祖是来自一位名叫 Linus Torvalds 的芬兰小伙子,他在 1991 年用 C 语言写出了第一版的 Linux 操作系统,那年他 22 岁。
完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。
Linux 内核设计的理念主要有这几个点:
- MutiTask,多任务
- SMP,对称多处理
- ELF,可执行文件链接格式
- Monolithic Kernel,宏内核
MutiTask
MutiTask 的意思是多任务,代表着 Linux 是一个多任务的操作系统。
多任务意味着可以有多个任务同时执行,这里的「同时」可以是并发或并行:
- 对于单核 CPU 时,可以让每个任务执行一小段时间,时间到就切换另外一个任务,从宏观角度看,一段时间内执行了多个任务,这被称为并发。
- 对于多核 CPU 时,多个任务可以同时被不同核心的 CPU 同时执行,这被称为并行。
SMP
SMP 的意思是对称多处理,代表着每个 CPU 的地位是相等的,对资源的使用权限也是相同的,多个 CPU 共享同一个内存,每个 CPU 都可以访问完整的内存和硬件资源。
这个特点决定了 Linux 操作系统不会有某个 CPU 单独服务应用程序或内核程序,而是每个程序都可以被分配到任意一个 CPU 上被执行。
ELF
ELF 的意思是可执行文件链接格式,它是 Linux 操作系统中可执行文件的存储格式,你可以从下图看到它的结构:
ELF 把文件分成了一个个分段,每一个段都有自己的作用,具体每个段的作用这里我就不详细说明了,感兴趣的同学可以去看《程序员的自我修养——链接、装载和库》这本书。
另外,ELF 文件有两种索引,Program header table 中记录了「运行时」所需的段,而 Section header table 记录了二进制文件中各个「段的首地址」。
那 ELF 文件怎么生成的呢?
我们编写的代码,首先通过「编译器」编译成汇编代码,接着通过「汇编器」变成目标代码,也就是目标文件,最后通过「链接器」把多个目标文件以及调用的各种函数库链接起来,形成一个可执行文件,也就是 ELF 文件。
那 ELF 文件是怎么被执行的呢?
执行 ELF 文件的时候,会通过「装载器」把 ELF 文件装载到内存里,CPU 读取内存中的指令和数据,于是程序就被执行起来了。
Monolithic Kernel
Monolithic Kernel 的意思是宏内核,Linux 内核架构就是宏内核,意味着 Linux 的内核是一个完整的可执行程序,且拥有最高的权限。
宏内核的特征是系统内核的所有模块,比如进程调度、内存管理、文件系统、设备驱动等,都运行在内核态。
不过,Linux 也实现了动态加载内核模块的功能,例如大部分设备驱动是以可加载模块的形式存在的,与内核其他模块解藕,让驱动开发和驱动加载更为方便、灵活。
与宏内核相反的是微内核,微内核架构的内核只保留最基本的能力,比如进程调度、虚拟机内存、中断等,把一些应用放到了用户空间,比如驱动程序、文件系统等。这样服务与服务之间是隔离的,单个服务出现故障或者完全攻击,也不会导致整个操作系统挂掉,提高了操作系统的稳定性和可靠性。
微内核内核功能少,可移植性高,相比宏内核有一点不好的地方在于,由于驱动程序不在内核中,而且驱动程序一般会频繁调用底层能力的,于是驱动和硬件设备交互就需要频繁切换到内核态,这样会带来性能损耗。华为的鸿蒙操作系统的内核架构就是微内核。
还有一种内核叫混合类型内核,它的架构有点像微内核,内核里面会有一个最小版本的内核,然后其他模块会在这个基础上搭建,然后实现的时候会跟宏内核类似,也就是把整个内核做成一个完整的程序,大部分服务都在内核中,这就像是宏内核的方式包裹着一个微内核。
Windows 设计
当今 Windows 7、Windows 10 使用的内核叫 Windows NT,NT 全称叫 New Technology。
下图是 Windows NT 的结构图片:
Windows 和 Linux 一样,同样支持 MutiTask 和 SMP,但不同的是,Window 的内核设计是混合型内核,在上图你可以看到内核中有一个 MicroKernel 模块,这个就是最小版本的内核,而整个内核实现是一个完整的程序,含有非常多模块。
Windows 的可执行文件的格式与 Linux 也不同,所以这两个系统的可执行文件是不可以在对方上运行的。
Windows 的可执行文件格式叫 PE,称为可移植执行文件,扩展名通常是.exe
、.dll
、.sys
等。
PE 的结构你可以从下图中看到,它与 ELF 结构有一点相似。
总结
对于内核的架构一般有这三种类型:
- 宏内核,包含多个模块,整个内核像一个完整的程序;
- 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
- 混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序;
Linux 的内核设计是采用了宏内核,Window 的内核设计则是采用了混合内核。
这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。
参考资料
- https://en.wikipedia.org/wiki/Monolithic_kernel
- https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
- https://en.wikipedia.org/wiki/Windows_NT
-----------------
说几句。
小林在知乎写了很多图解网络和操作系统的系列文章,很高兴收获到很多知乎朋友的认可和支持,正好最近图解网络和操作系统的文章连载的有 20+ 篇了,也算有个体系了。
所以为了方便知乎的朋友们阅读,小林把自己原创的图解网络和图解操作系统整理成了 PDF,一整理后,没想到每个图解都输出了 15 万字 + 500 张图,质量也是杠杠的,有很多朋友特地私信我,看了我的图解拿到了大厂的offer。
图解系统 PDF 开源下载:
突击大厂面试,图解系统开放下载!图解网络 PDF 开源下载:
突击大厂面试,图解网络开放下载!最后祝大家前程似锦,在编码的道路上一马平川。如果文章对你帮助的话,可以给@小林coding
点个赞,点个收藏,评论下更先显温情!
八、密码复杂度标准?
密码复杂度的标准
密码要安全,密码的长度要大于8位最好大于14位,密码的复杂度是密码要尽可能有数字、字母和特殊符号混合组成,密码的强度是密码不要用1、2、3或9、8、7开头,也不要用a、b、c或x、y、z开头。
密码也要易记,这可以用自己熟悉的一句话,取每个字拼音的开头第一个字母和特殊符号、数字组成高强度的密码
九、linux系统默认密码?
在Linux系统中,默认密码是不存在的。当你第一次安装Linux系统时,你需要设置一个密码来保护你的账户。这个密码是由你自己设定的,通常要求包含字母、数字和特殊字符,并且长度要足够强大以确保安全性。
默认密码的缺乏是为了防止未经授权的访问和潜在的安全风险。因此,在安装Linux系统后,你必须设置一个强密码来保护你的账户和系统的安全。
十、linux默认root密码?
修改用户密码可以用命令passwd。 passwd命令后面加一个用户名,表示修改跟着的这个用户的密码;passwd命令后面没有加用户名,表示修改当前登录用户的密码,就是你执行passwd命令时的那个用户。
当用root用户执行这个命令时,不跟用户名就是表示修改root用户的密码。它会提示你输入密码,直接输入root新密码即可(不需要输入旧密码)。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...