neuronet
Anmeldungsdatum: 13. Dezember 2013
Beiträge: 13
|
-Ich habe einen Ubuntu Server (VPS). -Zudem läuft darauf auch "Wine" um ein Windows Programm (.exe) laufen zu lassen. -Unter Startup Applications habe ich das Programm im Autostart.
...das funktioniert auch, jedenfalls sobald sich der root-Benutzer anmeldet, startet auch automatisch das gewünschte Windows-Programm(.exe) unter Ubuntu. Nun zu meinen Fragen: 1)Wo & Wie kann ich es unter Ubuntu-Server einstellen, dass dieses Windows-Programm auch automatisch gestartet wird, z.B. nach einem Server-Neustart? Es soll auch dann starten, selbst wenn sich kein USER "root oder Standarduser" anmeldet. 2)Wie kann ich meinen Ubuntu-Server so einstellen, dass man nur per SSH mit keyfile drauf kommt?
Ich hab bereits ein KeyFile auf dem Server erstellt und dieses auf mein lokales Notebook heruntergeladen.
Damit kann ich mich bereits als root-Benutzer per "NX-Client for Windows" mit dem Ubuntu-Server verbinden. Das funktioniert bereits mit dem KeyFile.
Allerdings habe ich festgestellt, dass ich mich auch ohne keyFile z.B. per WinSCP (für Dateitransfer) mit dem Ubuntu-Server verbinden kann. Ich wollte keine Firewall-Settings ändern, aus Angst das ich dann Remote nicht mehr auf meinen VPS komme, wenn ich das falsche sperre. ....über eure Hilfe würde ich mich sehr freuen. Am wichtigsten wäre mir erstmal Frage 1)
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 8003
|
Beiträge: 1
Zuerst mal: herzlich willkommen! Wine soll man eigentlich aus Sicherheitsgründen nicht als Root laufen lassen, weil man damit Windows-Schädlingen die Tür weit auf macht. Sieht man einmal von diesen begründeten Sicherheits-Bedenken ab, so kann man Programme mit einem Eintrag in /etc/rc.local automatisch starten, schon bevor irgend ein Benutzer sich einloggt. Ob das mit Wine auch geht, habe ich nie probiert. Doch warum sollte es eigentlich nicht gehen? Gruß – Max-Ulrich
|
neuronet
(Themenstarter)
Anmeldungsdatum: 13. Dezember 2013
Beiträge: 13
|
...ja, Hallo erstmal! Und Danke für die schnelle AW! Wenn es "sicherer" sein soll, reicht es dann wenn ich einfach einen "Standard-Benutzer" über "+" unter "System Settings > User Accounts" anlege? Und mit NX-Client melde ich mich dann einfach mittels eigens dafür vergebenen BN und PW an? Oder verstehe ich da was falsch? Geht der von dir beschriebene Eintrag dann auch noch so "/etc/rc.local" ??? Wo und wie muss man diesen Eintrag machen? Und was hat das alles mit dem zu tun, was ich unter "Startup Application" eingetragen habe? Dort habe ich aktuell den Autostart Eintrag für diese Windows-Exe stehen.
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 8003
|
Durch Einträge in /etc/rc.local werden die Programme vor dem Einloggen eines Benutzers als "Root" gestartet. Dabei ist es gleichgültig, wer sich anschließend einloggt. Einträge in "Startup Applications" werden dagegen nach dem Einloggen mit der Identität des eingeloggten Benutzers gestartet. Und was hat das alles mit dem zu tun, was ich unter "Startup Application" eingetragen habe?
Du kannst ein Programm nicht zweimal starten. Also entweder rc.local, oder startup application. Wo und wie muss man diesen Eintrag machen?
Die Datei /etc/rc.local mit Root-Rechten editieren und die Befehlszeile vor der bereits vorhandenen Zeile exit 0 einfügen. Wenn es "sicherer" sein soll, reicht es dann wenn ich einfach einen "Standard-Benutzer" über "+" unter "System Settings > User Accounts" anlege?
Das nützt im Zusammenhang mit rc.local gar nichts. Wenn schon Wine als Root sein muss (??), dann solltest Du wenigstens die virtuellen Laufwerke von Wine so einrichten, dass kein Zugang zu Deinem kompletten System besteht, also nicht z.B. Z: = / . Auch sollte dann möglichst der Start von Windows-exe-Dateien durch Doppelklick u.ä. deaktiviert werden. EDIT: Bei der Frage 2 kann ich Dir leider nicht helfen. Es wäre wohl besser, dafür einen eigenen Thread zu starten, denn es ist ja ein eigenes Thema.
|
Lookbehind
Anmeldungsdatum: 28. Januar 2010
Beiträge: 1070
|
Was den Autostart angeht: Man kann das auch über die rc.local mit einem anderen Benutzer starten. Und zwar indem man das ganze in ein Script verpackt, das zunächst mit root-Rechten startet, danach aber zu einem unprivilegierten Nutzer wechselt und als dieser erst die Wine-Anwendung startet. Siehe sudo (Abschnitt „su“). Im Gegensatz zu normalen Usern braucht root da nämlich kein Passwort. Was aber unabhängig davon zum Problem werden kann: Bei Wine denke ich an Windows, bei Windows denke ich an GUI. Sollte das Programm eine GUI brauchen um zu funktionieren, kann die ganze Sache gründlich in die Hose gehen. Zumal ich mich frage, wie man denn dann nachträglich nochmal auf das laufende Programm zugreifen möchte. Es wird ja, so wie ich das verstehe, ähnlich einem Deamon benutzt. Bloß hat Windows da halt andere Mechanismen um auf sowas zu zu greifen, die unter Linux nicht greifen werden. Den Passwort-Login per SSH kann man übrigens in der /etc/ssh/sshd_config abschalten. Dort gibt es den Eintrag PasswordAuthentication der per Default auf yes steht. Einfach auf no ändern und gegebenenfalls das Kommentar-Zeichen vor der Zeile entfernen. Siehe auch SSH (Abschnitt „Der-SSH-Server“).
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 8003
|
@Lookbehind:
Die Lösung mit dem Skript mit Identitätswechsel ist so einfach wie genial! 👍 Bei Wine denke ich an Windows, bei Windows denke ich an GUI
Im Prinzip natürlich ja. Wenn aber das Windows-Programm schon unter Wine auf einem Ubuntu Server gelaufen ist, dann braucht es wohl keine GUI. Oder ist hier mit "Server" eine als Server verwendete Maschine mit GUI gemeint?
|
Lookbehind
Anmeldungsdatum: 28. Januar 2010
Beiträge: 1070
|
Nunja, die Beschreibungen des TE klingen schon arg nach GUI 😉
|
steinche2
Anmeldungsdatum: 20. Dezember 2013
Beiträge: 2
|
Hallo zusammen, bin zufällig auf dieses Forum gestoßen und habe schon einiges gelesen, aber so richtig weiter komme ich nicht und da mein Problem ziemlich genau auf den Threadtitel passt, wollte ich mich einfach mal ran hängen 😉 In einer VM mut ubuntu 10.04.4 LTS kompiliere ich ein Programm für mein QNAP. Das er sich alle root anmeldet, habe ich schon geschafft ☺
Jetzt möchte nach dem booten im Verzeichnis /opt/simplebuild zwei Dinge ausführen. Einmal simplebuild checkout und danach simplebuild native. Um das umzusetzen ist in /etc/init.d die Datei new_oscam.sh mit folgendem Inhalt. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | #! /bin/sh
### BEGIN INIT INFO
# Provides: Neue OScam bauen
# Required-Start:
# Required-Stop:
# Default-Start: 2
# Default-Stop: 0 1 3 4 5 6
# Short-Description: Kurze Beschreibung
# Description: Längere Bechreibung
### END INIT INFO
# Author: Ich
# Aktionen
case "$1" in
start)
mount -t nfs 192.168.96.15:/Data/emu/Binaries/Eigene /mnt/QNAP/
cd /opt/simplebuild
./simplebuild checkout
./simplebuild native
cp -n /opt/simplebuild/archiv/* /mnt/QNAP/kompiliert
;;
stop)
;;
restart)
;;
esac
exit 0
|
und mit update-rc.d new_oscam.sh default das Ganze in die verschiedenen /rc*.d Verzeichnisse verteilt.
Aber das haut auf zweierlei Dinge nicht so ganz hin. Zum einen wird das script schon ausgeführt, bevor das Prompt erscheint. Und ich bekomme eine Fehlermeldung, wenn die neue OScam mit ./simplebuild native gebaut wird, dass es Probleme mit den Verzeichnissen gibt. Ich befürchte, dass es nicht im richtigen Verzeichnis ausgeführt wird. Kann mir jemand sagen, was ich falsch mache? Bin noch Neuling 😀 Viele Grüße
steinche2
|
Lookbehind
Anmeldungsdatum: 28. Januar 2010
Beiträge: 1070
|
Ich kenne jetzt dieses simplebuild nicht, aber wenn du das ganze erst ausführen möchtest, nachdem du dich angemeldet hast, ist das Init-System der falsche Ansatzpunkt. Das sind alles Scripte und Programme die während des Boot-Vorgangs ausgeführt werden. Was du da so rein packst, wird ausgeführt, lange bevor du einen Login-Prompt zu sehen bekommst. Wenn du etwas automatisch nach dem Login ausführen willst, und KEINE Grafische Oberfläche benutzt, dann wäre die .bashrc eine Datei, die man sich mal ansehen sollte. Solltest du eine GUI benutzen, hängt es von der verwendeten GUI ab, wie man das am besten löst.
|
steinche2
Anmeldungsdatum: 20. Dezember 2013
Beiträge: 2
|
Lookbehind schrieb:
... Wenn du etwas automatisch nach dem Login ausführen willst, und KEINE Grafische Oberfläche benutzt, dann wäre die .bashrc eine Datei, die man sich mal ansehen sollte. Solltest du eine GUI benutzen, hängt es von der verwendeten GUI ab, wie man das am besten löst.
Hallo Lookbehind, danke für Deine Antwort, ich benutze keine GUI. Habe mir die bashrc angesehen, ist genau das, was ich suche ☺ Vielen Dank für den Hinweis. Viele Grüße
steinche2
|
neuronet
(Themenstarter)
Anmeldungsdatum: 13. Dezember 2013
Beiträge: 13
|
...vielen Dank für eure Hilfe! Wie müsste der Autostart "als root" in die etc/"rc.local" eingetragen werden? Für Standard Linux Programme könnte es wie im Beispiel-Code unten dann so "/usr/bin/foo" eingetragen werden! 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | #!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
## Beispiele:
/usr/bin/foo # ein Programm
/usr/local/bin/bar.sh # ein Shellskript
/etc/init.d/foobar start # ein Dienst
exit 0
|
Aber ich möchte ja ein Windows-Programm über Wine dort starten.
Wie muss dann die Zeile eingetragen werden?????? Derzeit hab ich's ja noch unter "StartUp Applications" und wenn ich dort auf Edit klicke zeigt er mir folgenden Pfad unter "Command:"
(Nachdem ich mich am Server anmelde, startet er auch die .exe! ABER er soll das Programm ja eben auch ohne Anmeldung starten!)
env WINEPREFIX="/root/.wine" wine C:\\windows\\command\\start.exe /Unix /root/.wine/dosdevices/c:/users/Public/Desktop/MeinProgramm\ -\ Firma\ UK.lnk
...soll ich das also genau so auch in der "rc.local" eintragen? In der StartUp würde ich es nat. löschen!?
|
neuronet
(Themenstarter)
Anmeldungsdatum: 13. Dezember 2013
Beiträge: 13
|
...kann jemand weiterhelfen?
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 8003
|
soll ich das also genau so auch in der "rc.local" eintragen?
ausprobieren... Und Leerzeichen natürlich mit Backslash escapen. Wenn es so nicht klappt, kannst Du ja versuchsweise mal aus der Zeile ein Skript machen und dieses von der rc.local aus aufrufen. Vielleicht geht's so (?). Gruß – Max-Ulrich
|
neuronet
(Themenstarter)
Anmeldungsdatum: 13. Dezember 2013
Beiträge: 13
|
Vielen Dank für die Tipps. Ich war zwischenzeitlich sehr beschäftigt und möchte nun dieses Thema nochmals angehen. Also meine Applikation besitzt eine graphische Oberfläche für den Anwender. Ist das ein Problem? Ich bin noch etwas vorsichtig / unsicher. Kann ich durch dieses Skript, wenn es nicht funktioniert, was kaputtmachen??
|
neuronet
(Themenstarter)
Anmeldungsdatum: 13. Dezember 2013
Beiträge: 13
|
Hi, ich habe nun die verschiedensten Versionen getestet, u.a. so
/root/.wine/drive_c/Program Files (x86)/Programm
oder
/root/.wine/drive_c/Program Files (x86)/Programm.exe
oder
wine /root/.wine/drive_c/Program Files (x86)/Programm.exe leider startet die exe nicht. Ich habe auch schon gelesen, man soll den Aufruf in eine "init.d" schreiben. Was ist damit? Und wie genau sieht es aus, wenn man "Leerzeichen mit Backslash escapen" tut? Vielen Dank!
|