Флаг разрешения файла '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. Если это не вариант, вы должны проверить флаги монтирования.