Путаница с sudo и несколькими локальными учетными записями

Мне трудно понять, почему некоторые вещи на терминале Mac намного сложнее, чем в стандартной оболочке Linux.

Скажем, у меня есть две локальные учетные записи, один администратор с именем «adm» и обычный пользователь «usracc», и я хочу иметь возможность обновлять базу данных locateс помощью updatedbкоманды. Мне нужно просто запустить sudo updatedb, за исключением того, что usracc отсутствует в списке sudoers.

Хорошо, говорю я, а su admпотом sudo updatedbмне говорит, что updatedbкоманда не найдена. Итак, резюмируя:

  1. моя учетная запись обычного пользователя отсутствует в списке sudoers (на самом деле это сделано намеренно, так как я не хочу скомпрометировать систему, если пароль для этой учетной записи будет скомпрометирован).

  2. моя учетная запись администратора может sudo, но, по-видимому, не та конкретная команда, которую невозможно найти по какой-либо причине.

  3. когда я suвхожу в свою учетную запись администратора, я вижу; shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission deniedкоторый повторяется каждый раз, когда я пытаюсь получить помощь по содержимому с помощью клавиши табуляции.

поэтому с отключенной учетной записью root Apple как бы заставляет вас предоставлять привилегии sudo учетным записям пользователей, чтобы иметь возможность делать простые вещи, как именно это помогает с безопасностью? Или я тут что-то совсем не так понял?

Ответы (1)

Вы не переносите свою среду оболочки в su admсеанс. поэтому, если вы echo $PATHиспользуете учетную запись usracc и учетную запись adm, вы обнаружите, что они не равны (именно поэтому adm не может найти команду updatedb). Все, что вам нужно сделать, это сказать su, что вы хотите перенести свой env ( su -m admдолжен это сделать), или просто добавить путь к updatedb.

Хотя на моем ящике updateb называется /usr/libexec/locate.updatedbи является скриптом.