Wie führe ich eine Anwendung als anderer Benutzer aus?

17

Ich benutze krusader für die Dateiverwaltung. Das Problem ist, dass der Apache unter sein DocumentRootsollte chown www-data:www-data /path/to/www. also mit krusader (das läuft unter meinem account) habe ich keinen schreibzugriff /path/to/wwwwährend ich wirklich brauche. Ich weiß nicht, wie andere Entwickler mit einer solchen Einschränkung weitermachen können!

Ich habe mich gefragt, ob ich krusader ausführen kann, da www-dataich dann problemlos mit Dateien spielen kann. aber mit su - www-datafragten mich nach www-data's Passwort !!

Wie kann ich eine Anwendung (wie krusader) als anderer Benutzer (wie www-data) in Gnome ausführen?

oder gibt es eine andere lösung für meinen fall? (Tough, ich bin wirklich neugierig auf die Antwort!)

Denken Sie daran, dass ich weiß, dass ich es als root ausführen kann ! Dies führt jedoch zu Berechtigungsproblemen bei der Verwendung von cpund mkdir.

PS: sudo und gksudohat nicht geholfen:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

Schlussbemerkung: Nach der besten Antwort habe ich chmod u+w /path/to/wwwund mein Problem gelöst. aber es ist mir immer noch nicht gelungen, krusader als anderen benutzer zu öffnen!

Alexar
quelle

Antworten:

4

Wenn ich über diese Frage nachdenke (ich hoffe, Ihr Problem richtig verstanden zu haben, aber korrigieren Sie mich, wenn ich mich irre), habe ich eine andere Lösung gefunden und ich denke, Sie müssen die Anwendung nicht als WWW-Daten ausführen oder mit Berechtigungen spielen . Du hast das gesagt:

Apaches DocumentRoot sollte unter "www-data" stehen: www-data / path / to / www

Aber tatsächlich ist dies nicht ganz richtig: Apaches DocumentRootmüssen lesbar sein www-data, müssen aber nicht unbedingt im Besitz von Apaches sein . Standardmäßig sind in Ubuntu Desktop alle von Ihnen erstellten Dateien und Verzeichnisse für alle lesbar, sodass Sie DocumentRoot auf ein Verzeichnis in Ihrem Basisordner festlegen können. Beispiel:

DocumentRoot /home/user/my-project/my-document-root
Andrea Corbellini
quelle
Vielen Dank! es hat einfach funktioniert. und Ihre Erklärung, warum dies funktionieren würde, war sehr hilfreich. da dies mein problem gelöst hat bin ich aber immer noch gespannt, wie ich krusader als anderen benutzer öffnen kann. andere lösungen haben einfach nicht funktioniert.
Alexar
8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Wobei uname = der Name des imitierten Benutzers. Gesehen dort: http://ubuntuforums.org/showthread.php?p=10399617

Funktioniert auf meiner Maverick-Box, gibt es keinen Ton in der gegabelten Skype und ~ / .profile.d wird nicht ausgeführt, wie es könnte.

Anton S. Kraievoy
quelle
5

Wenn Sie dies über das Menüsystem alacarteausführen, möchten Sie (System> Preferences> Main Menu) verwenden und den Eintrag für krusader ändern und davor hinzufügen: Das gksudo -u www-datasollte ungefähr so aussehen:

gksudo -u www-data krusader

Dadurch wird das Eingabeaufforderungsfenster für administrative Aufgaben geöffnet, das laut der GKSudo-Manpage a ist

GTK + Frontend für su und sudo

Wenn Sie nur gksudo ohne den -uSchalter verwenden, wird der Befehl als root ausgeführt.

Marco Ceppi
quelle
danke, aber es kehrt zurück: Kein Protokoll angegebenkrusader: kann keine Verbindung zum X-Server herstellen: 0.0
Alexar
2
Vor dem Start des Befehls gksudo führen Sie im Terminal unter Ihrem Konto Folgendes aus:xhost +
jet
4

Wie von Marco erwähnt, können Sie gksudo -u www-data <command>Befehle als anderer Benutzer ausführen. Ich verwende dies routinemäßig, um Befehle auszuführen, gdmund bisher habe ich nie nach etwas anderem als meinem eigenen Passwort gefragt.

Wenn Sie kdesu -u www-data krusaderKDE verwenden, ist das Äquivalent. Ich denke, da Krusader eine KDE-Anwendung ist, funktioniert es möglicherweise besser mit kdesu. Weitere Details zu kdesu hier .

Ich habe gksudoBefehle als andere "menschliche" Benutzer auf dem System ausgeführt, und wenn ich zur Eingabe eines Kennworts aufgefordert werde, gebe ich meinen ein.

koushik
quelle
danke, aber das ergebnis ist wie folgt: Kein protokoll angegeben krusader: kann keine
verbindung
Wahrscheinlich für krusader (eine KDE-App), kdesuist eine bessere Wahl. Ich habe meine Antwort aktualisiert. Kannst du das probieren
Koushik
4

Um mit Ihrem eigenen Passwort zu www-Daten zu werden, gehen Sie wie folgt vor:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

Aber ich glaube nicht, dass Sie von dort aus GUI-Apps ausführen können.

Ich besitze normalerweise nur alles in /var/www, erlaube aber allen Lesezugriff:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

Ich hoffe das lindert deine Schmerzen :)

Dr. Hannibal Lecter
quelle
Wie Sie vermutet haben, konnte ich von dort aus keine GUI-Apps ausführen. es hießNo protocol specified krusader: cannot connect to X server :0.0
Alexar
Ist die zweite Lösung für Sie keine Option? Sie können Daten nicht haben von www-data werden, obwohl ich es bevorzugt erraten.
Dr. Hannibal Lecter
3

Ich glaube, Sie müssen am Terminal Folgendes ausführen:

xhost +SI:localuser:<user-to-run-as>

Dann können Sie tun:

sudo su - <user-to-run-as>

Und zum Schluss führen Sie Ihre App aus:

krusader

Das sollte es auch tun, ersetzen <user-to-run-as>Sie es einfach durch Ihren Benutzernamen.

nicholas.alipaz
quelle
0

Sowohl 'gksu' als auch 'kdesu' sind grafische Frontends für 'sudo'. Dies ist das Werkzeug, das Sie verwenden sollten, wenn Sie sich in einer Nur-Text-Umgebung befinden. Die Tools 'gksu' und 'kdesu' setzen voraus, dass Sie sich in einem grafischen Modus befinden, der die Fehler "Keine Verbindung zu X-Server möglich" erklärt.

Wenn Sie einen Konsolenbefehl als anderer Benutzer ausführen möchten, verwenden Sie den Befehl 'sudo -u Benutzername Befehl'.

Sinn Hofstede
quelle
danke, ich führe das aus und es heißt, so etwas [1] 12100scheint die Prozess-ID zu sein; aber nichts, was ich in Aktion sehe.
Alexar
0

Wenn Sie eine grafische Anwendung unter www-data ausführen, treten mehrere Probleme auf. Sie können sich selbst der Gruppe www-data hinzufügen, damit Sie alle benötigten Dateien ändern können:

sudo adduser $USER www-data

Hinweis: Möglicherweise müssen Sie sich von der Sitzung abmelden, damit die Änderung wirksam wird.

Wenn Sie nach diesem Befehl einige Dateien immer noch nicht ändern können, stellen Sie einfach sicher, dass Sie über Schreibrechte verfügen:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
Andrea Corbellini
quelle
es ist jedoch keine Lösung für das allgemeine Problem, aber es scheint für meinen Fall zu funktionieren; Ich werde es versuchen und berichten
Alexar 10.10.10
0

Inspiriert von Anton S. Kraievoy habe ich eine ähnliche Lösung verwendet, die für mich funktioniert. In dem Benutzer, der Krusader verwendet, habe ich xhhost einen neuen Benutzer hinzugefügt:

xhost +SI:localuser:username

Bitte melden Sie sich an:

su - username

Dann startet krusader ordnungsgemäß als neue Instanz in einem neuen Benutzer:

krusader

Beachten Sie, dass eine neue Konfiguration in ~ / .kde / share / config / krusaderrc erstellt wird.

hariprasad
quelle