`su` 命令:权限被拒绝

`su` 命令:权限被拒绝

当我以 root 身份在 bash 中输入以下命令时su -s /bin/bash,不会发生错误。

当我输入 时su -s /bin/bash -m [MyUserName],我收到错误:Permission denied.

据我所知,这与文件有关/etc/bashrc

我看了:/etc有权限754/etc/bashrc权限544

有很多命令可以更改权限以允许执行该文件。问:我真的需要执行权限吗?为什么?或者还有其他方法可以解决这个问题吗?

编辑

有些人要求提供更多信息。所以他们是:

该命令su -s /bin/bash -m [MyUserName]是我从整个命令中提取出来的命令su -s /bin/bash -m [MyUserName] /some/path/tomcat/bin/startup.sh -[some] [args]

首先我认为,这与 tomcat 有关,但是当我可以su -s /bin/bash -m [MyUserName]在没有 tomcat 部分的情况下输入时,问题就不是 tomcat 部分了。据我所知,整个命令用于以特殊用户身份启动命令。

答案1

问题是你的权限/etc。这些一定是755,也不是754

完整的错误文本如下:

su -s /bin/bash -m roaima
Password: _
bash: /etc/bash.bashrc: Permission denied
I have no name!

这表明系统正在努力读取/etc/passwd您的主目录、全名等详细信息。

修复权限/etc,问题就会自行解决。

答案2

使用手册页:

-m, -p, --preserve-environment
    Preserves  the  whole  environment, ie does not set HOME, SHELL,
    USER nor LOGNAME.

因此,以 root 身份运行 'su -m ' 将使 bash 读取 ~/.bashrc ,它会扩展(由于保留的环境)到 /root/.bashrc ,而您没有用户权限。你的 /etc 和 /etc/bashrc 权限也错误,/etc 的权限应该是 755,/etc/bashrc 的权限应该是 644。

相关内容