zoukankan      html  css  js  c++  java
  • su命令Permission denied

    问题描述

    在root用户下su到普通用户出现权限问题

    [root@hehe ~]# su - zh
    su: warning: cannot change directory to /home/zh: Permission denied
    su: failed to execute /bin/bash: Permission denied

    解决思路

    由于报错是权限问题,所以需要从文件系统权限着手排查,思路如下:

    • 用户家目录权限问题
    • su命令执行权限问题
    • 程序依赖的共享库权限问题
    • SELinux导致
    • 系统根目录权限问题

    排查过程

    1、检查用户家目录权限

    [root@hehe ~]# ll -a /home/|grep zh
    drwx------   2 zh   zh     62 May 10 23:24 zh

    由输出可知 zh用户对自己家目录具有rwx权限,所以用户家目录权限没有问题。

    2、检查su命令权限

    [root@hehe ~]# ll `which su`
    -rwsr-xr-x 1 root root 62104 Nov  9  2019 /usr/bin/su

    可以看到su命令也是具有S位的,权限也没有问题

    3、检查su命令的共享库权限

    [root@hehe ~]# ldd `which su`
        linux-vdso.so.1 (0x00007ffe3c94a000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00007f2282542000)
        libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007f228233e000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f228213a000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f2281d77000)
        libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f2281b4d000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f2281949000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f228295d000)
        libcap-ng.so.0 => /lib64/libcap-ng.so.0 (0x00007f2281743000)
    [root@hehe
    ~]# ll /lib64/ld-linux-x86-64.so.2 lrwxrwxrwx 1 root root 10 Feb 5 00:06 /lib64/ld-linux-x86-64.so.2 -> ld-2.28.so

     [root@hehe ~]# ll /lib64/ld-2.28.so
     -rwxr-xr-x 1 root root 385384 Feb 5 00:17 /lib64/ld-2.28.so

    可以看到共享库文件也都是具有执行权限的,也可以排除了。

    4、检查SELinux

    [root@hehe ~]# getenforce 
    Disabled

    SELinux也是关闭了,也可以排除

    5、检查/home目录的权限

     可以看到根目录的权限是666,明显除了问题,没有执行权限。只有上级目录具有执行权限时,才能进入到其子目录。

    解决问题

    [root@hehe ~]# chmod 755 /
    [root@hehe ~]# su - zh
    Last login: Sun May 10 23:25:09 CST 2020 on pts/4
    [zh@hehe ~]$ 

    如果要检查是谁操作的,可以通过stat命令和w命令查看:

    [root@hehe ~]# stat /
      File: /
      Size: 4096          Blocks: 8          IO Block: 4096   directory
    Device: fd01h/64769d    Inode: 128         Links: 21
    Access: (0666/drw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-05-10 23:30:28.724451727 +0800
    Modify: 2020-05-09 17:30:21.391659708 +0800
    Change: 2020-05-10 23:25:03.372759080 +0800
     Birth: -

     可以看到是哪个用户最后一个登陆的,登陆的IP

    对于优化过的系统可以查看命令历史

    命令历史优化

    编辑/etc/bashrc文件,加入如下三行:
    HISTFILESIZE=2000
    HISTSIZE=2000
    HISTTIMEFORMAT="%Y%m%d-%H%M%S: "  或者HISTTIMEFORMAT="%Y%m%d %T "
    export HISTTIMEFORMAT

    我这里是测试环境没有优化,就不贴图了

    [root@hehe ~]# less .bash_history
  • 相关阅读:
    Echarts
    递归
    svg(二)---半瓶子晃荡
    svg(一)
    angular --- s3core移动端项目(三)
    angular --- s3core移动端项目(二)
    angular --- s3core移动端项目
    当后台获取内容有标签时如何过滤---angular
    匿名函数的作用域
    Mybatis从浅入深(IDEA版通俗易懂)
  • 原文地址:https://www.cnblogs.com/zh-dream/p/12866300.html
Copyright © 2011-2022 走看看