сценарий для загрузки / выгрузки модуля psmouse пользователем (без root)

Предполагая, что вы имели в виду : prev (: p - это сокращение от : print , а не : previous ), вы можете добавить файл в список, отредактировав его:

:e filename

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

:argadd filename

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

:badd filename

Чтобы пройти по буферам, вы можете выполнить : bn и : bp .

0
30.03.2018, 22:16
2 ответа

Просто настройте свою политику безопасности sudo, создав правило в /etc/sudoers.d, которое позволяет:

  • определенный набор пользователей (возможно, только один пользователь или группа по мере необходимости ),
  • для выполнения ТОЛЬКО modprobeи rmmod,
  • ТОЛЬКО для аргумента cmd psmouse,
  • С паролем sudo или БЕЗ него.

Это именно то, для чего обычно используется '/etc/sudoers.d'. Итак, приступим... (предполагая конфигурацию с одним хостом и помня, что файлы, расположенные в /etc/sudoers.d, анализируются sudoв отсортированном лексическом порядке.)

  • убедитесь, что /etc/sudoersвключает строку#include /etc/sudoers.d
  • Я обычно работаю с личным файлом по умолчанию /etc/sudoers.d/00_aliases, где я определяю псевдонимы пользователя, cmd, хоста и группы по вкусу. Таким образом, я не только радикально сокращаю использование sudo visudoдля настройки /etc/sudoers, который содержит базовые системные настройки -по умолчанию, но и другие мои файлы в /etc/sudoers.d/получают возможность использовать псевдонимы, сначала проанализированные sudoв /etc/sudoers.d/00_aliases.
  • перетащите файл в /etc/sudoers.d, с именем, например, 20 _psmouse

Если вы не планируете широко использовать drop -в файлах sudoers.d, вы можетенесоздавать /etc/sudoers.d/00_aliasesи вместо этого включать псевдонимы ad -hoc непосредственно в свой поместите -в файлы, как показано ниже.

User_Alias  MOUSE_TWKR = user1[, user2[, user3[,...]]]
Cmnd_Alias  MOUSE_MOD_TWK = /usr/bin/modprobe, /usr/bin/rmmod
MOUSE_TWKR  your-host = NOPASSWD: MOUSE_MOD_TWK psmouse

Истина в пудинге, поэтому вам нужно будет:
1 )обратитесь кman sudoers(по Archlinux, примеры начинаются со строки 1911 из 2038 строк !! )и
2 )немного поэкспериментируйте.
Например, если приведенное выше правило является слишком разрешающим, и вы хотите ограничить использование любых параметров вместе с cmds modprobeи rmmodв контексте, которым вы управляете, замените запись файла на:

 MOUSE_TWKR  your-host = NOPASSWD: MOUSE_MOD_TWK [!-] psmouse

...и с обязательным вводом пароля:

 MOUSE_TWKR  your-host = MOUSE_MOD_TWK [!-] psmouse

(*)замените «ваш -хост» на ваше имя хоста или на ALL, чтобы разрешить все хосты, что сводится только к вашему хосту, если ваша система является отдельной -одиночной машиной и/или вы не работа с удаленным администратором в подсети, например...

3
28.01.2020, 02:18

Изменение прав доступа к файлу psmouse.koмало что даст, кроме того, что кто-то сможет изменить файл (, что было бы плохо! )Вы можете разрешить им запускать modprobeи rmmod, но это тоже будет опасно, потому что теоретически они могут загружать и выгружать любой модуль ядра, установленный в вашей системе!

Вы хотите создать небольшой вспомогательный скрипт и позволить разрешенным пользователям запускать его какroot:

  1. Сделать скрипты:

    /usr/local/bin/load _mouse.sh

    #!/bin/sh
    /sbin/modprobe psmouse
    

    /usr/local/bin/unload _mouse.sh

    #!/bin/sh
    /sbin/rmmod psmouse
    

    Скрипты должны находиться в общедоступном -доступном каталоге (Мне нравится /usr/local/bin, но это личное предпочтение ), с владельцем root:rootи разрешениями 755. rootВладение не требуется, но людям будет труднее вносить изменения :Помните, что эти сценарии нужно запускать от имени суперпользователя, поэтому вам нужно, чтобы они были безопасными!

  2. Разрешить пользователям запускать их

    Используяvisudo(или добавив перетаскивание -в файле в /etc/sudoers.d), добавьте следующее:

    username ALL=(root) /usr/local/bin/load_mouse.sh,/usr/local/bin/unload_mouse.sh
    

    Замените usernameсоответствующим именем пользователя или %groupname, если вы хотите, чтобы члены группы могли запускать это.

    Теперь пользователи должны иметь возможность запускать скрипт, используяsudo /usr/local/bin/load_mouse.sh(илиunload_mouse). Если /usr/local/binнаходится в их PATH, то sudo load_mouse.shтоже будет работать.

  3. (необязательный )Обернуть вызов sudo

    Наконец, вы можете заключить sudoв другой скрипт, чтобы его было легче набирать/выполнять:

    /usr/local/bin/mouse _на

    #!/bin/sh
    sudo /usr/local/bin/load_mouse.sh
    

    /usr/local/bin/мышь _выкл

    #!/bin/sh
    sudo /usr/local/bin/unload_mouse.sh
    

    Они не должны иметь каких-либо особых прав, но я предпочитаю, чтобы они принадлежали root:rootс разрешениями 755. Теперь пользователи могут просто набирать mouse_onи mouse_off(, если вы разрешили им запускать сценарии!)

1
28.01.2020, 02:18

Теги

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