• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Benutzerrechte mit Sudo

Fraglord

Newbie
Hi leute :)

Ich versuche jetzt schon seit vielen erfolglosen tagen einem user die kompletten root-rechte zur verfügung zu stellen. als user kann man u.a. das teamspeakserver-start script nicht ausführen (es wird auch ausdrücklich gewarnt, dieses script nicht als root zu starten):
_____________________________________________________________

bash: ./teamspeak2-server_startscript: Keine Berechtigung
_____________________________________________________________


bei meinem wolfenstein-server kommt die gleiche message:
_____________________________________________________________

Tobias@Linuxserver:/usr/local/games/enemy-territory> et
/usr/local/bin/et: line 6: /usr/local/games/enemy-territory/et.x86: Keine Berechtigung
/usr/local/bin/et: line 6: exec: /usr/local/games/enemy-territory/et.x86: cannot execute: Erfolg
_____________________________________________________________

kann mir jemand ein "How to" geben wie ich die berechtigungen setzen kann bzw. ich die kompletten root-rechte auf user übertragen kann?? bin noch ein noob in linux :oops:


ps. hab auf meinem linuxrechner 2 user
-root
-Tobias (=standarduser)


viele liebe grüße und schonmal danke für die antworten!!!
greetz Tobias
 

whois

Ultimate Guru
Hi

Niemals aber wirklich niemals sollte ein User dauerhaft mit root Rechten ausgestattet werden.
Dann kannst du auch dauerhaft als root arbeiten. :roll:

cu
 
OP
F

Fraglord

Newbie
hey 8)
naja, es is ja mein home-server (also der steht bei mir daheim - für lanparties und zum arbeiten)...gibt es auch eine art "semi-root"?? also ein admin, der zwar viel ausführen kann, aber nicht alle rechte von einem root hat?? sozusagen ein "co-administrator"??

oder was würdet ihr mir empfehlen um die permission-probleme von meinem oben angesprochenen thema zu lösen??

thx für die schnelle antwort.
grüße
 
OP
F

Fraglord

Newbie
als root ist das script ausführbar (genau wie mein wolfenstein-server). habe es mit chmod 777 "freigeschaltet"...

will ich das gleiche jetzt als user machen, kommt (wie erwartet):

_____________________________________________________________

Tobias@Linuxserver:/usr/local/games/teamspeak_server> chmod 777 teamspeak2-server_startscript
chmod: Beim Setzen der Zugriffsrechte für ./teamspeak2-server_startscript: Die Operation ist nicht erlaubt
_____________________________________________________________


der sinn der berechtigungen ist einfach nur der, dass ich als user (nicht als root) meine server/scripte laufen lassen kann ("vorallem die, die im verzeichnis /usr/local/games" liegen)...


zu deinem edit: es ist die standard-user-konfiguration...habe seit der installation bei dem user (Tobias) noch nichts verändert...
 
Du möchtest dich bitte unbedingt mit den Linux-Grundlagen beschäftigen.

Fraglord schrieb:
als root ist das script ausführbar (genau wie mein wolfenstein-server). habe es mit chmod 777 "freigeschaltet"...
Mit chmod 777 "schaltet" man nichts "frei".
Sondern erteilt jedem User volle Zugriffsrechte auf die Datei.
777 sind so unnötig wie unsicher.
Lesen: Zugriffsrechte

Fraglord schrieb:
will ich das gleiche jetzt als user machen, kommt (wie erwartet):
Wieso willst du die Rechte nochmal zuweisen?

Fraglord schrieb:
zu deinem edit: es ist die standard-user-konfiguration...habe seit der installation bei dem user (Tobias) noch nichts verändert...
Dann ändere das doch.
 
OP
F

Fraglord

Newbie
1)

Dann ändere das doch.
du hast leicht reden -.-
gleicht ja in etwa dem motto: wenn du keine ahnung hast, denn lass es halt...
war ja nur eine zusatzinfo, mehr nicht.

les bitte einfach mal, was ich ganz zu beginn geschrieben habe:

bin noch ein noob in linux :oops:


2)

Mit chmod 777 "schaltet" man nichts "frei".

deswegen wurde es ja auch in " " geschrieben...


3)

Lesen: Permanent root sein
was denkst du, warum ich die programme/scripte/whatever als user ausführen will?!?!


4)

Kontrolliertes Ausfuehren von Befehlen als root
danke, diese seite hilft mir weiter!!!

_____________________________________________________________
@b3ll3roph0n:
die meisten deiner antworten, die einen nicht gerade freundlichen eindruck hinterlassen, hätte ich mir mit googeln selber zusammenreimen können...
 

abgdf

Guru
kann mir jemand ein "How to" geben wie ich die berechtigungen setzen kann bzw. ich die kompletten root-rechte auf user übertragen kann??
Wer viel fragt, kriegt viel Antwort:
Mach folgenden Eintrag mit "visudo" (wozu Du "vim" bedienen können mußt):
Code:
yourusername     ALL = NOPASSWD: ALL
Lies "man sudoers" (und stöber auf meiner Seite (www-Button) nach "Editor vi" und "visudo" :mrgreen:).

Gruß
 
Das ändert aber nichts an der Tatsache, dass o.g. Server dann unter der Benutzerkennung von root laufen.
Das ist a) ein Sicherheitsrisiko und b) komplett unnötig.

Aber der TE schweigt sich ja über Details aus und versucht ohne das entsprechende Grundverständnis Zugriffsrechte zu setzen, bzw. seinem User root-Rechte zu erteilen.

Also:
Wie wurden o.g. Server installiert, wie sehen überhaupt die Startscripte aus.
Wie sehen jetzt die Rechte für die Scripte aus (Eigentümer?)?
Wie sehen die Rechte für das jeweilige Server-Binary aus (Eigentümer?)?
Entsprechende User für die Server kannst du mit YaST einrichten (und es empfiehlt dringst einen separaten User für Server/Dienste zu benutzen).

Fraglord schrieb:
b3ll3roph0n schrieb:
Mit chmod 777 "schaltet" man nichts "frei".
deswegen wurde es ja auch in " " geschrieben...
Das ändert nichts an der Tatsache, dass 0777 unnötig ist.
Scheint eine Unsitte - vor allem in Anleitung für Gameserver - zu sein, Rechteprobleme mit chmod 777 ... zu lösen.
Also: Gar nicht erst angewöhnen!

Fraglord schrieb:
was denkst du, warum ich die programme/scripte/whatever als user ausführen will?!?!
In dem Artikel werden auch Möglichkeiten aufgezeigt Programme unter einer anderen Benutzerkennung auszuführen - also bitte mehr als nur die Überschrift lesen.
 

whois

Ultimate Guru
b3ll3roph0n schrieb:
Das ändert nichts an der Tatsache, dass 0777 unnötig ist.
Scheint eine Unsitte - vor allem in Anleitung für Gameserver - zu sein, Rechteprobleme mit chmod 777 ... zu lösen.
Also: Gar nicht erst angewöhnen!
Hat doch keinen Zweck. :wink:
Das ändert sich erst wenn es mal in die Hose geht. :D
 
OP
F

Fraglord

Newbie
Grüß dich,

Das ändert aber nichts an der Tatsache, dass o.g. Server dann unter der Benutzerkennung von root laufen.
Das ist a) ein Sicherheitsrisiko und b) komplett unnötig.

Das ist einer der Gründe, warum ich mich vom "root" lösen und meine hauptapplikationen als "user" ausführen will :cry:


Der Wolfensteinserver ist eine *.run Datei (et-linux-2.55.x86.run). Habe diesen Server mit dem Befehl “./et-linux-2.55.x86.run“ installiert (mit Hilfe der grafischen Oberfläche (also wie bei einer Windowsinstallation)).
  • Die Patches werden außer acht gelassen...
Um ihn zu starten wird folgender Befehl in die Console eingegeben:

Code:
screen -d -m ./etded "+set fs_game etpro" "+set g_log game.log" "+set g_logsync 1" "+set logfile 2" "+set sv_pure 1" "+set rconpassword linuxgaming" "+exec firesquad_etpro" "+set r_allowsoftwaregl 1" "+set sv_punkbuster 1" "+set dedicated 1" "+map goldrush" "+set g_gametype 2" "+set g_voicechatsallowed 25" "+exec punkbuster" "+net_ip 192.168.1.100" "+net_port 27960" "+exec execluaEtpro.cfg"

Der Teamspeakserver ist eine *.rar Datei (http://www.goteamspeak.com/index.php?page=downloads), die man einfach nur entpacken muss. Dieser Server wird mit dem “teamspeak2-server_startscript“ ausgeführt:

Code:
  screen -d –m ./teamspeak2-server_startscript start


Das TeamspeakServer-StartScript sieht folgendermaßen aus:

Code:
#!/bin/bash
#
# Startup script for the teamspeak communication server
#
# done by bootstrap 2004/04/08
#
# chkconfig: - 85 15
# description: Teamspeak is a communications server. It features mutliple channels, audio codecs and various security features. For a complete list of fe
atures see http://www.teamspeak.org

# we need to set a username here, to aviod running as root
RUNAS="CHANGEME!"
# this should be the path to your ts dir (like /opt/teamspeak)
TSDIR="/change/that/path/"

# you probably don't need to edit anything below here
PROC="server_linux"
PIDFILE="$TSDIR/teamspeak.pid"

# Check if the supplied username exists in passwd.
[ -z `grep $RUNAS /etc/passwd` ] && exit 0

start(){
        # Check for a running Server
        if [ -f $PIDFILE ]; then
                VAL=`pidof $PROC`
                for l in $VAL; do
                        if [ "`cat $PIDFILE`" == "$l" ]; then
                                echo "Teamspeak is already running. (PID `pidof $PROC`)"
                                exit 1
                        fi
                done
                # now that we're sure we don't have a ts process matching the pidfile, we remove it
                if [ -f $PIDFILE ]; then
                        rm -f $PIDFILE
                        echo "removed stale pidfile."
                fi
        fi
        # to be sure, we check if there's a process that was not mentioned by the pidfile
        if [ ! -z "`pidof -s $PROC`" ];then 
                echo "No pidfile, but running (PID `pidof $PROC`)"
                exit 1
        fi
        # Finally we start the server. We do that as user, not as root.
        action $"Starting Teamspeak Server:" /usr/bin/sudo -u $RUNAS "$TSDIR/$PROC -PID=$PIDFILE"
        action $"Starting Teamspeak Server:" /usr/bin/sudo -u $RUNAS "$TSDIR/$PROC -PID=$PIDFILE"
}

stop(){
        if [ ! -z "`pidof $PROC`" ]; then
                kill -TERM `pidof $PROC`
                if [ $? -eq 0 ]; then
                        echo -n "Response to -TERM was good. Waiting 5 seconds to shut down"
                        for l in $(seq 1 5); do
                                echo -n "."
                                sleep 1
                        done
                        echo
                        if [ -z "`pidof $PROC`" ]; then
                                action $"Teamspeak server stopped." /bin/true
                                exit 0
                        fi
                else
                        echo "Server did not respond to -TERM, -KILLing now."
                        kill -9 `pidof $PROC`
                        if [ $? -eq 0 ]; then
                                if [ -z "`pidof $PROC`" ]; then
                                        action $"Teamspeak server stopped." /bin/true
                                        [ -f $PIDFILE ] && rm $PIDFILE
                                        exit 0
                                fi
                        else
                                action $"Could not stop the teamspeak server." /bin/false
                                exit 1
                        fi
                fi
        else
                action $"There seems to be no running teamspeak server." /bin/false
        fi
}

status(){
        if [ ! -z "`pidof $PROC`" ]; then
                echo "Teamspeak server running (PID `pidof $PROC`)"
        else
                echo "There seems to be no running teamspeak server."
        fi
}

case "$1" in
        start)
                start
        ;;
        stop)
                stop
        ;;
        status)
                status
        ;;
        *)
        echo "blah!"
esac

exit 0


Die Rechte (von den jeweiligen Datein/Ordner) :
  • Vom Verzeichnis :
    drwxrwxr-x 12 root root 4096 May 26 10:35 enemy-territory
    drwxr-xr-x 7 root root 4096 Jun 3 23:38 teamspeak_server

    Im Verzeichnis:
    -rwxr--r-- 1 root root 210 May 13 11:28 etded
    -rwxr--r-- 1 root root 2465 May 13 11:28 teamspeak2-server_startscript


Das ändert nichts an der Tatsache, dass 0777 unnötig ist.
Scheint eine Unsitte - vor allem in Anleitung für Gameserver - zu sein, Rechteprobleme mit chmod 777 ... zu lösen.
Also: Gar nicht erst angewöhnen!


Danke für diesen Hinweis!!! Der chmod 777 wurde mir von meheren Gameserveradmins (von diversen Clans) empfohlen. Auf Grunde dessen hab ich gedacht, dass es so schon richtig sein wird. Welchen chmod xxx würdest du mir empfehlen??

chmod 755 ??
-> Owner "Read / Write / Execute"
-> Group "Read / Execute"
-> Other "Read / Execute"

Entsprechende User für die Server kannst du mit YaST einrichten (und es empfiehlt dringst einen separaten User für Server/Dienste zu benutzen).
Kannst du mich auf eine entsprechende Website verlinken?? Wäre super, thx...

Permanent root sein

Das mit dem “su“ command funktioniert recht und schön.
Sobald ich den "su"-cmd eingebe und das Passwort bestätige bin ich ja wieder als “root“ angemeldet, was ich eigentlich nicht will...oder :?:


  • Tobias@Linuxserver:/usr/local/games/enemy-territory> su
    Password: [eingegeben]
    Linuxserver:/usr/local/games/enemy-territory # whoami
    root

_____________________________________________________________

@abgdf: Danke für deinen Beitrag!!! Habe mir von deiner Homepage die entsprechenden Punkte rausgedruckt 8) und werde mich mal hinter die Texte klemmen :lol:
 
Fraglord schrieb:
Welchen chmod xxx würdest du mir empfehlen??

chmod 755 ??
-> Owner "Read / Write / Execute"
-> Group "Read / Execute"
-> Other "Read / Execute"
Richtig!
Allerdings solltest du diese Rechte dann auch an die Scripte vergeben.
(momentan sind diese nur für root ausführbar)
Fraglord schrieb:
Code:
-rwxr--r--  1 root root     210 May 13 11:28 etded
-rwxr--r-- 1 root root   2465 May 13 11:28 teamspeak2-server_startscript
Also:
Code:
chmod -R 0755 /pfad/zu/enemy-territory
chmod -R 0755 /pfad/zu/teamspeak_server
(/pfad/zu natürlich entsprechend anpassen)

Fraglord schrieb:
Danke für diesen Hinweis!!! Der chmod 777 wurde mir von meheren Gameserveradmins (von diversen Clans) empfohlen. Auf Grunde dessen hab ich gedacht, dass es so schon richtig sein wird. Welchen chmod xxx würdest du mir empfehlen??
Das lasse ich mal mehr oder weniger unkommentiert. :roll:
Nur so viel: Daran erkennt man ziemlich deutlich den Kenntnisstand dieser "Admins" ...

Fraglord schrieb:
Kannst du mich auf eine entsprechende Website verlinken?? Wäre super, thx...
*Ähm*
Code:
su - -c "/sbin/yast2"
Sicherheit/User --> User anlegen/verwalten
Tipp: Hilfetexte von YaST lesen!
openSUSE 10.2 Start-Up
Installation and Setup --> Section 5.0, Managing Users with YaST

Fraglord schrieb:
Sobald ich den "su"-cmd eingebe und das Passwort bestätige bin ich ja wieder als “root“ angemeldet, was ich eigentlich nicht will...oder :?:
Wenn du z.B. einen User gameserver angelegt hast, kannst du mit mit
Code:
su - gameserver
zu diesem User wechseln und den Server im screen starten.
Zu screen, lesen: http://www.kuro5hin.org/story/2004/3/9/16838/14935

Das ganze als root "angestoßen" (dann braucht der User gameserver nicht mal ein Passwort - kann sich also nicht einloggen):
Code:
su -
su - gameserver -c "screen -mdS ...."
oder eben unter deinem User mit sudo (vorrausgesetzt der entsprechende Eintrag in der /etc/sudoers existiert):
Code:
sudo -u gameserver screen -mdS ...

[edit]
Ich sehe gerade ...
... unter einem anderen User zu laufen ist im TS-Script doch schon vorgesehen:
Code:
# we need to set a username here, to aviod running as root 
RUNAS="CHANGEME!"
Außerdem solltest du das Arbeitsverzeichnis des Servers entsprechend anpassen:
Code:
# this should be the path to your ts dir (like /opt/teamspeak) 
TSDIR="/change/that/path/"
Das sollte ein Verzeichnis sein, in dem der Unser unter dem der Server läuft auch Schreibrechte hat (z.B. /home/gameserver/ts).
 
OP
F

Fraglord

Newbie
:D Halihallo :D

b3ll3roph0n, ich habe jetzt deine Anweisungen befolgt und mich zudem mal ein bisschen mehr über die Grundkenntnisse von Linux informiert :wink:

Danach habe die Beschreibung aus deinem letzten Post ausgeführt.


  • :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p
    :p Resultat: Alles funktioniert genau so, wie ich es haben will *freu* :p
    :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p :p

Herzlichen dank für die aufwendige Hilfe und deiner Hartnäckigkeit, dass du, trotz meiner Kritik, einem Linuxnoob geholfen hast :!: :!: :!: :!:

@b3ll3roph0n:
die meisten deiner antworten, die einen nicht gerade freundlichen eindruck hinterlassen, hätte ich mir mit googeln selber zusammenreimen können...

_____________________________________________________________

Mir ist bewusst, dass es manchmal ziemlich frustrierend sein kann, wenn man versucht einem Noob zu helfen :roll:
 
Oben