控制用户的登录地点 文件/etc/secruity/access. conf 可控制用户登录地点, 为了使用 access. conf, 必须在文件/etc/pam. d/login 中加入下面行: account required /lib/security/pam_access. so access. conf 文件的格式: permission : users : origins 其中: permission: 可以是 “+” 或“-”, 表示允许或拒绝。 user: 可以是用户名、 用户组名, 如果是 all 则表示所有用户。 origins: 登录地点。 local 表示本地, all 表示所有地点, console 表示控制台。 另外,origins 也可以是某一网络。 后面两个域中加上 except 是“除了” 的意思。 例如: 除了用户 wheel、 shutdown、 sync禁止所有的控制台登录: -:ALL EXCEPT wheel shutdown sync:console root 账户的登录地点不在 access. conf 文件中控制, 而是由/etc/securetty 文件控制。 必须保证/etc/pam. d/login 有下面这行: auth required pam_securetty. so etc/securetty 文件指定了允许 root 登录的 tty 设备, 由/bin/login 程序读取, 其格式是一个被允许的名字列表, 你可以编辑/etc/securetty 且注释掉如下的行。 # tty2 # tty3 # tty4 # tty5 # tty6 这时, root 仅可在 tty1 终端登录。 关于 PAM 的一些解释 热身: 何要授予用户特权的程序都要能够进行用户认证。 当您登入系统时, 您需要提供用户名和口令, 而后登入进程据此以检验登入的合法性---确认您就是该用户。 还有除口令认证之外的其他认证形式, 而且口令的存储方式也是各不相同的。 1、 说明 A、 PAM 可加载目标文件(模块) 是在 RedHat Linux 系统中它们被放在了/lib/security目录下 B、 PAM 库本地系统配置文件/etc/pam. conf OR /etc/pam. d/目录下的一些配置文件来设置 2、 # more login #%PAM-1. 0 auth required pam_securetty. so 用来控制 root 用户只可以从包含在/etc/securetty 文件中的终端登录系统。 auth required pam_stack. so service=system-auth auth required pam_nologin. so 提供标准的 UNIX nologin 登录认证。 如果/etc/nologin 文件存在, 则只有 root 用户可以登录, 其他用户登录时只会得到/etc/nologin 文件的内容。 如果/etc/nologin 不存在, 则该模块没有作用。 account required pam_stack. so service=system-auth password required pam_stack. so service=system-auth # pam_selinux. so close should be the first session rule session required pam_selinux. so close session required pam_stack. so service=system-auth session optional pam_console. so # ls -l /dev/pts/1 crw--w---- 1 root tty 136, 1 May 15 21: 19 /dev/pts/1 # ls -l /dev/pts/2 crw--w---- 1 test tty 136, 2 May 15 21: 20 /dev/pts/2 用户登陆时, 它将 TTY 设备权限改成该用户所有, 当用户退出时, 将 TTY 设备权限改为root 所有。 # pam_selinux. so open should be the last session rule session required pam_selinux. so multiple open login 要做两件事, 首先查询用户, 然后为用户提供所需服务, 例如提供一个 shell 程序。 通常, login 会提示用户输入密码。 然后对密码进行校验, 这项任务就是 Linux-PAM 完成的。 上 例中三个 required 连续使用, 即便第一个模块失败了, 也要完成三个模块的校验。这是一种安全上的考虑 ---这种设计永远不要让用户知道他或她们为什么会被拒绝, 否则会让其更容易突破认证。 可以将“required” 改成“requisite” 来修改这种 认证方式。 如果有任何“requisite” 模块以失败返回, 整个 PAM 认证将终止再调用其它模块也以失败返回。 3、 pam_unix 认证模块 所属类型: account; auth; password; session 功能描述: 该模块是标准 UNIX 认证模块 pam_unix 的替代模块。 在 作为 auth 类型使用时, 此时该模块可识别的参数有 debug、 audit、 use_first_pass、try_first_pass、 nullok、 nodelay, 主要功能是验证用户密码的有效性, 在缺省情况下(即不带任何参数时), 该模块的主要功能是禁止密码为空的用户提供服务; auth required /lib/security/$ISA/pam_env. so auth sufficient /lib/security/$ISA/pam_unix. so likeauth nullok auth required /lib/security/$ISA/pam_deny. so 在作为 account 类型使用时, 此时该模块可识别的参数有 debug、 audit, 该模块主要执行建立用户帐号和密码状态的任务, 然后执行提示用户修改密码, 用户采用新密码后才提供服务之类的任务; account required /lib/security/$ISA/pam_unix. so account sufficient /lib/security/$ISA/pam_succeed_if. so uid < 100 quiet account required /lib/security/$ISA/pam_permit. so 在 作为 password 类型使用时, 此时该模块可识别的参数有 debug、 audit、 nullok; 、not_set_pass、 use_authtok、 try_first_pass、 use_first_pass、 md5、 bigcrypt、 shadow、nis、 remember, 该模块完成让用户更改密码的任务; password requisite /lib/security/$ISA/pam_cracklib. so retry=3 password sufficient /lib/security/$ISA/pam_unix. so nullok use_authtok md5 shadow password required /lib/security/$ISA/pam_deny. so 控制用户的登录地点 文件/etc/secruity/access. conf 可控制用户登录地点, 为了使用 access. conf, 必须在文件/etc/pam. d/login 中加入下面行: account required /lib/security/pam_access. so access. conf 文件的格式: permission : users : origins 其中: permission: 可以是 “+” 或“-”, 表示允许或拒绝。 user: 可以是用户名、 用户组名, 如果是 all 则表示所有用户。 origins: 登录地点。 local 表示本地, all 表示所有地点, console 表示控制台。 另外,origins 也可以是某一网络。 后面两个域中加上 except 是“除了” 的意思。 例如: 除了用户 wheel、 shutdown、 sync禁止所有的控制台登录: -:ALL EXCEPT wheel shutdown sync:console root 账户的登录地点不在 access. conf 文件中控制, 而是由/etc/securetty 文件控制。 必须保证/etc/pam. d/login 有下面这行: auth required pam_securetty. so etc/securetty 文件指定了允许 root 登录的 tty 设备, 由/bin/login 程序读取, 其格式是一个被允许的名字列表, 你可以编辑/etc/securetty 且注释掉如下的行。 # tty2 # tty3 # tty4 # tty5 # tty6 这时, root 仅可在 tty1 终端登录。 关于 PAM 的一些解释 热身: 何要授予用户特权的程序都要能够进行用户认证。 当您登入系统时, 您需要提供用户名和口令, 而后登入进程据此以检验登入的合法性---确认您就是该用户。 还有除口令认证之外的其他认证形式, 而且口令的存储方式也是各不相同的。 1、 说明 A、 PAM 可加载目标文件(模块) 是在 RedHat Linux 系统中它们被放在了/lib/security目录下 B、 PAM 库本地系统配置文件/etc/pam. conf OR /etc/pam. d/目录下的一些配置文件来设置 2、 # more login #%PAM-1. 0 auth required pam_securetty. so 用来控制 root 用户只可以从包含在/etc/securetty 文件中的终端登录系统。 auth required pam_stack. so service=system-auth auth required pam_nologin. so 提供标准的 UNIX nologin 登录认证。 如果/etc/nologin 文件存在, 则只有 root 用户可以登录, 其他用户登录时只会得到/etc/nologin 文件的内容。 如果/etc/nologin 不存在, 则该模块没有作用。 account required pam_stack. so service=system-auth password required pam_stack. so service=system-auth # pam_selinux. so close should be the first session rule session required pam_selinux. so close session required pam_stack. so service=system-auth session optional pam_console. so # ls -l /dev/pts/1 crw--w---- 1 root tty 136, 1 May 15 21: 19 /dev/pts/1 # ls -l /dev/pts/2 crw--w---- 1 test tty 136, 2 May 15 21: 20 /dev/pts/2 用户登陆时, 它将 TTY 设备权限改成该用户所有, 当用户退出时, 将 TTY 设备权限改为root 所有。 # pam_selinux. so open should be the last session rule session required pam_selinux. so multiple open login 要做两件事, 首先查询用户, 然后为用户提供所需服务, 例如提供一个 shell 程序。 通常, login 会提示用户输入密码。 然后对密码进行校验, 这项任务就是 Linux-PAM 完成的。 上 例中三个 required 连续使用, 即便第一个模块失败了, 也要完成三个模块的校验。这是一种安全上的考虑 ---这种设计永远不要让用户知道他或她们为什么会被拒绝, 否则会让其更容易突破认证。 可以将“required” 改成“requisite” 来修改这种 认证方式。 如果有任何“requisite” 模块以失败返回, 整个 PAM 认证将终止再调用其它模块也以失败返回。 3、 pam_unix 认证模块 所属类型: account; auth; password; session 功能描述: 该模块是标准 UNIX 认证模块 pam_unix 的替代模块。 在 作为 auth 类型使用时, 此时该模块可识别的参数有 debug、 audit、 use_first_pass、try_first_pass、 nullok、 nodelay, 主要功能是验证用户密码的有效性, 在缺省情况下(即不带任何参数时), 该模块的主要功能是禁止密码为空的用户提供服务; auth required /lib/security/$ISA/pam_env. so auth sufficient /lib/security/$ISA/pam_unix. so likeauth nullok auth required /lib/security/$ISA/pam_deny. so 在作为 account 类型使用时, 此时该模块可识别的参数有 debug、 audit, 该模块主要执行建立用户帐号和密码状态的任务, 然后执行提示用户修改密码, 用户采用新密码后才提供服务之类的任务; account required /lib/security/$ISA/pam_unix. so account sufficient /lib/security/$ISA/pam_succeed_if. so uid < 100 quiet account required /lib/security/$ISA/pam_permit. so 在 作为 password 类型使用时, 此时该模块可识别的参数有 debug、 audit、 nullok; 、not_set_pass、 use_authtok、 try_first_pass、 use_first_pass、 md5、 bigcrypt、 shadow、nis、 remember, 该模块完成让用户更改密码的任务; password requisite /lib/security/$ISA/pam_cracklib. so retry=3 password sufficient /lib/security/$ISA/pam_unix. so nullok use_authtok md5 shadow password required /lib/security/$ISA/pam_deny. so