3

Благодаря новым "исправлениям безопасности" в mount или mount.cifs (я не уверен, что) нормальные пользователи больше не могут монтировать что-либо, даже если им явно разрешено использование флагов user , users или owner . По этой причине я изменил конфигурацию sudo, чтобы мой пользователь мог запускать определенные команды монтирования для общих сетевых ресурсов без пароля. Затем я создал скрипт в $HOME/bin под названием mount который содержит:

sudo /usr/bin/mount "$*"

Так что теперь я могу использовать монтирование, как раньше, без необходимости вводить пароль. Проблема в том, что я не могу подключить мои сетевые ресурсы с помощью Nautilus, что гораздо удобнее. Я использую флаг noauto в fstab, потому что в противном случае монтирование произойдет до того, как я установлю соединение с беспроводной сетью, и сразу же потерпит неудачу.

Общие ресурсы отображаются в Nautilus как серые папки, и когда я щелкаю по папке, Nautilus пытается смонтировать общий ресурс с помощью следующей команды (я думаю):

/usr/bin/mount "/media/My Network Share"

Который терпит неудачу, потому что это не использует sudo . Я пытался сделать:

PATH="$HOME/bin:$PATH" nautilus

Но ошибка все еще происходит, предположительно, потому что Наутилус использует абсолютный путь для mount .

Итак, мой вопрос: есть ли способ обмануть Наутилуса с помощью sudo /usr/bin/mount или даже просто mount без абсолютного пути?


Мое последнее средство в основном - переместить двоичный файл mount другое место и заменить его скриптом bash. Сценарий bash проверит, какой пользователь его выполняет, и, если это мой пользователь, он добавит sudo перед командой. В противном случае он будет просто вызывать фактический исполняемый файл монтирования нормально. Я надеюсь избежать таких радикальных мер, так как я могу легко разрушить свою систему за пределами моей способности к ремонту.

1 ответ1

1

Вы можете сделать исполняемые файлы linux исполняемыми с правами root, установив атрибут setuid для исполняемого файла, который вам нужно вызвать. Вы также можете создать группу, которая имеет доступ только для монтирования (если это не однократная установка, тогда вы можете просто использовать свою группу пользователей). Так что-то вроде следующего в корневой оболочке:

# groupadd mounters
# usermod -a -G mounters yourusername
# chgrp mounters /bin/mount
# chmod g+s /bin/mount

Таким образом, создается группа с именем "mounters", добавляется ваш пользователь в эту группу, затем изменяется группа в /bin /mount на "mounters", а затем устанавливается атрибут setuid только для этой группы в /bin /mount. Если вы затем выполните этот двоичный файл, вы должны эффективно выполнять его как root.

Проверьте http://en.wikipedia.org/wiki/Setuid для получения дополнительной информации.

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