当我以 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。