尝试在 Ubuntu 20.04 上构建自定义“su”,但从原始源开始进行测试(不进行任何更改)。跑步
apt-get source login
Run Code Online (Sandbox Code Playgroud)
我得到了 Shadow-4.8.1 目录。跑步
./configure
make
Run Code Online (Sandbox Code Playgroud)
并尝试运行
src/su testuser
Run Code Online (Sandbox Code Playgroud)
它不起作用!验证失败错误。运行原始操作系统二进制文件:
/usr/bin/su testuser
Run Code Online (Sandbox Code Playgroud)
而且效果很好!卧槽?
我认为构建过程中缺少一些模块/参数。
转到影子包的构建日志。
https://launchpad.net/ubuntu/+source/shadow/1:4.11.1+dfsg1-2ubuntu1/+build/23780688
并参见下一个 ./configure 字符串
./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --disable-shared --without-libcrack --mandir=/usr/share/man --with-libpam --enable-shadowgrp --enable-man --disable-account-tools-setuid --with-group-name-max-length=32 --without-acl --without-attr --without-su --without-tcb
Run Code Online (Sandbox Code Playgroud)
看那边:
--without-su
Run Code Online (Sandbox Code Playgroud)
尝试这个 ./configure 字符串,它确实使所有二进制文件都没有“su”。尝试更换它
--with-su
Run Code Online (Sandbox Code Playgroud)
新的二进制文件也不起作用。验证失败。:(
关于它的两个问题。
编译过程中没有任何失败。但是su
您编译的文件由您的用户拥有,并且没有设置 uid 位,这意味着它以您的用户身份执行。
您的用户无法切换到其他用户 ID。这是为 root 保留的。
如果您运行ls -l /usr/bin/su
,您将看到它由 root 拥有并设置了 suid 位:
$ ls -l /usr/bin/su
-rwsr-xr-x 1 root root 55480 Apr 1 21:16 /usr/bin/su
Run Code Online (Sandbox Code Playgroud)
您可以通过运行chown root:root /path/to/your/su
使其由 root 拥有并chmod 4755 /path/to/your/su
使其 setuid 来修复此问题。
归档时间: |
|
查看次数: |
682 次 |
最近记录: |