我需要自定义 useradd 命令,所以我下载的shadow-utils源码包。使用configure-make,我能够编译源代码,在自定义位置(/home/user1/Download/shadow-utils/sbin)生成二进制文件(配置前缀)。
现在尝试使用 ./useradd 约翰 我得到:
配置错误 - 未知项目“PASS_MIN_LEN”(通知管理员)
useradd:PAM 身份验证失败
还 ldd /home/user1/Download/shadow-utils/sbin/useradd
linux-vdso.so.1 => (0x00007fff2970d000)
>> libpam.so.0 => /lib64/libpam.so.0 (0x00002add214e7000)
>> libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00002add216f6000)
libaudit.so.1 => /lib64/libaudit.so.1 (0x00002add218fa000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00002add21b1d000)
libc.so.6 => /lib64/libc.so.6 (0x0000003273400000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003274000000)
>> libcrypt.so.1 => /lib64/libcrypt.so.1 (0x000000327c400000)
/lib64/ld-linux-x86-64.so.2 (0x0000003273000000)
>> libfreebl3.so => /lib64/libfreebl3.so (0x00002add21d3e000)
ldd /usr/sbin/useradd
linux-vdso.so.1 => (0x00007fffc6eda000)
libaudit.so.1 => /lib64/libaudit.so.1 (0x00002b478d16b000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00002b478d38f000)
libacl.so.1 => /lib64/libacl.so.1 (0x00002b478d5ae000)
libc.so.6 => /lib64/libc.so.6 (0x00002b478d7b6000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002b478db4b000)
/lib64/ld-linux-x86-64.so.2 (0x0000003273000000)
libattr.so.1 => /lib64/libattr.so.1 (0x00002b478dd4f000)
显然我的 useradd 版本使用 PAM 库、 freeb13 但不使用 libacl、 libattr 。虽然从 /etc/login.defs 注释掉 PASS_MIN_LENGTH 后,配置错误消失了,但身份验证失败错误仍然存在。
看来我需要在没有 libpam 的情况下构建 useradd ,但是有没有办法摆脱目前的情况?提示/帮助将不胜感激。
答案1
配置时,使用标志:--without-libpam --without-sha-crypt
。该useradd
命令现在已成功创建用户。