Пила-рыба и fvwm привязка, не работающая при входе в систему с менеджером по оформлению

С su, Вы становитесь другим пользователем — корень по умолчанию, но потенциально другой пользователь. Если Вы говорите su -, Ваша среда заменяется средой входа в систему того пользователя также, так, чтобы то, что Вы видите, было неотличимо от входа в систему как тот пользователь. Нет никакого способа, которым система может сказать то, что Вы делаете в то время как su'd другому пользователю от действий тем пользователем, когда они входят в систему.

Вещи очень отличаются с sudo:

  • Команды Вы пробегаете sudo выполнитесь как целевой пользователь — корень по умолчанию, но изменяемый с -u — но это регистрирует команды, Вы пробегаете его, отмечая их с Вашим именем пользователя, таким образом, вина может быть возложена позже.:)

  • sudo очень гибко. Можно ограничить команды, которые данному пользователю или группе пользователей разрешают выполнить, например. С su, это все или ничего.

    Эта функция обычно используется для определения ролей. Например, Вы могли определить "резервную" группу, разрешенную работать dump и tar, каждый из которых должен базироваться доступ для надлежащего резервного копирования системного диска.

    Я упоминаю это здесь, потому что это означает, что можно дать кому-то sudo полномочия, не давая им sudo -s или sudo bash способности. У них есть только полномочия, с которыми они должны сделать свое задание, тогда как su у них есть выполнение всей системы. Необходимо быть осторожными с этим, хотя: если Вы даете кому-то способность сказать sudo vi, например, они могут окружить из vi и имейте эффективно ту же власть как с sudo -s.

  • Поскольку это берет пароль sudoer вместо пароля root, sudo изолирует разрешение между несколькими sudoers.

    Это решает административную проблему с su, который является что, когда пароль root изменяется, все те, кто должен был знать, что это использовало su должен был быть сказан. sudo позволяет паролям sudoer изменяться независимо. На самом деле это характерно для блокировки пароля учетная запись пользователя root в системе с sudo вынудить все задачи системного администратора быть сделанными через sudo. В крупной организации со многими доверял sudoers, это означает, когда один из листов системных администраторов, Вы не должны изменять пароль root и распределять его тем администраторам, которые остаются.

Основное различие между sudo bash и sudo -s это -s короче и позволяет Вам передать команды для выполнения в оболочке пользователя по умолчанию несколькими способами:

  1. Можно сказать sudo -s some-command который работает some-command под Вашей оболочкой. Это является в основном кратким для sudo $SHELL -c some-command.

  2. Можно вместо этого передать команды стандартному входу оболочки, как sudo -s < my-shell-script. Вы могли использовать это с heredoc для отправки нескольких команд в сингл sudo звоните, избегая потребности ввести sudo неоднократно.

Оба из тех поведений являются дополнительными. Намного чаще всего Вы даете -s один, таким образом, это просто выполняет оболочку Вашего пользователя в интерактивном режиме. В том режиме это отличается от sudo bash в этом это могло бы выполнить другую оболочку, чем bash, так как это выглядит первым в SHELL переменная среды, и затем если это сброшено, при установке оболочки входа в систему Вашего пользователя, обычно в /etc/passwd.

Оболочка, выполненная sudo -s наследовал Вашу текущую пользовательскую среду. Если то, что Вы на самом деле хотите, является чистой средой, как Вы добираются сразу после входа в систему, что Вы хотите вместо этого, sudo -i, относительно недавнее дополнение к sudo. Примерно разговор, sudo -i к sudo -s как su - к su: это сбрасывает все кроме нескольких ключевых переменных среды и передает Вас обратно корневому каталогу Вашего пользователя. Если Вы также не даете его, команды для выполнения под той оболочкой с помощью стандарта вводят или sudo -i some-command, это выполнит ту оболочку как интерактивную оболочку входа в систему, таким образом, сценарии запуска оболочки Вашего пользователя (например. .bash_profile) будьте выполнены снова.

Все это делает sudo -i значительно более безопасный, чем sudo -s. Почему? Поскольку, если кто-то может изменить Вашу среду прежде sudo -s, они могли заставить непреднамеренные команды выполняться. Самый очевидный случай изменяет SHELL, но это может также произойти менее непосредственно, такой как через PAGER если Вы говорите man foo в то время как под sudo -s.

Вы могли бы сказать, "Если они могут изменить PAGER, они могут изменить PATH, и затем они могут просто заменить злом sudo программа", но кто-то достаточно параноидальный может сказать /usr/bin/sudo /bin/bash избегать того прерывания. Вы, вероятно, не столь параноики, что Вы также избегаете прерываний во всех других восприимчивых переменных среды, все же. Вы также не забывали проверять EDITOR, например, прежде, чем выполнить какую-либо команду VCS? Таким образом sudo -i.

Поскольку sudo -i также изменяет Ваш рабочий каталог на корневой каталог Вашего пользователя, Вы могли бы все еще хотеть использовать sudo -s для тех ситуаций, где Вы знаете, Вы хотите остаться в том же каталоге, которым Вы были cd'd в то, когда Вы работали sudo. Еще более безопасно sudo -i и cd назад туда, где Вы были, все же.

1
30.03.2013, 04:03
1 ответ

Я знаю то, что беспокоит Пилу-рыбу, и как зафиксировать ее, но не, почему использование менеджера по оформлению вызывает это поведение.

Моя персональная раскладка клавиатуры не имеет никакой клавиши Num Lock и не присваивает ключа к модификатору Mod2. Пила-рыба игнорирует модификатор, присвоенный Num Lock, когда это запускается. Если никакой ключ не присвоен модификатору, Пила-рыба не игнорирует его, таким образом, привязка для ключа не инициирована, когда Mod2 идет (должна была бы быть привязка для).

Fvwm ведет себя так же. Существует дополнительная тонкость это привязка с A в модификаторах столбец работает все время, независимо от того, идет ли Mod2; это - только привязка с явным набором модификаторов, которая не работает.

По некоторым причинам то, что я не выяснил, когда я вхожу в систему с менеджером по оформлению, модификатор Num Lock зарегистрирован как на (даже при том, что это выключено, в то время как я ввожу свое имя пользователя и пароль, и Num Lock Вовлекла клавиатуру, выключено). Это заставляет Fvwm и Sawfish получать события клавиатуры Mod2+key, а не ключ, которому связали команду с ним.

Так как я не использую Mod2, я могу зафиксировать это путем выключения Num Lock в моем .xsession:

python -c 'from ctypes import *
X11 = cdll.LoadLibrary("libX11.so.6")
display = X11.XOpenDisplay(None)
X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(16), c_uint(0))
X11.XCloseDisplay(display)'

или полностью отключите Mod2 с

xkbset nullify mod2
0
28.01.2020, 02:07

Теги

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