Для предотвращения кого-то (кроме меня) от изменения моего образования, как я могу сделать обои, изменяющие действие, требующее пароля?
Это оказалось хорошей проблемой. Попробуйте,
$ sudo mv /usr/bin/gsettings /usr/bin/gsettings2
$ sudo gedit /usr/bin/gsettings
$ sudo chmod +x /usr/bin/gsettings
, Когда gedit подходит на второй инструкции, добавьте:
#!/bin/bash
if [ "$1" == "set" ] && [ "$2" == "org.gnome.desktop.background" ] && [ "$3" == "picture-uri" ]; then
a=$(zenity --entry="Password")
h1=$(/bin/echo $a | /usr/bin/md5sum | /bin/cut -f1 -d" ")
h2='a799d7cf3d9ca647f1320fc6bfaf7408' #Password hash
if [ "$h1" == "$h2" ]; then
gsettings2 set org.gnome.desktop.background picture-uri $4
else
zenity --notification --text="Wrong password. Come again another day"
fi
else
$(gsettings2 $@)
fi
Для отмены
$ sudo rm /usr/bin/gsettings
$ sudo mv /usr/bin/gsettings2 /usr/bin/gsettings
можно перейти к этому md5 генератор , поместить строку и замену a799d7cf3d9ca647f1320fc6bfaf7408
с тем, что Вы любите. Испытайте открытие для себя, что это соответствует. Вы поймете, насколько безопасный это.
, Даже если кто-то просматривает этот файл без Вашего пароля, они не могут изменить его (Это подобно тому, как Linux хранит Ваши пароли: P).
, сценарий ниже обеспечивает умеренную защиту паролем для изменения обоев в "домашних" ситуациях. Умеренный, потому что пароль хранится в сценарии в простом тексте. Тем не менее, это должно препятствовать тому, чтобы средние пользователи изменили обои.
то, Что это делает, - то, что, когда пользователь изменяет обои, это сразу возвращается, и пользователю предлагают пароль. Если пароль корректен, изменения обоев в недавно набор один, иначе ничего не происходит.
Для уменьшения риска сохраните сценарий в неожиданном месте под неожиданным именем и / или как скрытый файл.
Копия сценарий ниже в пустой файл, набор пароль по Вашему выбору в главном разделе (я не выбрал бы Ваш sudo пароль из соображений безопасности, так как это находится в простом тексте!) и сохраняют его как name.py
, выполняют его командой:
python3 /path/to/name.py
#!/usr/bin/env python3
import time
import subprocess
set_password = "monkey"
key = "org.gnome.desktop.background picture-uri "
read = "gsettings get "+key; change = "gsettings set "+key
set_wallpaper = subprocess.check_output(["/bin/bash", "-c", read]).decode("utf-8").strip()
pass_window ='zenity --entry --entry-text="Enter password" --text="Enter password" --title="password" --hide-text'
def check_wall():
global set_wallpaper
curr_wallpaper = subprocess.check_output(["/bin/bash", "-c", read]).decode("utf-8").strip()
if curr_wallpaper != set_wallpaper:
subprocess.Popen(["/bin/bash", "-c", change+set_wallpaper])
try:
entered_password = subprocess.check_output(
["/bin/bash", "-c", pass_window]).decode("utf-8").strip()
except Exception:
entered_password = None
if entered_password == set_password:
subprocess.Popen(["/bin/bash", "-c", change+curr_wallpaper])
set_wallpaper = curr_wallpaper
else:
pass
while True:
check_wall()
time.sleep(3)
<час> отправленный на gist.gisthub