Root-Shell ändern?

Soonwald

Well-Known Member
Ich hab da mal ne Frage:

Einerseits soll man soll ja die Shell von Root nicht ändern,
andererseits ist die c-shell ja nun auch sehr spartanisch.

das man so linux-zeug wie bash etc. nicht nehmen sollte - ist mir schon klar.

Als user nutze ich die zsh... aber
kann man nicht wenigstens fuer root in die tcsh wechseln?
Immerhin ist die ja voll zur csh kompatibel und liest auch .cshrc usw.

Grüße soonwald
 
Hallo @Soonwald
möchtest Du wissen,
a) ob Dein Anliegen in Ordnung ist, oder
b) wie man die Shell wechselt?

Was a) angeht, kann ich Dir mangels Hintergrundwissen keine Informationen geben.

Was b) angeht:
Code:
chsh -s /pfad/zur/shell

Viele Grüße,
Holger
 
Hallo @Soonwald
möchtest Du wissen,
a) ob Dein Anliegen in Ordnung ist, oder
b) wie man die Shell wechselt?

Was a) angeht, kann ich Dir mangels Hintergrundwissen keine Informationen geben.

Was b) angeht:
Code:
chsh -s /pfad/zur/shell

Viele Grüße,
Holger

Hallo HolgerW,

vielen dank für Deine Antwort.
Aber meine Frage war nicht "wie" man eine shell wechselt oder zuweisst -
sondern ob man als root die tcsh nutzen kann - obwohl die Standard-Shell des BSD die c-shell ist.

Gruss
 
Du kannst auch einfach den "toor" Nutzer nutzen. Da kannst du fröhlich deine Shell ändern wie du willst und wenn was kaputt geht hast du immer noch den root Nutzer.

Der ist genau für deinen Fall da:
https://www.freebsd.org/doc/faq/security.html#idp60077416

13.5 ganz unten

"...It is intended to be used with a non-standard shell so the default shell for root does not need to change..."

ja, das ist schon klar...

Aber X11 starte ich ja weder als root noch als toor ...
und wenn ich in urxvt mehr Rechte brauche und nur <su> eingebe - habe ich wieder die c-shell

d.h. ich müsste <su> dann immer auch noch sagen, dass mit toor substituiert werden soll
 
Hallo Soonwald,

klar kannst du als root auch eine andere shell nutzen: einfach nach dem Login tcsh eingeben und schon hast du dein Zeil, sofern ich dein Wunsch richtig verstanden habe, erreicht.
Das setzen einer anderen shell als Standardshell ist jedoch nicht ratsam.

Gruß
Evgenij
 
hmm... ich dachte nur, es ginge eleganter - indem einfach die default-shell anders gesetzt wird,
zumal unter der tcsh wohl kaum etwas nicht oder anders funtionieren dürfte, als unter der csh

Aber belassen wir es dabei

Gruesse
soonwald
 
Probier es doch einfach aus. Es ist ja auch kein Problem, die Shell dann wieder zu wechseln, wenn irgendwas nicht geht.

Rob
 
Die Root Shell auf etwas umsetzen was in /usr/bin liegt ist auch an sich kein Problem. Das Problem ist eine Shell aus den Ports umzulinken. Weil wenn da irgendwas kaputt geht (ein Library-Link oder so), dann kannst du dich in deine Root-Shell nicht mehr einloggen und hast verloren.

Darum der Umweg über den toor-Nutzer.
 
Yamagi hat es an anderer Stelle schon 'mal gut beschrieben - so wird es auch mir jetzt klar:

Moment, um das aufzuklären muss ich mal ein wenig ausholen. Denn sonst wird es kaum klar werden: Die csh ist die Shell, die ursprüngliche mal von Bill Joy für BSD geschrieben wurde. Über die Jahre hinweg ist die ursprüngliche csh in diverse Zweige divergiert, jedes BSD-Derivat hatte seine eigene Inkarnation. In einen dieser Zweige wurden Funktionen aus TENEX (aka TOPS-20) eingebaut. Die sich ergebende Shell nannte man dann "tcsh". Die tcsh hatte immer nur einen Hauptentwicklungszweig, es gibt also nur diese eine Inkarnation der tcsh.

Da die tcsh als Verbesserung der csh gedacht war, musste sie zu dieser möglichst kompatibel bleiben. Scripte sollten weiter laufen, unbedarfte Nutzer sollten sich nicht umstellen müssen und so weiter. Daher hat die tcsh einen Emulationsmodus: Wenn die tcsh als "csh" aufgerufen wird, ist sie mit csh-Implementierung aus 4BSD kompatibel. Das kostet allerdings einige Features. Wird sie als "tcsh" aufgerufen, hat man die vollen Features, aber ist eben nicht mehr komplett zur csh kompatibel. In der Praxis ist das schon seit vielen Jahren kein Beinbruch mehr, man sollte daher tunlichst "/bin/tcsh" statt "/bin/csh" als Shell eintragen.

Der Drang mit der csh kompatibel zu bleiben, zeigt sich auch in den Konfigurationsdateien. Welche Datei an welchem Punkt im Startprozess aufgerufen wird, ist vom System abhängig. Eine Liste findet sich in der Manpage. Ein weiterer Faktor ist, ob es sich um eine Loginshell oder eine andere Shell handelt... Daher sollte man tunlichst seine eigene Konfiguration in ~/.tcshrc schreiben und nicht in ~/.cshrc. Bei ersterer Datei kann man sich sicher sein, dass unabhängig des Systems rauskommt, was man sich vorstellt.

Unter FreeBSD ist die Reihenfolge:
1. /etc/csh.cshrc
2. /etc/csh.login (nur Login-Shells)
3. ~/.tcshrc
4. ~/.cshrc (nur wenn ~/.tcshrc nicht existiert)

"set prompt = "`/bin/hostname -s`# "" kommt nun eben dadurch zustande, dass die Prompt-Variablen ein tcsh-Feature sind, was in csh nicht vorhanden sein musst (unter FreeBSD aber ist).

Kommen wir nun zur Tab-Vervollständigung. Die ist sehr weit konfigurierbar, aber ein gutes Verhalten erhält man mit:
Code:
# Use the history of commands to aid expansion
set autoexpand

# Autolisting of options only when a new character is appended
set autolist=ambiguous

# Autocompletion
set complete

Recht praktisch (vervollständigt das bereits eingegebene Kommando aus der Historie):
Code:
# History up and down
bindkey -k up history-search-backward
bindkey -k down history-search-forward

Die vollständige .tcshrc findest du unter: https://github.com/Yamagi/dotfiles/blob/master/tcsh/tcshrc
 
Mir kam auch als erstes die Frage, wofür man überhaupt dringend eine andere als die Standardshell haben muß?
 
Ich hätte diesem Forum ja eine Diskussion über Für und Wider der csh zugetraut. Was is'n los mit euch? :rolleyes:

Natürlich gibt es gute Gründe, die Standardshell zu wechseln. Spontan fiele mir da ein, dass man ja möglicherweise durchaus Wert auf POSIX-Kompatibilität legen könnte
 
ich wechsel die (default)shell gar nicht wirklich von csh zu tcsh:p

denn die BSD Standard-Shell ist die (t)csh :D
 
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
 
Ich habe in all den Jahren noch nie Probleme mit zsh als Rootshell gehabt. Der Fall das ein System noch bis zum Login bootet, aber kein /usr/local hat ist schon sehr unwahrscheinlich. Außerdem kann ich dann auch gleich mit /bin/sh im single user mode reparieren gehen.
 
Wenn man Herr über eine Maschine ist, spricht imho nichts dagegen auch die root shell auch auf das an zu passen, was einem am ehesten liegt. Gibt es mehrere die sich zum root machen dürfen sollte man sich für eine permanente Änderung halt abstimmen.
Bei OpenBSD wird für ein "Upgrade without the install kernel" z.B. geraten, wenigstens kurzzeitig die Korn Shell wieder als standard shell ein zu richten, weil das Migrationsscript darauf geschrieben wurde. Das gilt es halt zu beachten ob es solche Vorgaben auch beim OS der Wahl gibt.
Ich verwende normalerweise auch eine ZSH wechsle aber wen mich irgend ein buildin (wie etwa `du`) nervt auch zu einer anderen.
 
Ich habe noch eine andere Idee. Was macht man i.d.R. als Erstes, wenn man sich per SSH verbindet? Ich für meinen Teil starte immer tmux. Ich habe dann folgendes in der tmux.conf stehen:
set -g default-command 'zsh -i'
So wird beim starten von tmux direkt eine ZSH Shell gestartet. Damit ich jetzt auch immer die gleiche Session habe, kann man sich noch einen Alias erstellen oder auch ein kleiner Skript:
#!/usr/bin/env sh
#===============================================================================
# FILE: mytmux
# REQUIREMENTS: tmux
# REVISION: 0.0.1
#===============================================================================
#set -x

/usr/local/bin/tmux new -s WORK

if [ "$?" = "1" ]; then
tmux attach -t WORK
fi
Das habe ich unter /usr/local/bin als mytmux gespeichert. Somit habe ich beim einloggen die Default Shell und nach dem starten von tmux dann eine ZSH Umgebung.

Gruss
 
Ich benutze "sudo -Es" bzw. "su -m", da behalte ich dann als root meine eigene Shell (zsh)
 
Es ist natürlich auch Gewohnheitssache, oder?
Nun bin ich nicht der Shell-Profi oder Enthusiast, aber als ich "damals" mal Ubuntu und mit der bash probierte, war die mir sehr unangenehm. Da ich nur eine Partition angelegt hatte und bei Ubuntu eh kein /usr/local/(s)bin existiert, sah ich keine Probleme darin, zur meiner inzwischen geliebten tcsh zu wechseln.
Wo die nicht so ganz posix-konform ist, merke ich es entweder nicht oder benutze unbewusst diese Features.
Mir liegt jedenfalls die gute History und automatische Vervollständigung unter der tcsh sehr gut. Besonders, dass ich quasi eine Auswahl aus der History treffen und mit den Anfangsbuchstaben gezielt nach Befehlen filtern kann, ist mir sehr angenehm.
 
ich glaub das thema driftet ein wenig ab... ging es nicht darum ob man die root-shell ändern kann oder ob man das lieber lassen sollte?
 
Zurück
Oben