2016-05-31 29 views
0

Ich schrieb dieses Skript, im Grunde ist es, die RAM-Caches zu löschen. Ich weiß, es ist chaotisch - all die „echo‚‘, die Sie gerade eine Arbeit um zu sehen sind, um es sauberer zu machen, Ich mag einige leeren Zeilen zwischen den BefehlenFile Permission Flag 'setuid' wird ignoriert

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

Wie auch immer, das Skript funktioniert, aber in Ordnung.. machen es funktioniert ich die Berechtigungen mussten, wie es folgt:.

sudo chown root.root <my script> 

sudo chmod 4755 <my script> 

wie gesagt es funktioniert habe ich einen Anruf Unterverzeichnis: Bin, kopiert in meinem Haus, das Innere Skript und dann habe ich diese Linie in meinem .profile:

export PATH="/home/jacklapinza/.bin:$PATH" 

So funktioniert der neue Pfad ordnungsgemäß, aber das Skript funktioniert nicht mehr. Ich meine, es funktioniert, wenn ich ‚Nein‘ wählen, aber wenn ich drücke ‚y‘ ein Fehler herausspringt:

permission denied. 

ich die gleichen Berechtigungen für die Datei festgelegt haben.

Was mache ich falsch?

+0

Entfernen Sie einfach den Sudo-Aufruf aus der Datei und verwenden Sie, um Ihr Skript mit Sudo aufzurufen. Sie können prüfen, ob das Skript als root mit '$ (id -nu)' läuft. –

+0

FYI normalerweise sollten Sie Ihr Benutzerverzeichnis nicht vor dem normalen Pfad hinzufügen, verwenden Sie stattdessen: 'export PATH =" $ PATH: /home/jacklapinza/.bin "' oder 'export PATH =" $ PATH: $ HOME /. bin "' – andlrc

Antwort

1

Ich denke, das Problem hier ist, dass Ihr Dateisystem das Flag setuid nicht unterstützt.

Möglicherweise möchten Sie Ihre Mount-Optionen überprüfen: Wenn Sie ext4 verwenden, könnte die Option nosuid festgelegt werden.

Wie auch immer, ich mag nicht die setuid Flagge es ist zu gefährlich und es bietet wenig Vorteile: ersparen Sie uns von der Verwendung von sudo?

Meine Empfehlung ist dies einfach ignorieren und rufen Sie das Skript mit Sudo. Wenn das keine Option ist, sollten Sie Ihre Mount-Flags überprüfen.

+0

Sie haben absolut Recht. Ich weiß nicht, warum ich nicht darüber nachgedacht habe, danke. –