【发布时间】:2021-10-15 11:37:21
【问题描述】:
使用 buildroot 构建 rootfs。我的 rootfs 使用这个 user-tables.txt 创建了“admin”用户:
# cat ./board/corp/main/users-table.txt
# <username> <uid> <group> <gid> <password> <home> <shell> <groups> <comment>
admin -1 admin -1 =1234 /home/admin /bin/sh - Restricted admin user
用户 admin 使用 ssh 连接到 rootfs。
ssh admin@192.168.1.123
这是 id 命令的输出:
$ id
uid=1002(admin) gid=1006(admin) groups=1006(admin)
问题是,用户 admin 可以轻松扩展到 root 执行“su”命令:
$ su
$ id
uid=0(root) gid=0(root) groups=0(root),10(wheel)
尝试使用 PAM 库来避免这种情况。但我无法将我的 rootfs 设置为按预期工作。 rootfs 已在启用此 buildroot 选项的情况下创建:
BR2_PACKAGE_LINUX_PAM=y
这是一些相关文件的内容。如果其他文件可以帮助调试此问题,请告诉我。
# cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/false
bin:x:2:2:bin:/bin:/bin/false
sys:x:3:3:sys:/dev:/bin/false
sync:x:4:100:sync:/bin:/bin/sync
mail:x:8:8:mail:/var/spool/mail:/bin/false
www-data:x:33:33:www-data:/var/www:/bin/false
operator:x:37:37:Operator:/var:/bin/false
nobody:x:65534:65534:nobody:/home:/bin/false
dbus:x:1000:81:DBus messagebus user:/var/run/dbus:/bin/false
sshd:x:1001:1004:SSH drop priv user:/var/empty:/bin/false
admin:x:1002:1006:Restricted admin user:/home/admin:/bin/sh
# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
kmem:x:9:
wheel:x:10:root
cdrom:x:11:
dialout:x:18:
floppy:x:19:
video:x:28:
audio:x:29:
tape:x:32:
www-data:x:33:
utmp:x:43:
plugdev:x:46:
staff:x:50:
lock:x:54:
haldaemon:x:68:
netdev:x:82:
ftp:x:83
nobody:x:99:
nogroup:x:99:
users:x:100:
default:x:1000:
input:x:1001:
render:x:1002:
kvm:x:1003:
sshd:x:1004:
sudo:x:1005:
admin:x:1006:
dbus:x:81:dbus
# cat /etc/sudoers
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
已安装包含所有已部署文件的 PAM。我可以检查我正在运行的 rootfs 是否正在使用 PAM 库:
# ldd /bin/login | grep pam
libpam.so.0 => /lib/libpam.so.0 (0xb6f3a000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0xb6f27000)
我找到了一些类似http://blog.serverbuddies.com/how-do-i-restrict-the-use-of-su-command/ 的文档,解释了影子“su”服务的PAM 配置文件。我用这个测试过:
$ cat /etc/pam.d/su
auth required /lib/security/pam_wheel.so use_uid
据我了解,此行强制任何用户成为组“wheel”的成员,以便能够运行“su”命令。正如您在前面列出的文件中看到的,管理员用户不属于“wheel”组。所以,它应该不能执行“su”命令。
但是,用户“admin”执行“su”命令,它会扩展到 root。
我做错了什么?任何帮助将不胜感激。
提前非常感谢!!
【问题讨论】:
标签: linux permissions buildroot pam su