我有一个文件 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
没有写权限。
这里是一个有用的链接。