linux - 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 等无济于事。
解决方案
想通了。这是有效的新代码:
#!/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 或将其移动到垃圾箱。
推荐阅读
- ffmpeg - SIGABRT:中止尝试将 PCM 编码为 AAC
- javascript - 在我的 d3 图表中,当我更改画笔并单击未选择的范围时,缩放选择消失了
- javascript - Array.prototype.includes 函数如何比较对象
- java - 在 MYSQL 或 BigDecimal Java 中分钱
- php - 带有easyadmin的Symfony - 主页被重定向到管理页面
- angular - 如何使用角度材料将数据表导出为pdf
- python - 从数据框熊猫中删除数据框
- java - 将字符串替换为空
- docker - Docker-Container 内的 dotnet restore 错误 - 权限被拒绝
- java - 如何根据 Java 中的给定深度深度选择节点?