我的脚本需要对 /dev/sdX 的写访问权限。如何避免以root身份运行它?

unf*_*nfa 1 linux root not-root-user

我正在开发一个 Bash 脚本,用于处理f3大量 USB 驱动器的格式化和测试(使用),如下所示:

mkntfs -QF /dev/sdX
Run Code Online (Sandbox Code Playgroud)

我曾经简单地以 root 身份运行该脚本:

sudo MyScript.sh
Run Code Online (Sandbox Code Playgroud)

然而,今天在重新设计这个工具以使其成为模块化时,我设法不小心做了一些事情,每次我运行这个脚本时都会炸毁我的操作系统。各种应用程序关闭或中断,我无法再执行基本的命令行任务。谢天谢地,重启修复了一切,但这让我再次思考 - 也许我真的不应该以 root 身份运行这个脚本?

问题是 - 我需要执行一些限制普通用户的操作(例如对 /dev/ 中的设备字符文件的写访问权限)。

我该怎么做才能授予我的脚本精确权限并避免不幸的拼写错误会擦除我的硬盘驱动器或破坏我的/dev/null?

Ste*_*itt 5

您可以添加一个udev规则来匹配 USB 驱动器并使它们可由您选择的一组写入,然后在该组中运行脚本。

以下匹配项应标识可移动 USB 驱动器:

KERNEL=="sd*[!0-9]", ATTR{removable}=="1", SUBSYSTEMS=="usb"
Run Code Online (Sandbox Code Playgroud)