我正在试图弄清楚如何cryptsetup
在不使用的情况下运行命令sudo
。
这样,非 root 用户就可以luks
在需要时运行脚本来解锁和挂载两个加密驱动器,而无需sudo
权限,以及运行另一个脚本来锁定和卸载驱动器。驱动器需要挂载只有在需要的时候,所以我想在脚本中执行挂载和解密,而不是在启动时使用/etc/fstab
和/etc/crypttab
。所以我需要能够运行以下命令没有 sudo, 像这样:
cryptsetup luksOpen /dev/dev1 mapper_name1
cryptsetup luksOpen /dev/dev2 mapper_name2
cryptsetup luksClose mapper_name1
cryptsetup luksClose mapper_name2
我知道挂载和授予驱动器非 root 权限涉及在挂载点和驱动器内的文件上运行chmod
和chown
。我需要知道的是如何能够cryptsetup
在不需要 的情况下运行命令sudo
。
答案1
您可以授予您的用户(或群组)sudo
仅对这些命令的有限访问权限。
用于visudo
编辑sudoers
文件(sudo
配置)。它将在默认编辑器中打开它,并在完成后对其进行验证以防止破坏sudo
。在最后添加这些:
usernameOr%Groupname ALL=(root) NOPASSWD: /sbin/cryptsetup luksOpen /dev/dev1 mapper_name1
usernameOr%Groupname ALL=(root) NOPASSWD: /sbin/cryptsetup luksOpen /dev/dev1 mapper_name2
usernameOr%Groupname ALL=(root) NOPASSWD: /sbin/cryptsetup luksClose mapper_name1
usernameOr%Groupname ALL=(root) NOPASSWD: /sbin/cryptsetup luksClose mapper_name2
这些行的细分:
usernameOr%Groupname
- 用以下列前缀的用户名或组名替换%
ALL
允许所有主机(我不知道这在实践中有何影响,但大多数情况下sudo
似乎没问题)ALL
(root)
意味着他们只能模仿 rootNOPASSWD:
跳过密码提示,删除此部分以提示输入密码/sbin/cryptsetup luksOpen /dev/dev1 mapper_name1
显然是你的命令,带有可执行文件的完整路径