macOS - 没有 sudo 就无法 rm

macOS - 没有 sudo 就无法 rm

新买了一台 Mac,正在了解这台机器。

我偶然发现了一个相当麻烦的问题 - 没有 sudo 我无法使用 rm。事实上,每当我写一个 rm 命令时,结果都是这样的:

rm: illegal option -- I
usage: rm [-f | -i] [-dPRrvW] file ...
   unlink file

而如果我使用 sudo 来执行该命令,它就会成功执行。

额外的信息:

  • macOS Sierra v.10.12.6
  • 这些文件的访问权限都是 777,并且属于用户“staff”。
  • staff不是用户创建的组/用户。预期是操作系统提供的基础用户/组。

所以问题是,我怎样才能做到在我想要修改这些文件时不需要 sudo ?(并且这个“员工”用户是什么?)

答案1

从错误消息来看,您似乎有一个别名或函数,它rm通过添加额外的参数来重新定义,因为sudo它在与调用它的 shell 不同的环境中运行,并且通常不会从 shell 的初始化脚本中导入别名和函数定义。

此命令显示该rm命令的所有可能的解释:

type -a rm

此外,在 shell 中,您可以使用$(which rm) ...而不是 ,rm ...以确保使用正确的可执行文件,因为外部which程序不知道内部type命令检查的别名和函数定义。带有目录组件的命令始终会转到文件系统来查找它,从而绕过别名和函数。

请注意,您不需要对文件的写访问权限即可删除它:您需要的是对其父目录的写访问权限。

答案2

根据您问题的评论,除非您的用户拥有该文件,否则您很可能无法在没有超级用户权限的情况下删除该对象。

Staff是 MacOS 的系统组。修改此组拥有的文件可能会很危险,尽管您很可能知道自己在用例中要做什么。

至于-I指令,它不在 MacOS 的rm命令中;您需要使用-i,除非它有类似的替代品。

要跳过 sudo,您可以在 .bashrc () 中添加 rm 别名,rm='sudo rm -i'并使用将自己添加到 MacOS 的 Sudoers 文件中sudo visudo,然后附加YOUR_USERNAME_HERE ALL=NOPASSWD: ALL以获得对所有命令的完全 sudo 访问权限,或YOUR_USERNAME_HERE ALL=(ALL:ALL) NOPASSWD: /bin/rm仅限制对 rm 命令的完全访问权限。

笔记:MacOS 的 rm 命令可能不在 /bin/rm 中。我最近没有用过它,但根据我之前的知识,我假设它就在那里。

相关内容