如何在Linux中通过脚本间接访问文件

如何在Linux中通过脚本间接访问文件

我有一个文件 text1,在这个文件上只有一个用户(user1)具有读、写、执行权限,其他人(user2)具有读和执行权限。我想写一个脚本来更改文件 text1 的内容,如下所示,该脚本将由 user2 执行

sed -i '/s/eg1/eg0/' text1

我想修改上述脚本以更改 text1 的内容,而无需直接授予 user2 写权限。我的意思是说 user2 不应该能够直接写入 text1,但当他执行脚本时,text1 的内容应该被修改,因为无法授予对 text1 的直接写权限

答案1

尝试以下步骤:

  • 以用户1身份登录
  • 将您的命令保存在脚本文件中,例如changeText.sh
  • 使其可执行:

      chmod 755 changeText.sh
    
  • 设置 SUID(执行时设置所有者用户 ID)权限:

      chmod u+s changeText.sh
    

此后,changeTest.sh看起来像:

      -rwsr-xr-x 1 user1 user1 xxxx nov 15  2014 /path/to/file/changeText.sh

SUID 为用户提供临时权限,以文件所有者的权限而不是运行它的用户的权限来运行程序/文件。

换句话说,user2运行时/path/to/file/changeText.sh将获得文件所有者的权限并会更改文件 text1 中的文本,即使user2没有写权限。

这里是一个有用的链接。

相关内容