脚本的权限如何更改权限?

脚本的权限如何更改权限?

我有一个直接访问一些磁盘的VMWare虚拟机。为了运行(不将 vmware 作为 su 运行,这有其自身的问题),我需要更改设备的所有权。我已经使用手动完成此操作尼莫,所以我知道需要执行什么操作。

我写了一个 shell 脚本来做到这一点

chown john:john /dev/disk/by-id/blahblah  /dev/anotherblah  /dev/lastoneblah

我将其保存为文件drive-owner,设置执行位,然后在 root shell 中将其所有者更改为 root 并设置 +s 特殊模式标志。

根据 ls 的结果,结果是-rwsr-sr-x

如果我从普通(非 root)shell 运行它,我会收到来自 chown 的错误,不允许操作 它的运行不会受到 root shell 的抱怨。

我似乎缺少自动以 root 身份运行脚本的部分。我认为这就是“setuid”权限的目的和功能,并且+s 是如何指定的

我缺少什么?

答案1

出于安全原因,shell 脚本会忽略 setuid 和 setgid 标志。

答案2

请按照下列步骤操作:

  • 尝试sudo
  • 尝试chmod +x script_path
  • 如果安全性不重要,请运行chmod 777 script_path

答案3

@hildred 在上面的评论中指出了这一点。我会将其扩展为答案,因为我认为这是正确且强烈推荐的答案。

极好的命令

…允许指定用户像 root 一样执行脚本(或其他命令);或者它可以在执行命令之前根据每个命令设置 uid、gid 和/或补充组。它旨在成为使脚本 setuid root 的安全替代方案。 Super还允许普通用户提供命令供其他人执行;这些命令使用提供命令的用户的 uid、gid 和组来执行。

(强调我的)。

相关内容