%general-entities; ]> shadow &shadow-version;
&shadow-url;
Shadow-&shadow-version; Shadow <para>Shadow 软件包包含安全地处理密码的程序。</para> <segmentedlist> <segtitle>&buildtime;</segtitle> <segtitle>&diskspace;</segtitle> <seglistitem> <seg>&shadow-ch6-sbu;</seg> <seg>&shadow-ch6-du;</seg> </seglistitem> </segmentedlist> </sect2> <sect2 role="installation"> <title>安装 Shadow 如果您希望强制使用强密码,参考 以在构建 Shadow 前安装 CrackLib,然后为下面的 configure 命令附加 --with-libcrack 参数。 禁止该软件包安装 groups 程序和它的 man 页面,因为 Coreutils 会提供更好的版本。 同样,避免安装 软件包已经提供的 man 页面: sed -i 's/groups$(EXEEXT) //' src/Makefile.in find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; 不使用默认的 crypt 加密方法,使用更安全的 SHA-512 方法加密密码, 该方法也允许长度超过 8 个字符的密码。另外,还需要把 Shadow 默认使用的用户邮箱位置 /var/spool/mail 改为当前普遍使用的 /var/mail 目录: sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \ -e 's@/var/spool/mail@/var/mail@' etc/login.defs 如果您选择构建有 Cracklib 支持的 Shadow,执行以下命令: sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs 进行微小的改动,使 useradd 使用 1000 作为第一个组编号: sed -i 's/1000/999/' etc/useradd 准备安装 Shadow: ./configure --sysconfdir=/etc --with-group-name-max-length=32 配置选项的含义: --with-group-name-max-length=32 最长用户名可以有 32 个字符,设定组名称最大长度为相同值。 编译该软件包: make 该软件包不包含测试套件。 安装该软件包: make install 将一个安装位置不正确的程序移动到正确位置: mv -v /usr/bin/passwd /bin 配置 Shadow Shadow configuring 该软件包包含用于添加、修改、删除用户和组,设定和修改它们的密码, 以及进行其他管理任务的工具。如果希望查阅关于 password shadowing 的详细解释, 阅读解压得到源代码目录树中的 doc/HOWTO 文件。如果使用 Shadow 支持,记住所有需要验证密码的程序 (如显示管理器、FTP 程序、pop3 守护进程等)都必须和 Shadow 兼容。换句话说,它们必须能使用 Shadow 加密的密码。 译注 大多数 Linux 程序要么本身支持 Shadow,要么通过 Linux PAM 支持 Shadow。为了提高安全性,建议启用 Shadow 加密。 执行以下命令,对用户密码启用 Shadow 加密: pwconv 执行命令,对组密码启用 Shadow 加密: grpconv Shadow 为 useradd 提供的配置文件有一些需要解释的事项。首先,useradd 的默认操作是创建一个用户,以及一个名字和用户名相同的组。 默认情况下,用户 ID (UID)和组 ID (GID)会从 1000 开始。 这意味着,如果您不向 useradd 传递参数, 每个用户都会属于一个不同的组。如果您不希望这样, 就要向 useradd 传递 -g 参数。默认参数保存在 /etc/default/useradd 文件中,您可以编辑其中的两个参数,以满足您的特定需求: <filename>/etc/default/useradd</filename> 参数解释 GROUP=1000 该参数设定 /etc/group 文件中使用的第一个组编号, 您可以将它修改为您希望的任何值。注意 useradd 绝不会重用 UID 或 GID, 如果该参数指定的数字已经被使用了,它就会使用下一个可用的数字。 另外,如果在您第一次不加 -g 参数使用 useradd 时没有编号 1000 的组, 您就会在终端看到一条消息: useradd: unknown GID 1000。 您可以忽略这条消息,它会使用组编号 1000 。 CREATE_MAIL_SPOOL=yes 该参数使得 useradd 为新创建的用户建立邮箱文件。useradd 会使得 mail 为拥有该文件的组,并为文件赋予 0660 权限码。 如果您不希望 useradd 创建这些邮箱文件, 执行以下命令: sed -i 's/yes/no/' /etc/default/useradd 设定 root 密码 为用户 root 选择一个密码, 并执行以下命令设定它: passwd root Shadow 的内容 安装的程序 安装的目录 chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, grpconv, grpunconv, lastlog, login, logoutd, newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv, sg (到 newgrp的链接), su, useradd, userdel, usermod, vigr (到 vipw 的链接), 以及 vipw /etc/default 简要描述 chage 用于修改强制性密码更新的最大天数 chage chfn 用于修改用户全名和其他信息 chfn chgpasswd 用于批量更新组密码 chgpasswd chpasswd 用于批量更新用户密码 chpasswd chsh 用于改变用户的默认登录 shell chsh expiry 检查并强制当前密码过期策略 expiry faillog 用于检查失败登录日志,设定锁定账户的最大失败次数, 或重置失败次数 faillog gpasswd 用于增加或删除组的用户和管理员 gpasswd groupadd 以指定名称创建组 groupadd groupdel 删除指定的组 groupdel groupmems 在不需要超级用户权限的情况下, 允许用户管理自己的组成员列表 groupmems groupmod 用于修改给定的组名称或 GID groupmod grpck 验证组文件 /etc/group/etc/gshadow 的完整性 grpck grpconv 根据普通组文件创建或更新加密组文件 grpconv grpunconv 根据 /etc/gshadow 文件更新 /etc/gshadow 文件,并删除前者 grpunconv lastlog 报告所有用户或给定用户最后一次登录的信息 lastlog login 被系统用于允许用户登录 login logoutd 是一个限制登录时间和端口的守护进程 logoutd newgidmap 用于设定一个用户命名空间的 gid 映射 newgidmap newgrp 用于在登录会话中修改当前 GID newgrp newuidmap 用于设定用户命名空间的 uid 映射 newuidmap newusers 用于批量创建或更新用户账户 newusers nologin 显示一条账户不可用的消息, 它被设计为用来当作被禁用的账户的默认 shell nologin passwd 用于修改用户或组账户的密码 passwd pwck 检验密码文件 /etc/passwd/etc/shadow 的完整性 pwck pwconv 从普通密码文件创建或更新加密密码文件 pwconv pwunconv 根据 /etc/shadow 更新 /etc/shadow 并删除前者 pwunconv sg 在用户 GID 设为给定组 ID 的情况下,执行给定命令 sg su 用替换的用户和组 ID 运行 shell su useradd 以指定名称创建新用户,或更新新用户默认信息 useradd userdel 删除给定用户 userdel usermod 修改给定用户的登录名称、用户 ID、shell、初始组、 home 目录等信息 usermod vigr 编辑 /etc/group/etc/gshadow 文件 vigr vipw 编辑 /etc/passwd/etc/shadow 文件 vipw