为了防止某人(除了我之外)更改我的背景,我怎样才能使更改壁纸成为需要密码的操作?
答案1
密码保护更改壁纸
下面的脚本提供了温和的密码保护,用于在“家庭”环境中更改壁纸。之所以温和,是因为密码以纯文本形式存储在脚本中。然而,它应该可以防止普通用户更改壁纸。
它的作用是,当用户更改壁纸时,壁纸会立即变回原样,并提示用户输入密码。如果密码正确,壁纸就会变为新设置的壁纸,否则什么也不会发生。
为了将风险降到最低,请将脚本以意想不到的名称存储在意想不到的地方,和/或作为隐藏文件存储。
使用方法:
将下面的脚本复制到一个空文件中,在头部部分设置您选择的密码(出于安全原因,我不会选择您的 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
答案2
这是一个很好的挑战。尝试一下,
$ 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)。