您的位置  > 互联网

在linux中执行有些程序时,这些程序在执行

Linux 中的身份或状态验证过程是由 PAM 执行的。 PAM()可以动态加载验证模块。 由于验证内容可以根据需要动态改变,因此可以大大提高验证的灵活性。

在各种Linux发行版中,PAM使用的验证模块一般都存放在/lib//目录下。 可以使用ls命令查看本机支持哪些验证控制方式。 一般的PAM模块名称如.so。 该模块可以随时位于此目录中。 添加和删​​除,这个不会直接影响程序的运行,具体影响是在PAM配置目录下。

PAM 配置文件一般存储在 /etc/pam.conf 文件或 /etc/pam.d/ 目录中。 不过,现在一般存储在/etc/pam.d/目录下。 下面是每个需要PAM控制的程序的独立配置文件。 当程序的验证模式配置出现在pam.conf和pam.d/下的文件中时,以pam.d/目录下的文件为准。

要检查程序是否支持 PAM,请使用以下命令:

 
 
  1. #ldd `which cmd` | grep libpam  //cmd就代表查看的程序名

如果包含该库,则程序支持 PAM 身份验证。

举一个不太恰当的例子:PAM机制相当于在房子里安装了一扇防盗门,意思就是控制想要进入房子的人,不让房子处于任何人都可以随意进入的状态。

支持PAM验证意味着房屋预留了安装防盗门的空间。 如果不支持PAM,就意味着整个房子是封闭的,人根本无法进入,或者房子基本没有墙,所以不需要限制出入。 在PAM机制中,PAM模块相当于可以安装在防盗门上的各种锁。 这些锁具有不同的特点和功能,您可以根据需要进行安装。 同样,在PAM中,程序配置文件相当于防盗门的生产和安装计划,安装在哪里,在支持的各种锁中选择合适的锁,然后打开这些锁的顺序等等。具体使用规范。

PAM的各个模块都是开发者预先开发好的,我们要做的就是合理的使用这些模块,让它们保护需要保护的程序。 所以需要注意的是PAM配置文件目录/etc/pam.d/

让我们举个例子。 以登录程序为例。 文件名为/etc/pam.d/login,内容为(部分):

 
 
  1. auth     optional     pam_faildelay.so    delay=3000000  
  2. auth     required     pam_securetty.so  
  3. auth     requisite    pam_nologin.so  
  4. session    [success=ok ignore=ignore module_unknow=ignore default=bad]    pam_selinux.so close 
  5. @include  common-auth 

从上面可以看出,配置文件是逐行指定的,每一行都是一个完整的定义。

一般第一列指定的内容为:-type,总共只有4种,分别是:

auth:标识用户的身份。 如果提示输入密码,则判断是否为root;:检查账户的各种属性,例如是否允许登录,是否达到最大用户数;:定义登录前和登录后要执行的操作注销。 ,如登录连接信息、用户数据的打开和关闭、挂载fs;:使用用户信息更新数据,如更改用户密码。

第二栏的内容是:-flag,有很多,但一般常用的有4个,即:

:不返回成功或失败,通常返回一个; :表示需要返回成功值。 如果返回失败,不会立即返回失败结果,而是继续下一次同类型的验证。 所有该类型的模块都会执行完成后,返回;:类似,但是如果该模块返回,则立即返回,并指示该类型的失败;:如果该模块返回,则直接返回给程序,说明该类型成功,如果失败,不影响该类型的返回值。

第三列是PAM模块的存储路径。 默认位于/lib//目录中。 如果是在这个默认路径下,就填写绝对路径。

第四栏内容是PAM模块参数,需要根据使用的模块添加。

实际操作:现在对Linux系统的登录程序实现对用户和时间的登录限制。

使用模块.so

1、检查登录程序是否支持PAM

 
 
  1. root@hdp0:~# ldd `which login` | grep libpam  
  2.     libpam.so.0 => /lib/libpam.so.0 (0xb76e2000)  
  3.     libpam_misc.so.0 => /lib/libpam_misc.so.0 (0xb76de000) 

2、修改/etc/pam.d/下的登录配置文件

在登录配置文件中,定义auth后,添加验证

。所以

3..so模块需要定义另一个配置文件time.conf

在/etc//time.conf中定义限制的特定用户和时间

 
 
  1. vim /etc/security/time.conf  
  2. login;tty3;fenix;Th2100-2300     //作用程序是login,作用在tty3上,fenix允许在周四2100-2300间登录  
  3. login;!tty3;!fenix;!Th2100-2300  //作用程序是login,作用在tty3以外,对用户fenix之外产生影响,允许登录时间是周四2100-2300之外 

4、PAM的应用立即生效,可以切换到其他tty进行测试。

Samba结合pam()认证模块来实现Samba基于用户的访问控制。 假设有两个用户test和hehe。 我想禁止测试用户从192.168.1.0/24网段内的任何机器登录Samba。 共享目录share目录也允许用户hehe访问。 我们可以这样设置:

1. 在 smb.conf 配置文件的全局选项中添加以下内容:

服从帕姆=是

路径=/共享

2.打开/etc/pam.d/samba文件并添加:

.so=/etc/

3、在/etc下新建一个文件配置文件,内容如下:

+:呵呵:192.168.1。

-:测试:192.168.1。

4、重启服务并测试:

中小企业

我们可以在这里实时查看日志,并使用测试用户来访问:

尾-f /var/log/

可以看到:PAM认证模块工作了!

本文来源地址: