Почему мне все еще предлагается ввести пароль после добавления исключения в мой файл / etc / sudoers?

Существует очень простой способ создать полностью постоянный USB-накопитель eOS. Вам просто потребуется следующее: -

- ПК с Windows - Oracle VM VirtualBox (бесплатно) - Копия eOS .ISO - Флешка 32 ГБ + (я использую SanDisk 32 ГБ)

Все, что вам нужно для этого, настроить новую виртуальную машину с виртуальным жестким диском более 9 ГБ. В настройках не забудьте также включить поддержку USB. Настройте это и установите загрузочный образ как ISO-файл eOS, который у вас уже есть. Загрузите виртуальную машину до экрана установки. Подключив USB-накопитель, следуйте инструкциям, пока не дойдете до экрана с предложением ВЫ УДАЛИТЕ ВСЕ ДАННЫЕ ETC ETC и выберите нижнюю опцию. Это похоже на «делай что-нибудь еще». Следующий экран позволяет вам назначать разделы. Вы должны увидеть свой USB-накопитель в списке как диск (Linux обнаруживает флэш-накопители SanDisk на реальных дисках), и вы можете продолжить и разбить его на разделы. Я рекомендую 8gb root, 4gb swap, а все остальное назначить home. Если вы не знаете, как это сделать, ознакомьтесь с описанным здесь методом. Настройка раздела такая же.

https://itsfoss.com/guide-install-elementary-os-luna/

По сути, это все. Перезагрузите, загрузитесь из устаревшего режима с помощью USB, и все готово. Я не уверен, можно ли здесь включить UEFI, но я просто отключил его, чтобы использовать Linux.

1
09.03.2017, 23:24
3 ответа

Как уже делали другие Обратите внимание, ваша команда позволяет пользователю удалить дерево каталогов в системе. Чтобы дать пользователю разрешение на удаление файлов в определенном каталоге, вам необходимо написать сценарий оболочки. В файле sudoers:

myuser ALL = NOPASSWD: /usr/local/sbin/rm_jboss_vfs

В / usr / local / sbin / rm_jboss_vfs :

#!/bin/sh
for x do
  case "$x" in
    */../*|*/..) echo >&2 "$0: .. forbidden"; exit 3;;
    /usr/java/jboss/standalone/vfs/[!.]*) rm -rf -- "$x";;
    *) echo >&2 "$0: only absolute paths under /usr/java/jboss/standalone/vfs are permitted"; exit 3;;
done

Обратите внимание, что пользователь все еще может выйти из / usr / java / jboss / standalone / vfs если там есть символические ссылки. Более безопасным подходом было бы chroot в каталог. Используйте оболочку со встроенной командой rm , например sash .

#!/bin/sash
set -e
-chroot /usr/java/jboss/standalone/vfs
for x do
  case "$x" in
    /usr/java/jboss/standalone/vfs/[!.]*) -rm -rf -- "$x";;
    *) echo >&2 "$0: only absolute paths under /usr/java/jboss/standalone/vfs are permitted"; exit 3;;
done

Проблема с запросом пароля, вероятно, связана с наличием другой записи в файле, которая позволяет пользователю запускать эту команду с запросом пароля. Если совпадают две записи, sudo использует последнюю, поэтому помещайте любую запись NOPASSWD: последней. См. Как запустить определенную программу от имени пользователя root без запроса пароля?


Вместо использования повышения привилегий было бы лучше дать пользователю разрешение делать то, что ему нужно. Разрешения Unix слишком грубые для этого: предоставление пользователю разрешения на удаление файлов в каталоге требует предоставления им разрешения на запись в каталог (в частности, разрешения на создание файлов в нем). По крайней мере, вместо того, чтобы запускать сценарий удаления от имени пользователя root, запустите его от имени некоторой группы jboss_vfs_deleters и дайте этой группе разрешение на запись в указанные каталоги.Установите права доступа к каталогу:

setfacl -d -R -m group:jboss_vfs_deleters:rwX /usr/java/jboss/standalone/vfs
setfacl -R -m group:jboss_vfs_deleters:rwX /usr/java/jboss/standalone/vfs

В файле sudoers :

myuser ALL = (jboss_vfs_deleters) NOPASSWD: /usr/local/sbin/rm_jboss_vfs

Запустите sudo -g jboss_vfs_deleters / usr / local / sbin / rm_jboss_vfs… (вы можете скрыть это в непривилегированном сценарий оболочки).

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

Обратите внимание, что файлы в папке / usr не должны изменяться во время нормальной работы. Я не знаю, что это за файлы, но если вы изменяете их в обычном режиме, они, вероятно, должны находиться в папке / var .

1
27.01.2020, 23:19

Помните, что с этой командой sudo также разрешено /bin/rm -rf /usr/java/jboss/standalone/vfs/file /something_other_might_be_whole_filesystem (аналогично тому, что roaima указал в комментарии).

Если вы должны сделать это таким образом, я бы предложил поместить всю команду find под sudoers, поскольку там нет подстановочных знаков.

Возможно, лучшим решением будет смена владельца каталога или включение myuser в группу, имеющую доступ на запись в указанный каталог.

1
27.01.2020, 23:19

У вас есть 'stalone' в sudoers и 'standalone' в команде find. Возможно, проблема в этом.

2
27.01.2020, 23:19

Теги

Похожие вопросы