Мне трудно понять, почему некоторые вещи на терминале Mac намного сложнее, чем в стандартной оболочке Linux.
Скажем, у меня есть две локальные учетные записи, один администратор с именем «adm» и обычный пользователь «usracc», и я хочу иметь возможность обновлять базу данных locate
с помощью updatedb
команды. Мне нужно просто запустить sudo updatedb
, за исключением того, что usracc отсутствует в списке sudoers.
Хорошо, говорю я, а su adm
потом sudo updatedb
мне говорит, что updatedb
команда не найдена. Итак, резюмируя:
моя учетная запись обычного пользователя отсутствует в списке sudoers (на самом деле это сделано намеренно, так как я не хочу скомпрометировать систему, если пароль для этой учетной записи будет скомпрометирован).
моя учетная запись администратора может sudo, но, по-видимому, не та конкретная команда, которую невозможно найти по какой-либо причине.
когда я su
вхожу в свою учетную запись администратора, я вижу; shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
который повторяется каждый раз, когда я пытаюсь получить помощь по содержимому с помощью клавиши табуляции.
поэтому с отключенной учетной записью root Apple как бы заставляет вас предоставлять привилегии sudo учетным записям пользователей, чтобы иметь возможность делать простые вещи, как именно это помогает с безопасностью? Или я тут что-то совсем не так понял?
Вы не переносите свою среду оболочки в su adm
сеанс. поэтому, если вы echo $PATH
используете учетную запись usracc и учетную запись adm, вы обнаружите, что они не равны (именно поэтому adm не может найти команду updatedb). Все, что вам нужно сделать, это сказать su, что вы хотите перенести свой env ( su -m adm
должен это сделать), или просто добавить путь к updatedb.
Хотя на моем ящике updateb называется /usr/libexec/locate.updatedb
и является скриптом.