unterscheid zwischen /bin/bash <-> /bin/sh -? ( LINUX )

Das Ergebnis basiert auf 5 Abstimmungen

Sonstiges ( In Antwort erwähnen ) 60%
/bin/bash = /bin/sh 40%
/bin/bash ≠ /bin/sh 0%

6 Antworten

Sonstiges ( In Antwort erwähnen )

Bzgl. Zugriffsrechten gibt es prinzipiell keine Unterschiede.

Ob bei Dir auf dem System /bin/sh identisch oder ungleich /bin/bash ist, hängt von der verwendeten Distribution ab. Auch verhält sich die bash in Nuancen anderes, wenn sie sieht, dass sie als "sh" aufgerufen wird (kann sie ja aus argv[0] auswerten).

Man sollte historisch im Hinterkopf behalten, dass es früher(TM) nur die sh gab, das war halt die Standard Bourne-Shell. Die "bash" ist eine Art erweiterte Reimplementierung der alten Shell-Funktionalität, heißt nicht umsonst "born-again shell" bzw. auch "bourne-again shell" (was gleich klingt, wenn man es ausspricht, angloamerikanischer Humor halt).

Die bash implementiert die Grundfunktionen der alten /bin/sh und fügt einen Haufen Zusatzfunktionalität zu.

D. h. in einer "klassischen" /bin/sh hast Du viele Features nicht, die die heutige bash bietet. Zum Beispiel Inline-Funktionen, Jobcontrol, diverse syntaktische Erweiterungen.


/bin/bash = /bin/sh

die "alte" Bourne-Shell trug den Namen sh. Sie wird in Linux durch die Bourne-again-Shell, die bash ersetzt.

Da die bash, so wie mir bekannt ist, alle Funktionen der sh enthält, sie also abwärts-kompatibel ist, ist die sh als symbolischen Link der bash vorhanden.

Beide, die /bin/sh und die /bin/bash sind dadurch identisch

ls -l /bin/sh

ergibt:

lrwxrwxrwx 1 root root 4 20. Okt 2014  /bin/sh -> bash
Woher ich das weiß:Berufserfahrung – openSuSE seit 1995
Sonstiges ( In Antwort erwähnen )

/bin/bash ist weder = /bin/sh noch ≠ /bin/sh, /bin/sh ist ein Symlink, der auf eine andere Shell zeigt. Das kann /bin/bash sein, aber auch z.B. /bin/dash. Zumindest in Debian ist /bin/sh ein Symlink auf /bin/dash.

Andere Rechte hast du bei den beiden Shells (bash, dash) nicht, auch nicht bei dem sh-Symlink. 

Normalerweise zeigt das $ an, dass du als User unterwegs bist und das #, dass du gerade im root-Modus bist... Da hast du vielleicht noch etwas anderes gemacht? Bei mir ist /bin/bash und /bin/sh und /bin/dash --$, wenn ich es als User aufrufe, nix mit #. Hinterfrage lieber deinen /bin/bash Aufruf, ob du wirklich nur normaler User bist, für mich sieht es aus, als ob du gleichzeit root geworden bist - und ja, dann hast du alle Rechte, das System kaputt zu machen...

guenterhalt  02.07.2015, 08:07

der Prompt ( $ oder # oder ... ) sagt nichts über die Shell aus, denn so ein Prompt ist nur der Inhalt einer Variablen. Jedes Programm kann herausfinden wie es heißt und so auch unterschiedliche Konfigurations-Dateien aufrufen und so auch unterschiedliche Prompt verwenden.

So einfach mit dem Aufruf einer anderen Shell zum Superuser zu werden, ist in Unix/Linux-Systemen nicht vorgesehen. Vielleicht baut auch hier Ubuntu eines Sicherheitslücke ein(?).

0
Kerridis  02.07.2015, 09:09
@guenterhalt

"So einfach mit dem Aufruf einer anderen Shell zum Superuser zu werden, ist in Unix/Linux-Systemen nicht vorgesehen."

Nicht einfach mit dem Aufruf einer anderen Shell. Aber wer weiß, wie das konfiguriert ist, worauf das gelinkt ist. Kann ja auch ein Script sein. Deswegen mein "hinterfrage den Aufruf".

Und natürlich sagt der Prompt nichts über die Shell an sich aus und kann ja auch angepasst werden. Standard ist aber dennoch # für root und $ für User.

1
guenterhalt  02.07.2015, 17:28
@Kerridis

mit "so einfach mit dem Aufruf..." wollte ich ausdrücken, dass man entweder ein Passwort eingeben muss oder aber irgendwo ist sudo für den User konfiguriert und in einem Script steht z.B.

sudo ksh 

(hier für die Korn-Shell). So etwas halte ich für unverantwortlich und ist eine selbst gebaute Sicherheitslücke.

1

Die Antwort von "gunterhalt" ist richtig.

Die Bourn Shell "/bin/sh" gibts nicht mehr unter Linux. Die Bourne Again Shell ist abwärtskompatible, daher wird "/bin/sh" zu "/bin/bash" gelinkt um alte Skripte auf die Bourne Shell Skripte auf die Bash (Bourne Again Shell) umzuleiten.

Kerridis  02.07.2015, 06:35

Das ist so nicht ganz richtig, /bin/sh wird nicht zwangsweise auf /bin/bash verlinkt. Zumindest in Debian zeigt der Link auf /bin/dash!

0
guenterhalt  02.07.2015, 08:42
@Kerridis

die dash-Shell ist ( das d steht für Debian) schlanker als die bash und sollte wohl Platz sparen. Über andere Gründe habe ich bisher nichts gelesen.

Auch zur Bourne-Shell habe ich bisher nichts gefunden, dass es dafür einen GNU-Nachbau gibt. Warum also sollte eine Distribution möglicherweise Lizenzgebühren für eine Shell zahlen, deren Funktionen ohnehin von der bash erfüllt werden?

0
/bin/bash = /bin/sh

den 2. Teil der Frage bezüglich der Rechte habe ich noch nicht beantwortet:

Die Zugriffsrechte haben mit der Shell ( sh, bash, ksh, csh, tclsh ... ) nichts zu tun.
Man kann die Rechte mit eingebauten Shell-Kommandos ändern. Ziel solcher Einstellungen und Quelle solche Abfragen sind aber die einzelnen Filesysteme wie ext2, ext3, ext4, reiserfs ....

Filesysteme, die keinen Platz dafür vorgesehen haben, können auch solche Rechte nicht verwalten. Bestes Beispiel sind die Microsoft-Filesysteme  FAT16, FAT32 und NTFS.  Wenn man die trotzdem unter Linux sieht, dann ist das nur eine Täuschung. Man kann so einen fremden USB-Stick benutzen und ist Eigentümer der da gespeicherten Dateien. chmod ... kat keine Wirkung.

 

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995