Kleines Rechteproblem mit Shellscript

Tripex

Lieutenant
Registriert
Dez. 2002
Beiträge
582
Kleines Rechteproblem/Besitzerproblem mit Shellscript

Ich seh glaube gerade vor lauter Bäumen den Wald nimmer.

Ich hab mir nen nslookup & Ping Script gebastelt, da ich aktuell IPv6 teste bei meinem Anbieter.

Das mit chmod hat sich erledigt, leider nicht das Problem mit chown. Ich bekomme trotz korrekter chown -R $USER Angabe nicht die Rechte zugewiesen diese bleiben bei root.

Vielleicht hab ich jetzt zuviele Stunden damit zugebracht mit chow/chmod und den manpages zu verbringen und seh den Wald vor lauter Bäumen nicht mehr, hat jemand evtl. den Durchblick, der mir gerade fehlt?

Nun bekomm ich im ls -la angezeigt, das der Besitzer nach sudo ./ipv6testfiles.sh root ist und nicht $USER.

Mein Script
Code:
dir=`/bin/date +%d-%m-%Y`
urls=( "www.web.de" "www.golem.de" "www.heise.de" "www.google.de" "www.youtube.de" "www.computerbase.de" "www.wikipedia.org" )
files=("$dir/ping.txt" "$dir/nslookup.txt" "$dir/adapters.txt")
mkdir $dir
chmod 755 $dir
chown -R $USER $dir
if [ ! -d Archiv ]; then
	mkdir Archiv
fi
chmod 755 Archiv
chown -R $USER Archiv

i=0; for item in "${files[@]}"; do > $item; chmod 755 $item; chown $USER $item; ((i++)); done

i=0; for item in "${urls[@]}"; do ping -c 5 $item >> $dir/ping.txt; nslookup $item >> $dir/nslookup.txt; echo "\n \n" >> $dir/ping.txt; ((i++)); done

ifconfig >> $dir/adapters.txt

zip -9 -r Unix_$dir $dir
chmod 755 Unix_$dir.zip
chown $USER Unix_$dir.zip

mv Unix_$dir.zip Archiv
rm -rf $dir
 
Zuletzt bearbeitet: (chmod Problem gelöst, auf wundersame Weise ;))
Nur root darf den Besitzer ändern. Daher muss das Script auch von diesem ausgeführt werden. Alternativ kannst du mittels sudo einem User/einer Usergruppe erlauben, chown verwenden zu können.
 
Du führst das script als root aus (via sudo), sehe ich das richtig?

Bau mal ein echo user: $USER ins script ein...

Ich wüsste nicht, wieso $USER nicht root sein sollte...
 
Hm, wenn ich manuell im Terminal sudo chown -R $USER Archiv ausführe, dann setzt er mir den Besitzer richtig.

Das ipv6test.sh Script führe ich auch mit sudo aus (Anderst würde es eh nicht laufen.), da nimmt er mir den chown anscheinend ja nicht.

Frage mich halt wieso ich manuell das Ganze setzen kann, aber im Script, ebenfalls per sudo ausgeführt eben nicht.

Wenn ich im Script den User fest eintrage (Was nicht Sinn und Zweck der Übung ist.) also "sudo chown -R tripeX Archive" setze, dann setzt er mir den Besitzer des Ordners richtig.

Wenn ich echo $USER ins Terminal hämmer, gibt er mir auch den aktuellen Usernamen zurück. Könnte es was bringen, wenn ich nochmal eine neue Variable setze mit dem aktuellen $USER?

EDIT: Wenn ich echo $USER im Script einbaue, gibt er mir "root" zurück. Ergo muss ich schauen wie ich den aktuell angemeldeten User in ne Variable bekomme, wobei mich das mit "sudo chown -R $USER Archiv" stört, weil er das als tripeX setzt.
 
Zuletzt bearbeitet:
Was dir nicht klar zu sein scheint: sudo startet eine neue shell, als root. Und dort wird $USER neu gesetzt, und zwar... auf root.

Du müsstest den user zb. als parameter übergeben.
 
Hm, jo, das war mir nach 28 Stunden ohne Schlaf nimmer so ganz klar.

Vergesst alles was hier stand von wegen $HOME und String dann manipulieren.

$SUDO_USER war das Stichwort das mir auf der Zunge lag. Problem gelöst ;)
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben