Флаг разрешения файла '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"

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

permission denied. 

Я установил те же права на файл.

Что я делаю не так?

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам