staging.inyokaproject.org

per Terminal kann ich Ordner als root erstellen, per Programm aber keine Dateien dadrin abspeichern.

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

LeeHarvey

Anmeldungsdatum:
10. Juli 2012

Beiträge: Zähle...

Morgen Community !

Auf meinem Linuxsystem kann ich in meinem Homeordner natürlich Ordner und Dateien erstellen und speichern.

Jetzt will ich aber meine unter QT programmierten Dateien in var speichern, mir wird aber dafür als normaler User keine Berechtigung erteilt.

So. Nun habe ich stattdessen im vornherein per Terminal unter var meine Ordner für die QT-Aufgaben erstellt (als root), aber sobald ich in QT programmiere und in var abspeichern möchte, werde ich nicht gelassen.

Muss ich für den QT-Aufgabenordner unter var die Rechte ändern ? Wenn ja, wie ? Gibt es dafür schon einen Thread ? Nachdem ich das letzte mal Rechte selbstständig änderte um ein ähnliches Problem zu lösen musste ich das System neu aufsetzen.

Oder ist die Lösung viel simpler ?

Danke.

engheneiro

Anmeldungsdatum:
13. August 2009

Beiträge: 2080

Hi,

an den Berechtigungen für die Standardverzeichnisse sollte man als User (normalerweise) nichts ändern.

Warum entwickelst du nicht deine Dateien irgendwo unterhalb deines Home-Verzeichnisses und "installierst" dann die fertigen Binaries dahin wo sie hin sollen (ggf. als eigenes Package oder ausnahmsweise mit "sudo" hinkopieren)?

Gruss

Rainer

LeeHarvey

(Themenstarter)

Anmeldungsdatum:
10. Juli 2012

Beiträge: Zähle...

Ja sind sowieso nur Übungen für die Berufsschule die ich hier im Betrieb mache, also ist deren Lokation eigtl. nicht so wichtig, es geht mir hier auch um den Lerneffekt, muss ja wissen wenn ich mal ein Prog benutze und was speichern muss, wie man das macht - ausserhalb des Homeverzeichnisses (was mir gesagt wurde unschön sei, alles ins Home zu packen). Und von Home aus ins Verzeichnis kopieren ist uneffektiv, vor allem wenn es mal ein größeres/wichtiges Projekt sein sollte. Will ja ein Linuxpro werden 😉. Muss doch einen simplen Weg geben sowas zu bewerkstelligen. Kopieren kostet Zeit und Zeit ist Geld. Und vor allem in unserer Programmiererwelt sind Kosten ein großes Thema, wenn man mal gut werden möchte. Kann ich nicht einfach einem Ordner oder einer ganzen Partition vll sogar spezielle Schreibrechte erteilen bzw. entnehmen ohne ein großes Hickhack zu veranstalten ? Einfache Befehle per sudo o. ä. ?

Hoffe höre mich nicht zu sehr wie ein Laie an.

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: Zähle...

LeeHarvey schrieb:

Kann ich nicht einfach einem Ordner oder einer ganzen Partition vll sogar spezielle Schreibrechte erteilen bzw. entnehmen ohne ein großes Hickhack zu veranstalten ? Einfache Befehle per sudo o. ä. ?

Moin,

Für Dich sind bei dieser Problemstellung die Seiten Rechte und chmod Pflichtlektüre. Wahrscheinlich kennst Du sie schon. Deswegen stelle ich mal als Gegenfrage (Du sollst ja schließlich was lernen 😉:

Ins Verzeichnis /tmp kann jeder, auch nicht-Root, hineinschreiben. Dafür hat /tmp allerdings spezielle Rechte auf's Verzeichnis gesetzt. Was bedeuten sie?

Jetzt auf Dein Problem bezogen:

  • Was spricht dagegen, die Daten in Deinem Homeverzeichnis abzulegen?

  • Der übliche Weg, wie Daten außerhalb von Home erstellt werden, ist:

    • Das Programm wird als Root installiert. Wenn das Programm Daten auf ein Verzeichnis schreiben soll, das nicht im Home des Users liegen soll, dann legt das Programm bei der Installation (!) bereits ein eigenes Verzeichnis mit den Rechten 777 (oder wie /tmp) an. Beispiel: /var/spool/cron

    • Das Programm wird als User aufgerufen und die Daten werden in das Home des Users abgelegt.

  • Seltener sieht man die Möglichkeit, dass das Programm als Root läuft und Daten für den User ablegt, auf die der User dann mit seinen Rechten zugreifen kann. Beispiel /var/spool/mail

Also, sudo ist übers Ziel hinaus. Die Unix-Rechteverwaltung bringt schon viele Sachen mit, mit denen solche Probleme gelöst werden können (Es hapert halt dann an feinerer Rechteverwaltung wie ACL)

Dirk

LeeHarvey

(Themenstarter)

Anmeldungsdatum:
10. Juli 2012

Beiträge: 38

Ja habe noch Lernbedarf bei den Themen Rechte/chmod, aber verstehe schon das Konzept, nur nicht im Detail. chmod-Eingaben sind gefährlich, damit habe ich schon mal komplett meine Rechte zerschossen, darum bin ich da seither vorsichtig.

tmp wäre im Prinzip auch mit kopieren verbunden (was vor allem bei größeren Projekten/Dateien zeitaufwändig wäre), wie bei dem temporären ablegen im Home-Verzeichnis. Aber danke f die Info.

Was spricht dagegen, die Daten in Deinem Homeverzeichnis abzulegen?

Wie gesagt, unschön und bei größeren Projekten zeitaufwändig und führt doch iwann zu einem Chaos wenn man Programmteile in verschiedensten Ordner hat. Hier das Prog, da die Projekte, hier die Zwischenstände usw. Bins halt gewohnt alles was zusammengehört in einem Ordner zu haben und höchstens Speicherstände oder einzelne fertige Projekte in Home zu packen (freiwillig wenns von nöten ist, nicht zwangsweise immer).

Der übliche Weg, wie Daten außerhalb von Home erstellt werden, ist:

Das Programm wird als Root installiert. Wenn das Programm Daten auf ein Verzeichnis schreiben soll, das nicht im Home des Users liegen soll, dann legt das Programm bei der Installation (!) bereits ein eigenes Verzeichnis mit den Rechten 777 (oder wie /tmp) an. Beispiel: /var/spool/cron

Das Programm wird als User aufgerufen und die Daten werden in das Home des Users abgelegt.

Seltener sieht man die Möglichkeit, dass das Programm als Root läuft und Daten für den User ablegt, auf die der User dann mit seinen Rechten zugreifen kann. Beispiel /var/spool/mail

Wenn ich das also richtig verstehe ist es unter unixbasierten Systemen nur möglich als root überall abzuspeichern sofern man es als root installiert oder als root installiert und als User dann wieder von Rechtekonflikten ausgehen muss beim Arbeiten, da man ja nicht die ganze Zeit als root eingeloggt sein sollte (warum muss ich euch ja nicht erklären). Sry aber das hört sich f mich nach einem noch nicht ganz ausgeklügelten Sicherheitskonzept aus (was die Benutzerfreundlichkeit bzw. Arbeitseffektivität angeht).

Naja muss ich wohl damit leben und immer im Home speichern. Halb so wild...vorerst...hoffe ich mal...solange ich noch lerne und es sich gerade NOCH nur um Übungen handelt.

Werde mich weiterhin in die Rechteverwaltung reinkämpfen und chmod versuchen kontrolliert zu erlernen bzw. nochmal (hatte es schon mal gelernt) in ACLs reinlernen, vllt hilft mir ja das.

Danke vorerst !

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

LeeHarvey schrieb:

Ja habe noch Lernbedarf bei den Themen Rechte/chmod, aber verstehe schon das Konzept, nur nicht im Detail. chmod-Eingaben sind gefährlich, damit habe ich schon mal komplett meine Rechte zerschossen, darum bin ich da seither vorsichtig.

Daher versucht man ja den User als Fehlerquelle aus den Systemverzeichnissen soweit als möglich herauszuhalten.

tmp wäre im Prinzip auch mit kopieren verbunden (was vor allem bei größeren Projekten/Dateien zeitaufwändig wäre), wie bei dem temporären ablegen im Home-Verzeichnis. Aber danke f die Info.

/tmp ist für temporäre Dateien, die ein Programm z.B. erzeugt um Zwischenschritte zu speichern.

Was spricht dagegen, die Daten in Deinem Homeverzeichnis abzulegen?

Wie gesagt, unschön und bei größeren Projekten zeitaufwändig und führt doch iwann zu einem Chaos wenn man Programmteile in verschiedensten Ordner hat. Hier das Prog, da die Projekte, hier die Zwischenstände usw. Bins halt gewohnt alles was zusammengehört in einem Ordner zu haben und höchstens Speicherstände oder einzelne fertige Projekte in Home zu packen (freiwillig wenns von nöten ist, nicht zwangsweise immer).

Das ist Unsinn alles (außer dem Quelltext) in einem Ordner zu halten. Für fertige Programme wurde der FHS geschaffen: http://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

Idealerweise baut man aus dem Quelltext ein Paket, das die korrekte Aufteilung (Bibliotheken, Binarys, Konfigurationsdateien) berücksichtigt und bei der Installation selbige an die richtigen Stellen kopiert. Im Home-Ordner sollten dann nur die Benutzerspezifischen Einstellungen und die Dateien, mit denen der Nutzer im Programm arbeiten soll liegen.

Der übliche Weg, wie Daten außerhalb von Home erstellt werden, ist:

Das Programm wird als Root installiert. Wenn das Programm Daten auf ein Verzeichnis schreiben soll, das nicht im Home des Users liegen soll, dann legt das Programm bei der Installation (!) bereits ein eigenes Verzeichnis mit den Rechten 777 (oder wie /tmp) an. Beispiel: /var/spool/cron

Das Programm wird als User aufgerufen und die Daten werden in das Home des Users abgelegt.

Seltener sieht man die Möglichkeit, dass das Programm als Root läuft und Daten für den User ablegt, auf die der User dann mit seinen Rechten zugreifen kann. Beispiel /var/spool/mail

Wenn ich das also richtig verstehe ist es unter unixbasierten Systemen nur möglich als root überall abzuspeichern sofern man es als root installiert oder als root installiert und als User dann wieder von Rechtekonflikten ausgehen muss beim Arbeiten, da man ja nicht die ganze Zeit als root eingeloggt sein sollte (warum muss ich euch ja nicht erklären). Sry aber das hört sich f mich nach einem noch nicht ganz ausgeklügelten Sicherheitskonzept aus (was die Benutzerfreundlichkeit bzw. Arbeitseffektivität angeht).

Das Konzept ist sehr ausgeklügelt, nur passen deine Vorstellungen nicht zu dem was unter unixoiden Systemen etablierter Standard ist. Als User trifft man nicht auf Rechteprobleme, wenn alle Programme so ausgelegt sind, dass der User nicht aus Systemverzeichnisse schreibend zugreifen muss. Für Ordner mit Dateien, auf die mehrere Nutzer Zugriff haben sollen (z.B. gemeinsame Arbeitsverzeichnisse), reichen i.d.R. auch die normalen Gruppen- und Benutzerrechte, ACLs braucht es eigentlich nur bei deutlich komplexeren Vorhaben bei der Rechtevergabe.

LeeHarvey

(Themenstarter)

Anmeldungsdatum:
10. Juli 2012

Beiträge: 38

man lernt nie aus in dieser Branche ... Werde mein Homeverzeichnis wohl weiterhin nutzen und bei Bedarf umkopieren. Danke habe was gelernt !

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2180

LeeHarvey schrieb:

Wenn ich das also richtig verstehe ist es unter unixbasierten Systemen nur möglich als root überall abzuspeichern sofern man es als root installiert oder als root installiert und als User dann wieder von Rechtekonflikten ausgehen muss beim Arbeiten, [...]

Ich habe oben einen wichtigen Punkt vergessen:

  • Das Programm wird als Root installiert.

  • Das Programm wird als User ausgeführt (kein einloggen als Root notwendig). Damit kann das Programm selbst nicht überall hinschreiben, es kann aber dort hinschreiben, wo der User (oder alle anderen) Schreibrechte hat.

Also konkret:

# als root:
sudo mkdir /var/mydir
sudo chmod a+rwx /var/mydir
sudo cp myprog /var/mydir/myprog
sudo chown root.root /var/mydir/myprog
# als normaler user:
/var/mydir/myprog /var/mydir/

'myprog' ist Dein Programm, das Daten in /var/mydir ablegen will.

Die Daten, die beim Aufruf des Programms erstellt werden, gehören dem User, sind aber nicht im Home, sondern unter /var/mydir. Damit macht der User nichts kaputt (und wenn, dann nur in dem Verzeichnis /var/mydir/) und trotzdem kann der User nicht das Programm selbst zerstören (geschweige denn das System). In diesem speziellen Fall mit demselben Ordner für Programm und Daten allerdings leider schon, aber das war ja so gewünscht.

Sry aber das hört sich f mich nach einem noch nicht ganz ausgeklügelten Sicherheitskonzept aus (was die Benutzerfreundlichkeit bzw. Arbeitseffektivität angeht).

Du vergisst, dass sich dieses Konzept in Unix 40 Jahre lang bewährt hat. Aber Du kannst das Konzept ja noch richtig verinnerlichen ☺.

Dk

LeeHarvey

(Themenstarter)

Anmeldungsdatum:
10. Juli 2012

Beiträge: 38

Ist ne Umstellung vom idiotensicheren Windows zum Profi-Linux, vor allem wenn man ne FIAE-Ausbildung macht. Kommt vieles zusammen.

@ dirkolus: Ja hab das mit dem installieren als root und ausführen als user mit rechten des users beim ausführen verstanden.

und danke für das konkrete beispiel. a+rwx heisst soviel wie alle können lesen schreiben ausführen in diesem ordner. nicht nur der root.

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4538

Irgendwie hab ich das Gefühl, daß deine Dateien eigentlich unter /var nichts verloren haben.

/var ist laut Filesystem_Hierarchy_Standard für veränderliche Dateien gedacht, also Spoolverzeichnisse und -dateien, Verwaltungsdaten, Logbücher und temporäre Dateien. Dinge, die zur Laufzeit von Programmen generiert/bearbeitet werden.

Deine Projekte gehören devinitiv erst mal nach $HOME. Wenn dann fertige Binaries (und der dazugehörige Kram) sytemweit installiert werden sollen, gehören die unter die Hierarchie von /usr/local/ (oder meinetwegen nach /opt, was aber normalerweise nicht im $PATH ist), weil die anderen Verzeichnisse für Programme (/bin, /sbin, /usr/bin, /usr/sbin) "gehören" der Paketverwaltung.

An den Systemverzeichnissen die Rechte verdrehen, bringt meistens ziemliche Probleme, bis hin zu einem nicht mehr startenden System. Deshalb kann ich nur Raten, davon die Finger zu lassen. Meist gibts dafür eine andere – sinnvollere – Lösung, was darauf hinweist, das das eigentliche Problem falsch angegangen wird.

Vielleicht wäre es Sinnvoller, erst mal genauer zu verdeutlichen, was und warum du ausgerechnet unter /var arbeiten willst?

LeeHarvey

(Themenstarter)

Anmeldungsdatum:
10. Juli 2012

Beiträge: 38

ehrlich gesagt war /var nur ein beispiel, da wird bei mir täglich ein backup des servers hingespeichert und die web-gui. habe auch eine partition angelegt die /file heisst wo ich alle möglichen dateien ablegen kann, spielplatz eben. sry falls ich verwirrende sachen geposted habe. es ging mir nur drum zeit zu sparen und alles in einem ordner bzw einer partition DIREKT abzulegen was ich hier so erarbeite. aber hab eingesehen erstmal unter home zu speichern und dann falls nötig woanders hin zu kopieren. auch eigtl halb so wild. lerneffekt war trotzdem da. werde auch nicht mehr großartig an rechten rumfummeln ausser vereinzelt an dateien (keine systemdateien 😉), habe ich auch schon gelernt bei linux. ansonsten vertief ich mich mal weiter. danke leute !

Antworten |