【问题标题】:Avoid non-root user scaling to root using su command in a buildroot rootfs避免在 buildroot rootfs 中使用 su 命令将非 root 用户扩展到 root
【发布时间】: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


    【解决方案1】:

    仅供对此问题感兴趣的人参考,问题已修复。它与“su”命令有关,由 buildroot 部署为busybox 小程序。尽管在busybox 配置文件(版本1.31.1)中启用了CONFIG_PAM=y,但此小程序无法按预期工作。

    这是我们解决此问题所遵循的步骤:

    1. 从busybox中删除“su”小程序
        # CONFIG_SU is not set
    
    1. 在 buildroot 中添加“su”navite 命令:
        BR2_PACKAGE_UTIL_LINUX_SU=y
    
    1. 在 /etc/pam.d/sudo 中注释此行,以便能够使用管理员用户执行 sudo:
        #auth        required     pam_wheel.so use_uid
    
    1. 重建并刷新映像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多