Moin,
zu den Rechten gibt es recht gute Wiki-Artikel: http://wiki.ubuntuusers.de/Rechte und http://wiki.ubuntuusers.de/sudo
In diesem Zusammenhang und vielleicht als Leseleitfaden noch etwas dazu. Ruf doch mal im Verzeichnis /opt einerseits und in $HOME andererseits
ls -la
auf und schau dir die Rechte an. Du findest auf der linken Seite 10 Bezeicher; das erste stellt den Dateityp dar, die restlichen 9 die Rechte. Bei
drwxr-x--- 123 unbuntuS12 unbuntuS12 12288 23. Sep 17:14 .
hieße das also, dass ich selbst lesen, schreiben und ausführen darf (rwx), alle Leute, die in der Gruppe unbuntuS12 sind (standardmäßig niemand sonst) dürfen lesen und ausführen (r-x) und alle anderen dürfen nichts (–-). Jetzt mal zum Vergleich /opt
drwxr-xr-x 6 root root 4096 19. Sep 14:03 .
Du siehst, hier darf jeder, der nicht root (oder in der Gruppe root) ist nur lesen und ausführen (r-x).
Wenn du nun ein Programm startest, dann startest du es "im Auftrag" eines Users. Das Programm darf dann genau das, was der User auch darf. Ein Programm, das nicht unter meinem Benutzernamen läuft, darf in meinem Homeverzeichnis also z.B. nicht einmal lesen. Es könnte aber /opt durchsuchen und dort z.B. Programme ausführen.
Genauers solltest du wie gesagt im Wiki nachlesen.
sudo ist ein Programm, mit dem man den Benutzer und dem etwas ausgeführt werden soll, wechseln kann. Wenn man den Nutzer allerdings nicht angibt, dann wird davon ausgegangen, dass root gemeint ist. Du könntest aber z.B. auch einen neuen Benutzer names pyload anlegen, dann ein Verzeichnis erstellen, in das pyload schreiben darf und dann pyload das Programm pyload ausführen lassen. Das hätte den Vorteil, dass das Programm nur genau das tun darf, was es tun soll. Das orientiert sich an dem Grundsatz, Programmen immer nur so viele Rechte zu geben wie sie wirklich benötigen.
Grundsätzlich würde man wohl davon absehen, einen extra User für ein Downloadprogramm anzulegen, aber du bist ja in der Situation, dass du ohnehin ein für einen Nutzer (entweder deinen oder z.B. pyload) beschreibbares Verzeichnis außerhalb deines Homeverzeichnisses anlegen musst. Insofern wäre das eine Überlegung wert.
Habe ich das richtig verstanden? Ich denke bei root immer noch zu sehr in der Windows Schiene, oder? Da brauchte man ja für bestimmte Programme immer Adminrechte egal wo es gespeichert worden ist....
Die Frage ist immer: Will das Programm Dinge tun, die der ausführende Benutzer nicht tun darf? Z.b. müssen die üblichen Serverdienste (SSH, FTP,...) als root aufgerufen werden, weil in der Standardeinstellung nur root Ports < 1024 öffnen darf. Der Zugriff kann da sehr fein geregelt werden, lässt sich aber im Grunde immer auf Dateirechte zurückführen. Denn selbst ein Systemgerät wie ein Modem wird unter Linux als Datei repräsentiert. Eine Datei hat einen Benutzer und eine Gruppe. Beispiel: Modems haben gewöhnlich die Gruppe 'dialout'. Wenn dein Nutzer also ein Modem benutzen können soll und das nicht nur root vorbehalten sein soll, dann kannst du (mit root-Rechten) deinen Nutzer der Gruppe dialout hinzufügen.
Zu Windows kann ich da keinen Vergleich ziehen, da versteh' ich nix von. 😀
edit:
Wie sieht das ganze denn mit den versteckten Config Ordnern im Home Verzeichnis aus? Nicht wenige Programme erstellen ja die Configs im >/home versteckt. Das müsste ich dann ja bei jedem Programm das ich nutze händisch im Quellcode abändern, da nicht jedes Programm die >Option zum ändern des Config Ordners in der Installationsroutine mitbringt, bei Paketen zum Beispiel ja garnicht wenn ich nicht irre, jedenfalls >wurde ich noch nicht aufgefordert das Verzeichnis eventuell selber zu bestimmen 😉
Nee, musst du nicht, weil es kein Problem ist. Jeder User hat ein Homeverzeichnis, in das er schreiben kann. Und die Programme schreiben in der Regel in einen Ordner relativ zum Homeverzeichnis. Insofern liegen die Programmdaten dann in $HOME/.programmname.
Wie das bei pyload ist, weiß ich nicht. Bei kleineren Skripten, die außerhalb von $PATH liegen, ist es nicht unüblich, dass sie relativ zu ihrem Aufrufpfad schreiben. Ich vermute aber, das wird bei pyload genauso wie bei anderen Programmen über die Umgebungsvariable $HOME laufen. Insofern müsstest du nur einen neuen Benutzer anlegen und diesen pyload aufrufen lassen, wie oben beschrieben. Dann fügst du dich selber der Gruppe pyload hinzu und kannst, wenn du denn dann über SSH eingeloggt bist, die Daten abgreifen, umkopieren und (wenn du der Gruppe noch Schreibrechte gibst) auch löschen.