文件权限标记' setuid'被忽略了

时间:2016-05-31 14:46:19

标签: bash setuid .profile

我写了这个脚本,基本上它的作用是放弃ram缓存。 我知道它很乱 - 所有的回声''你看到的只是让它更清洁的工作,我喜欢命令之间的一些空白。

#!/bin/bash
free -m && wait
echo ''; echo ''
while true; do
    read -p "Vuoi liberare la RAM? [y,n]" domanda 
    case $domanda in  
        y|Y) echo ''; sync; sudo echo 3 > /proc/sys/vm/drop_caches; echo ''; free -m; echo ''; break ;; 
        n|N) echo ''; echo 'Sei tu il saggio Jack ;)'; echo ''; break ;; 
        *) echo ''; echo 'Come prego?'; echo '' ;; 
    esac
done

无论如何,脚本有效。但为了使它工作,我必须设置权限,如下所示:

sudo chown root.root <my script>

sudo chmod 4755 <my script>

正如我所说的那样有效。 我创建了一个子目录调用:Bin,在我的家里,复制了里面的脚本然后我在.profile中添加了这一行:

export PATH="/home/jacklapinza/.bin:$PATH"

因此,新路径正常,但脚本不再起作用。我的意思是,如果我选择“不”,它就会起作用。但是,如果我按下&#39; y&#39;弹出错误:

permission denied. 

我已在该文件上设置了相同的权限。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是你的文件系统不支持setuid标志。

您可能需要检查挂载选项:如果您使用的是ext4,则可能会设置nosuid选项。

无论如何,我不喜欢setuid标志它太危险而且它没什么优势:让我们免于使用sudo?

我的建议是忽略它并使用sudo调用脚本。如果那不是一个选项,那么你应该检查你的挂载标志。