文件权限标志 'setuid' 被忽略

File Permission flag 'setuid' is being ignored

我写了这个脚本,基本上它的作用是删除 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"

因此,新路径可以正常工作,但脚本不再有效。我的意思是,如果我选择 'no' 它会起作用,但如果我按 'y' 会弹出一个错误:

permission denied. 

我已经对文件设置了相同的权限。

我做错了什么?

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

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

无论如何,我不喜欢 setuid 标志,它太危险而且没有什么好处:让我们不要使用 sudo?

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