2016-07-31 37 views
0

Ich verwende savefig() und saveas() Funktionen, um .fig und .jpg Dateien zu speichern. in MATLAB (R2015a, Ubuntu 14.04, PC, Einzelkonto). Der Eigentümer von Dateien, die generiert werden, ist jedoch root. Ich möchte, dass der Besitzer mein Benutzerkonto ist.Dateien in MATLAB mit Benutzereigentum speichern

Ich kann chown im Terminal verwenden, um später die Eigentumsrechte zu erhalten, aber ich möchte, dass dies direkt von MATLAB geschieht, d. H. Zum Zeitpunkt der Dateierstellung.

Auch dieses Problem trat vorher nicht auf. Ich habe gerade eine Neuinstallation des Betriebssystems und der gesamten Software vorgenommen, und dieses Verhalten begann zu geschehen.

+1

sind die resultierenden Dateiberechtigungen nicht diejenigen des Benutzers, der die Anwendung gestartet hat? Warum läuft die Anwendung unter root? Wie starten Sie Matlab? Außerdem: Wo speichern Sie die Dateien? Können Sie ein "ls -la" des Verzeichnisses angeben, in dem Sie Dateien gespeichert haben? –

+0

Wenn ich MATLAB R2015b unter Ubuntu 14.04 laufe, erhalte ich '-rw-r - r -' Berechtigungen für die Datei, die einem normalen Benutzer gehört, nicht root. Natürlich läuft MATLAB nicht unter root-Benutzer. –

+0

@GuntherStruyf Ich habe die Anwendung als root ausgeführt, insbesondere habe ich den Befehl 'sudo matlab' verwendet, was der Grund dafür ist, dass dies geschah. Ich schreibe eine Antwort, um alles zu klären. – user3342981

Antwort

0

Ich stimme mit früheren Benutzern überein, dass dies eher ein Problem ist, von welchem ​​Benutzer MATLAB anfängt.

Eine schnelle und schmutzige Möglichkeit, dieses Problem zu lösen, ist die Verwendung des Befehls system.

system('chown user:group DIRTOSAVEDFILE'); 

oder

system(sprintf('chown %s:%s %s',USERSTRING, GROUPSTRING, SAVEDFILEDIR)); 

Bitte überdenken system zu verwenden, wenn Sie planen, diesen Code zu verteilen, wie der system Befehl Zugriff auf zu /bin/sh gibt (vielleicht sogar mit Root-Rechten, je nachdem wie MATLAB gestartet wird).

0

Ich habe herausgefunden, was ich falsch gemacht habe.

Ich habe MATLAB mit dem Befehl sudo matlab ausgeführt, weshalb die Dateien, die auf der Festplatte gespeichert wurden, den Besitz von root hatten. Der Grund, warum ich MATLAB als root ausgeführt habe, war, weil die Verwendung von matlab im Terminal für mich nicht funktionierte. Insbesondere gab MATLAB JAVA Ausnahmefehler: "Fehler beim Starten des Desktops". Um diesen Fehler zu beheben, musste ich das MATLAB-Einstellungsverzeichnis übernehmen, nämlich ~/.matlab/R2015a. Ich habe , um das Eigentum zu bekommen. Jetzt kann ich MATLAB ohne sudo ausführen, und auch die Dateien, die erzeugt werden, haben auch mein Eigentum. Ich benutzte den folgenden Link, um mein Eigentum Problem zu lösen:

http://in.mathworks.com/matlabcentral/answers/50971-matlab-r2012b-java-exception-error-starting-desktop

Danke für die Kommentare und Antworten. Ich hätte mehr Nachforschungen anstellen sollen.