На форумах Ubuntu есть сообщение о защите записей паролем, в основном для того, чтобы восстановить элементы меню восстановления, чтобы вы входили в качестве супермена с паролем 1234, вам нужно отредактировать некоторые очень волосатые файлы config / script:
Добавить в /etc/grub.d/00_header
cat << EOF
set superusers="superman"
password superman 1234
password bill 5678
EOF
Добавить в /etc/grub.d/00_header
От:
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
To:
if ${recovery} ; then
printf "menuentry '${title}' --users superman ${CLASS} {\n" "${os}" "${version}"
else
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
fi
Совершенствование защиты сильно затруднено
Другие вещи, которые вам нужно сделать, это защитить ваш биос паролем, отключить загрузку из чего-либо другого, кроме первичного жесткий диск и зашифровать свой корневой раздел и установить любой другой раздел как noexec. Это все еще оставляет много векторов.
Все пользовательские настройки быстрых клавиш хранятся в базе данных dconf.
Вы можете легко получить к ним доступ с помощью dconf-editor:
sudo apt-get install dconf-editor
Затем перейдите к следующему пути dconf в редакторе:
/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/
Существует простой способ сделать это с помощью dconf:
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command "'move-window.sh'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding "'<Primary><Alt>Page_Down'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name "'move-window'"
Использование gsettings:
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name "'move-window'"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding "'<Primary><Alt>Page_Down'"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command "'/usr/local/bin/move-window.sh'"
Вам нужно увеличить число в [ f5] для добавления дополнительных привязок, т.е. custom1, custom2 и т. д.
Чтобы сделать его постоянным, просто добавьте его в .bash_profile или похожий скрипт, запускаемый командами входа. Просто не делайте этого для не-login shells .bashrc, потому что по моему опыту эти dconf и gsettings значительно замедляют его. Изменение / добавление 30 привязок занимает второе место! Вы не хотите этого в оболочке без входа (.bashrc)!
Чтобы предотвратить принятие слишком широкого ответа, добавьте отдельное решение для 12.04.
До (и включая) 12.04, пользовательские привязки клавиш не хранятся в базе данных dconf, а в ~/.gconf/desktop/gnome/keybindings (в файле xml, в подпапках, таких как custom0 и т. д.).
Сценарий ниже создает файл xml и его папку containg, автоматически именованные правильно.
python /path/to/set_customshortcuts_12.py <name> <command> <key1> <key2> <key3>
key3 является необязательным, команды могут быть, например: python /path/to/set_customshortcuts_12.py run_browser firefox Primary 7
или python /path/to/set_customshortcuts_12.py run_texteditor gedit Primary Alt 3
#!/usr/bin/env python
import os
import sys
home = os.environ["HOME"]
name = sys.argv[1]
command = sys.argv[2]
keys = sys.argv[3:]
keyfile = [
'<?xml version="1.0"?>',
'<gconf>',
'\t<entry name="action" mtime="1427791732" type="string">',
'\t\t<stringvalue>'+command+'</stringvalue>',
'\t</entry>',
'\t<entry name="name" mtime="1427791732" type="string">',
'\t\t<stringvalue>'+name+'</stringvalue>',
'\t</entry>',
'\t<entry name="binding" mtime="1427791736" type="string">',
'\t</entry>',
'</gconf>',
]
if len(keys) == 2:
keyfile.insert(9, '\t\t<stringvalue><'+keys[0]+'>'+keys[1]+'</stringvalue>')
else:
keyfile.insert(9, '\t\t<stringvalue><'+keys[0]+'><'+keys[1]+'>'+keys[2]+'</stringvalue>')
n = 0
while True:
check = home+"/"+".gconf/desktop/gnome/keybindings/custom"+str(n)
if os.path.exists(check):
n = n+1
else:
newdir = check
newfile = check+"/"+"%gconf.xml"
break
os.makedirs(newdir)
with open(newfile, "wt") as shortcut:
for l in keyfile:
shortcut.write(l+"\n")
Вы можете установить новый пользовательский ярлык без скрипта python, используя sed. Вам просто нужно установить имя, привязку и действие по вашему выбору в следующем скрипте:
name="myaction"
binding="<CTRL><ALT>v"
action="/usr/local/bin/myaction"
media_keys=org.gnome.settings-daemon.plugins.media-keys
custom_kbd=org.gnome.settings-daemon.plugins.media-keys.custom-keybinding
kbd_path=/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/$name/
new_bindings=`gsettings get $media_keys custom-keybindings | sed -e"s>'\]>','$kbd_path']>"| sed -e"s>@as \[\]>['$kbd_path']>"`
gsettings set $media_keys custom-keybindings "$new_bindings"
gsettings set $custom_kbd:$kbd_path name $name
gsettings set $custom_kbd:$kbd_path binding $binding
gsettings set $custom_kbd:$kbd_path command $action
Написал сценарий для этого. См. Ниже.
См. Использование в вызове creatShortcut.
export nextShortcutId=0
function creatShortcut() {
name="$1"
commandToRun="$2"
binding="$3"
path="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${nextShortcutId}"
nextShortcutId=$nextShortcutId+1
dconf write "$path/name" "'""$name""'"
dconf write "$path/command" "'""$commandToRun""'"
dconf write "$path/binding" "'""$binding""'"
}
# dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding '"<Primary><Shift>exclam"'
creatShortcut 'copyq show' 'copyq show' '<Primary><Shift>exclam'
creatShortcut 'System Monitor' 'gnome-system-monitor' '<Primary><Alt>m'
creatShortcut 'Suspend' 'systemctl suspend -i' '<Super>d'
creatShortcut 'Volume Up' 'amixer -D pulse sset Master 5%+' '<Super>Page_Up'
creatShortcut 'Volume Down' 'amixer -D pulse sset Master 5%-' '<Super>Page_Down'
overallbindings=""
for ((i = 0 ; i < $nextShortcutId ; i++ ));
do
overallbindings="$overallbindings, '$customindingPathPrefix$i/'"
done
overallbindings="[${overallbindings:2}]" # Delete the first 2 chars: " ," - space and comma
# echo $overallbindings
# Update the list of bindings for the shortcuts to work
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings "$overallbindings"
# dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/']"