Флаг разрешения файла «setuid» игнорируется

Я написал этот скрипт, в основном он сбрасывает кеши оперативной памяти. Я знаю, что это грязно - все "эхо", которые вы видите, - это просто обходной путь, чтобы сделать его чище, мне нравятся пустые строки между командами.

#!/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"

Итак, новый путь работает правильно, но скрипт больше не работает. Я имею в виду, это работает, если я выбираю «нет», но если я нажимаю «y», появляется ошибка:

permission denied. 

Я установил те же разрешения для файла.

Что я делаю неправильно?


person Federico Di Lembo    schedule 31.05.2016    source источник
comment
Просто удалите вызов sudo из файла и используйте для вызова своего скрипта с помощью sudo. Вы можете проверить, работает ли скрипт от имени пользователя root с помощью $(id -nu).   -  person JuanR    schedule 31.05.2016
comment
К вашему сведению, обычно вы не должны добавлять свой пользовательский каталог перед обычным путем, вместо этого используйте это: export PATH="$PATH:/home/jacklapinza/.bin" или export PATH="$PATH:$HOME/.bin"   -  person andlrc    schedule 31.05.2016


Ответы (1)


Я думаю, проблема в том, что ваша файловая система не поддерживает флаг setuid.

Вы можете проверить параметры монтирования: если вы используете ext4, может быть установлен параметр nosuid.

В любом случае, мне не нравится флаг setuid, он слишком опасен и дает мало преимуществ: избавить нас от использования sudo?

Я рекомендую просто игнорировать это и вызывать скрипт с помощью sudo. Если это не вариант, вам следует проверить флаги монтирования.

person JuanR    schedule 31.05.2016
comment
Вы абсолютно правы. Не знаю, почему я не подумал об этом, спасибо. - person Federico Di Lembo; 31.05.2016