Совершенно новый владелец Mac, знакомящийся с машиной.

Я наткнулся на проблему, которая является довольно неприятной - я не могу использовать rm без sudo. Действительно, всякий раз, когда я пишу команду rm, результат будет следующим:

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

в то время как если я буду выполнять команду, она будет выполнена успешно.

Дополнительная информация:

  • macOS Sierra v.10.12.6
  • Все файлы имеют права доступа 777 и принадлежат «персоналу» пользователя.
  • staff не является созданной пользователем группой / пользователем. Ожидается, что это базовый пользователь / группа, предоставляемая ОС.

Итак, вопрос в том, как мне сделать так, чтобы мне не нужно было sudo каждый раз, когда я хочу изменить эти файлы? (И, наконец, что это за «штатный» пользователь?)

2 ответа2

3

Из сообщения об ошибке выглядит, как будто у вас есть псевдоним или функция, которая переопределяет rm путем добавления дополнительных параметров, поскольку sudo работает в среде, отличной от оболочки, из которой он вызывается, и обычно не импортирует определения псевдонимов и функций из сценарии инициализации оболочки.

Эта команда показывает все возможные интерпретации команды rm :

type -a rm

Кроме того, в оболочке вы можете использовать $(which rm) ... вместо rm ... , чтобы убедиться, что вы используете правильный исполняемый файл, как внешний, which программа не знает об определениях псевдонимов и функций, которые команда внутреннего type проверяет. Команда с компонентом каталога всегда отправляется в файловую систему, чтобы найти ее, тем самым обходя псевдонимы и функции.

Обратите внимание, что вам не нужен доступ на запись к файлу, чтобы удалить его: вам нужен доступ на запись к его родительскому каталогу.

1

Основываясь на комментариях к вашему вопросу, если ваш пользователь не владеет файлом, вы, скорее всего, не сможете удалить объект без прав суперпользователя.

Staff - системная группа MacOS. Изменение файлов, принадлежащих этой группе, может быть потенциально опасным, хотя вы, скорее всего, знаете, что вы делаете в своем сценарии использования.

Что касается директивы -I , то ее нет в команде MacOS rm ; вам нужно будет использовать -i , если у него нет аналогичной замены.

Чтобы пропустить sudo, вы можете добавить псевдоним rm в ваш .bashrc (rm='sudo rm -i') и добавить себя в файл Sudoers MacOS с помощью sudo visudo , а затем добавить YOUR_USERNAME_HERE ALL=NOPASSWD: ALL для полного доступа sudo ко всем командам или YOUR_USERNAME_HERE ALL=(ALL:ALL) NOPASSWD: /bin/rm чтобы ограничить полный доступ только к команде rm.

Примечание. Команда rm в MacOS может не находиться в /bin /rm. Я не использовал его недавно, но предположим, что он находится там от предыдущих знаний.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .