Sudo für Befehl erzwingen?

5 Antworten

Natürlich kannst du die Ausführungsrechte für das Binary chsh so ändern, dass das nur root oder ein anderer mit sudo darf.

chmod 4700 <PHATH>/chsh 

sollte reichen

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

guenterhalt  12.12.2021, 14:19

Welchen Sinn soll es haben, einem User zu verbieten, eine andere Login-Shell zu benutzen.
Prinzipiell kann der doch z.B. mit csh von bash auf diese Shell wechseln. Das muss der dann zwar immer wiederholen, was er aber auch lebst z.B. in die ~/.bashrc eintragen könnte.
Was willst du damit erreichen?

2

Das ließe sich mit chmod realisieren, indem Du die Ausführung für Nutzer untersagst. Sinnbehaftet ist das eher nicht so.

diesen Befehl brauch sowieso niemand. Das kann man durch das Ändern der Userdaten in der /etc/passwd ganz leicht machen, nur eben nicht zeitnah.

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

C3tr4x 
Beitragsersteller
 12.12.2021, 15:11

/etc/passwd kann im Gegensatz zu chsh aber nur mit Root-Rechten bearbeitet werden und chsh trägt seine Änderungen trotzdem in chsh ein. Der Grund das zu machen ist, dass ein User als Shell /bin/rbash bekommen soll, damit er sein Home-Verzeichnis nicht verlassen kann. Das bringt aber nichts, wenn man per chsh seine Shell wieder auf /bin/bash stellen kann.

0
C3tr4x 
Beitragsersteller
 12.12.2021, 15:43
@indiachinacook

csh ist nicht installiert.

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
0
guenterhalt  12.12.2021, 16:12
@C3tr4x

das sind die, die bei mir (openSuSE Leap 15.3) in der /etc/shells stehen

/bin/csh
/bin/dash
/bin/false
/bin/ksh
/bin/ksh93
/bin/mksh
/bin/pdksh
/bin/sh
/bin/tcsh
/bin/true
/bin/zsh
/usr/bin/csh

/usr/bin/dash
/usr/bin/ksh
/usr/bin/ksh93
/usr/bin/mksh
/usr/bin/passwd
/usr/bin/pdksh
/usr/bin/bash
/usr/bin/tcsh
/usr/bin/zsh
/usr/bin/fis

Da muss man aber sehr vorsichtig sein denn chsh prüft nicht mal, ob die Shell, auch wenn sie in der Liste steht, überhaupt installiert ist.

Wenn man z.B. mit chsh für root eine solche nicht installierte Shell einträgt, kann sich root nicht mehr anmelden.
Bei solchen Experimenten ist es dann sinnvoll, vorher die alte /etc/passwd in einen Editor zu laden, um damit alle Änderungen rückgangig zu machen.


0
C3tr4x 
Beitragsersteller
 12.12.2021, 16:35
@guenterhalt

Wie gesagt, am Root user etc. will ich gar nichts ändern, es geht nur um einen einzelnen User, der /bin/rbash eingetragen bekommt und diese eben nicht selbst ändern soll, damit er sein Home-Verzeichnis nie verlässt.

0
KarlRanseierIII  12.12.2021, 16:48
@C3tr4x
The only restriction placed on the login shell is that the
command name must be listed in /etc/shells, unless the
invoker is the superuser, and then any value may be added.
An account with a restricted login shell may not change
her login shell. For this reason, placing /bin/rsh in
/etc/shells is discouraged since accidentally changing
to a restricted shell would prevent the user from ever
changing her login shell back to its original value.

Aus man chsh.

0
guenterhalt  12.12.2021, 19:53
@C3tr4x

was darf ein User, der mit der rbash arbeitet, eigentlich machen?

0
Von Experte guenterhalt bestätigt

Ich verstehe den Sinn nicht ganz. Die shell hat doch keinen Einfluß auf die eingegebenen Befehle, oder ? Du könntest eventuell die Rechte der shell ändern auf z.B. nur Lesen. Habe ich aber noch nicht probiert.


guenterhalt  12.12.2021, 14:52
Du könntest eventuell die Rechte der shell ändern auf z.B. nur Lesen. Habe ich aber noch nicht probiert.

Die Shell reich die Namen der Befehle nur an das Betriebssystem durch. Ich wüsste nicht, wie der Shell das verbieten könnte, ohne den Code zu ändern.

1

Im Normalfall ist eh nur Bash als shell installiert.

Wenn es keinen wichtigen Grund gibt, sollte jedes nicht benötigte Paket gar nicht erst installiert sein, so kann auch keiner ausführen.