欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nsswitch & pam

程序员文章站 2022-03-12 08:01:39
...

nsswitch & pam

名称解析:
    name: id
认证服务:


nsswitch: network service switch
提供了一些库文件(.so)以供应用程序调用

    解析库:
        文件、MySQL、NIS、LDAP、DNS

        通用框架,与各存储交互的实现:
            /usr/lib64/libnss*, /lib64/libnss*

        配置文件
            /etc/nsswitch.conf

            db:                 store1, store2, ...
            定义了一个存储库名   具体的存储方案(files or db), 
            files默认建立在/etc目录下,为相应的存储库名

            每种存储中查找的结果状态:STATUS => success | notfound | unavail | tryagain
            对应于每种状态参数的行为:ACTION => return | continue

            host: files nis [NOTFOUND=return] dns 

        # getent database  [entry]
                 存储库名  数据检索条件

pam:pluggable authentication module
提供了一些库文件(.so)以供应用程序调用
    认证库:
        文件、MySQL、LDAP、NIS

        通用框架,与各存储交互的实现,以及多种辅助性功能:
            /lib64/security/

        配置文件:/etc/pam.conf
            /etc/pam.d/*.conf


            通常每个应用使用一个单独的配置文件;
            应用程序a, 对应/etc/pam.d/a.conf, a.conf指明应用应调用那个库(/usr/lib64/pam_*.so),实现那种认证机制;

                配置文件中每行定义一种检查规则;
                格式:
                    type    control     module-path module-arguments

                    type:检查功能类别
                        auth: 账号的认证和授权
                        account:与账号管理相关的非认证功能
                        password:用户修改密码时密码检查规则
                        session:用户获取到服务之前或使用服务完成之后要进行的一些附加性操作

                    control:同一种功能的多个检查之间如何进行组合;
                        有两种实现机制:
                            1、使用一个关键词来定义;例如sufficient,required, requisite;
                            2、使用一或多个“status=action”形式的组合表示

                        简单机制:
                            required
                            requisite
                            sufficient
                            optional
                            include

                        复杂机制:[status1=action1,status2=action2,....]
                            status:返回状态,
                            action: ok, done, die, ignore, bad, reset

                    module-path: 模块路径
                        /lib64/security: 此目录下的模块引用时可使用相对路径;
                    module-arguments: 模块参数

            模块:
                (1) pam_shells.so

                (2) pam_limits.so
                    模块通过读取配置文件完成用户对系统资源的使用控制
                        /etc/security/limits.conf
                        /etc/security/limits.d/*

                        <domain> <type> <item> <value>

                            <domain>:
                                username
                                @group
                                *: 所有用户

                            <type>
                                soft:
                                hard:由root设定,通过kernel强制生效;
                                -:二者同时限定;

                            <item>
                                nofile: 所能够同时打开的最大文件数量;
                                nproc: 所能够同时运行的最大进程数量;
                                msqqueue:使用的POSIX消息队列能够占用的最大内存空间;
                                sigpending:所能够使用的最大信号数量;

                            <value>

                        vi /etc/security/limits.conf
                        apache           -       nofile          60000
                        单用户最大打开文件数量限制;

                        ulimit -n #:文件数量
                        ulimit -u #:进程数量