首页 > 解决方案 > Ubuntu -- Nautilus 脚本不会运行“srm”来安全擦除文件

问题描述

我正在尝试向 Nautilus 添加一个上下文菜单选项,以便当我右键单击文件时,我可以选择运行srm以用零安全地覆盖它,而不是将其移动到 /Trash 或rm。我在 ~/.local/share/nautilus/scripts 中有以下可执行文件

#!/bin/bash

#Make local Nautilus filepath variable global
export srmthis=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS

#Copy the above variable to a log
echo "$srmthis" >> logfile.txt

#Now, please srm secure-delete the file indicated in the filepath
sudo -E /usr/bin/srm -flz "$srmthis"

$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS是 Nautilus 在其中选择文件时设置的变量。我的想法是,我会将其抓取到我自己的变量$srmthis 中,然后将其作为目标文件传递给srm ,并带有选项“-flz”,以实现更快但更不安全的擦除。

但它不起作用。没有输出,没有弹出警告。

当我echo "$filetosrm" >> somefile.txt得到输出时,我知道变量已设置。我也可以在终端中单独使用srm没问题。

我究竟做错了什么?

非常感谢!

PS 尝试使用 gksu、pkexec、| 运行 srm xargs 等无济于事。

标签: linuxbashnautilus

解决方案


想通了。这是有效的新代码:

#!/bin/bash

#Make local Nautilus filepath variable global
srmthis=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS

#Copy the above variable to a log
echo "$srmthis" >> srmtemp.txt

#Get the first line from temp file to get rid of annoying newline
line=$(head -n1 srmtemp.txt)

#Wipe the file with srm: -fllz fast mode, -r recursively for any subdirectories
/usr/bin/srm -fllzr "$line"

#Clean up
/usr/bin/srm -l srmtemp.txt

此外,sudo /usr/bin/srm我最终没有使用,而是将我的用户名添加srm到我/etc/sudoers的用户名中,whiterabbit ALL = (root) NOPASSWD: /usr/bin/srm它允许它运行,而不必sudo在脚本中包含命令。

这会将srm添加为 Nautilus 脚本。我现在可以右键单击一个文件,然后转到Scripts -> SRM并在 GUI 中用零擦除该文件,而不是 rm'ing 或将其移动到垃圾箱。


推荐阅读