无法使用 root 进行 SU:`/bin/bash:权限被拒绝`

thi*_*l.d 9 root su

root@frankfurt:~# sudo adduser newuser
添加用户“newuser”...
添加新组“newuser”(1001)...
使用组“newuser”添加新用户“newuser”(1001)...
正在创建主目录 `/home/newuser' ...
从`/etc/skel' 复制文件...
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:密码更新成功
更改 newuser 的用户信息
输入新值,或按 ENTER 获取默认值
    全名[]:新
    房间号 []: 
    工作电话 []: 
    家庭电话 []: 
    其他 []: 
信息是否正确?[是/否] 是
root@frankfurt:~# su newuser
无法执行 /bin/bash: 权限被拒绝
根@法兰克福:~# 

谢谢。

Gha*_*van 15

像这样更改这些文件夹的权限,现在您可以 su 到另一个用户。

chmod 755 /
chmod 755 /bin
chmod 755 /lib
Run Code Online (Sandbox Code Playgroud)

  • 我的问题是通过执行 **chmod 755 /** 解决的奇怪的是,我需要在全新安装 Ubuntu 16.04.1 amd64 Desktop 后执行此操作 (2认同)

use*_*.dz 10

  1. 检查/bin文件夹的权限

    # ls -ld /bin
    drwxr-xr-x 2 root root 4096 May 27 21:39 /bin
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查所有可用 shell 的权限

    # ls -l /bin/*sh
    -rwxr-xr-x 1 root root 1037464 Sep  1  2015 /bin/bash
    -rwxr-xr-x 1 root root  154072 Feb 17 21:25 /bin/dash
    lrwxrwxrwx 1 root root       4 Sep  1  2015 /bin/rbash -> bash
    lrwxrwxrwx 1 root root       4 Feb 17 21:25 /bin/sh -> dash
    lrwxrwxrwx 1 root root       7 Aug 19  2015 /bin/static-sh -> busybox
    
    Run Code Online (Sandbox Code Playgroud)

    有些是我们应该检查其目标的链接

    # ls -lL /bin/*sh
    -rwxr-xr-x 1 root root 1037464 Sep  1  2015 /bin/bash
    -rwxr-xr-x 1 root root  154072 Feb 17 21:25 /bin/dash
    -rwxr-xr-x 1 root root 1037464 Sep  1  2015 /bin/rbash
    -rwxr-xr-x 1 root root  154072 Feb 17 21:25 /bin/sh
    -rwxr-xr-x 1 root root 1964536 Aug 19  2015 /bin/static-sh
    
    Run Code Online (Sandbox Code Playgroud)
  3. 尝试另一个外壳

    最好的是busybox因为它是静态构建(不需要 .so 库)

    su newuser -s /bin/static-sh
    
    Run Code Online (Sandbox Code Playgroud)

    接下来是dash,低依赖和默认安装

    su newuser -s /bin/dash
    
    Run Code Online (Sandbox Code Playgroud)
  4. 检查库及其父文件夹的权限,您可以使用 ldd

    # ldd /bin/bash
        linux-vdso.so.1 =>  (0x00007ffdefb5a000)
        libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f714bbbd000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f714b9b9000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f714b5ef000)
        /lib64/ld-linux-x86-64.so.2 (0x000055c6bc494000)
    
    # ls -ld /lib /lib/x86_64-linux-gnu /lib64
    drwxr-xr-x 26 root root  4096 May 15 07:41 /lib
    drwxr-xr-x  2 root root  4096 May 14 15:52 /lib64
    drwxr-xr-x  3 root root 16384 May 27 21:39 /lib/x86_64-linux-gnu
    
    # ls -l /lib/x86_64-linux-gnu/libtinfo.so.5 /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2
    lrwxrwxrwx 1 root root 32 Apr 14 23:16 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.23.so
    lrwxrwxrwx 1 root root 12 Apr 14 23:16 /lib/x86_64-linux-gnu/libc.so.6 -> libc-2.23.so
    lrwxrwxrwx 1 root root 13 Apr 14 23:16 /lib/x86_64-linux-gnu/libdl.so.2 -> libdl-2.23.so
    lrwxrwxrwx 1 root root 15 Feb 19 09:23 /lib/x86_64-linux-gnu/libtinfo.so.5 -> libtinfo.so.5.9
    
    Run Code Online (Sandbox Code Playgroud)

    它们只是我们需要验证目标文件的链接

    # ls -lH /lib/x86_64-linux-gnu/libtinfo.so.5 /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2
    ##or
    # ls -lL /lib/x86_64-linux-gnu/libtinfo.so.5 /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2
    -rwxr-xr-x 1 root root  162632 Apr 14 23:16 /lib64/ld-linux-x86-64.so.2
    -rwxr-xr-x 1 root root 1864888 Apr 14 23:16 /lib/x86_64-linux-gnu/libc.so.6
    -rw-r--r-- 1 root root   14608 Apr 14 23:16 /lib/x86_64-linux-gnu/libdl.so.2
    -rw-r--r-- 1 root root  167240 Feb 19 09:23 /lib/x86_64-linux-gnu/libtinfo.so.5
    
    Run Code Online (Sandbox Code Playgroud)


小智 4

您可能对 /lib(或 /lib64)内的文件和/或 /dev 内的文件的权限有问题。

检查它们是否属于 root,并且 de lib 目录中至少有一些文件可供所有用户执行。尝试与“干净”的操作系统进行比较,以验证哪些操作系统需要所有人都可执行。

ls -l /lib例如,您可以检查文件的权限和所有者。

参考链接:http://www.tldp.org/LDP/LG/issue52/okopnik.html