2016-05-31 2 views
0

Я написал этот скрипт, в основном, что он делает, это сбросить тайники. Я знаю, что это грязно - все «эхо„“, что вы видите только работа вокруг, чтобы сделать его чище, я, как некоторые пустые строки между командамиФайл Permission flag '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. 

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

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

+0

Просто удалите вызов sudo изнутри файла и получите возможность использовать ваш скрипт, используя sudo. Вы можете проверить, работает ли скрипт как root с '$ (id -nu)'. –

+0

FYI вы обычно не должны добавлять свою пользовательскую директорию до нормального пути, используйте вместо этого: 'export PATH =" $ PATH: /home/jacklapinza/.bin "или' export PATH = "$ PATH: $ HOME /. bin "' – andlrc

ответ

1

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

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

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

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

+0

Вы абсолютно правы. Я не знаю, почему я об этом не думал, спасибо. –