为什么我在超级用户组时必须使用“sudo”?

为什么我在超级用户组时必须使用“sudo”?
[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ groups martin
martin : martin wheel

我在我自己的主目录下:

[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ pwd
/home/martin/anaconda3

但是当我尝试删除自己目录中的文件时,我收到此错误:

[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ rm test2.ipynb
mv: cannot create regular file ‘/export/.trash/test2.ipynb’: Permission denied

这是为什么?

答案1

背景

您展示的第三个示例中,您尝试对rm文件进行操作,该rm命令看起来用一系列命令重载,其中一个命令尝试对mv文件执行 a 操作/export/.trash

权限

[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ rm test2.ipynb mv:无法创建常规文件“/export/.trash/test2.ipynb”:权限被拒绝

查看权限/export/.trash/

$ ls -ld /export/.trash

所有内容都应归您的用户“martin”所有,以便该帐户可以删除文件并可以选择将mv它们删除到该目录中。

我怀疑有人sudo在这个目录中工作时使用了该命令,并且可能不小心设置了该目录的权限,.trash以便 root 拥有它。

重载命令

关于您的rm命令。您可以使用该命令检查它是否已被重载为别名或同名的 shell 函数type。示例:

$ type -f rm
rm is aliased to `rm -i'

$ type -f mv
mv is aliased to `mv -i'

在这里我们可以看到mvrm命令已作为mv -i和 的别名重载rm -i

答案2

我同意输出rm表明这rm是一个别名或执行其他操作的函数,从路径名来看,它似乎尝试移动到垃圾目录而不是删除。

为了解决原来的问题,组 0 ( wheel) 基本上没有任何意义。在基于 BSD 的系统上,su(而不是sudo)root 仅限于组成员wheel,但这只是 BSD 上命令的功能su,而不是操作系统本身的功能。

sudo命令通常在 Linux 上使用。它是高度可配置的。组 0 中的成员资格可以要求能够使用sudo,但不会自动使用sudo

相关内容