Blockieren Sie ohne das '-'

354
RatDon

Ich möchte jeden blockieren, der suohne Login-Option läuft .

Sie können laufen su - <user>, su -l <user>, su --login <user>. Aber su <user>werden blockiert.

Wie kann ich das erreichen?

0
Ändern Sie die Quelle. Ipor Sircer vor 6 Jahren 4
Aus irgendeinem Grund konnte ich keine kompatible Quelle für su suchen. Ich benötige es für CentOS 5.5. Habe die Quelle für Sudo, aber nicht su. Können Sie mir damit helfen? RatDon vor 6 Jahren 0
http://vault.centos.org/5.5/os/SRPMS/coreutils-5.97-23.el5_4.2.src.rpm Ipor Sircer vor 6 Jahren 0
Warum tust du das? Es scheint, als würden Sie versuchen, ein anderes Problem damit zu lösen, aber es ist möglicherweise nicht der beste Weg, dies zu tun. mtak vor 6 Jahren 0
@mtak Für einen bestimmten Benutzer verwende ich rbash anstelle von bash und schränke einige andere Befehle von `.bash_profile` des Benutzers ein. Aber wenn es jemand tutAnstelle von "su -" wird kein .bash_profile verwendet. Also dachte ich mir, was ist, wenn ich ohne das '-' blockiere? RatDon vor 6 Jahren 0

1 Antwort auf die Frage

0
AnythingIsFine

Sie könnten ein Skript schreiben, das die CLI-Argumente überprüft und an diese weiterleitet su. Wenn die -, -loder --loginOptionen nicht angegeben sind die es wird eine Warnung an den Benutzer drucken diese Optionen zu nutzen.

*** Bitte beachten Sie, dass dies die Verwendung nicht "blockieren" würde, suda sie die Binärdatei direkt aufrufen könnten.

Beispielskript su.sh:

#!/bin/bash  ### script to prompt at su ### counter variable CNT=0 ### evaluate all the CLI arguments passed to "su" and check if the login is specified (also let `-V` version argument work) for arg in $@  do if [[ $arg == - || $arg == -l || $arg == --login || $1 == -V ]]; then ### increment counter if login argument is found CNT=$((CNT+1)) fi done ### check if login argument is given if [[ $CNT -ge 1 ]]; then /usr/bin/su $@ else echo -e '*** Please use "-", "-l" or "--login" with the "su" command ***' exit 2 fi 

Machen Sie in der .bashrcDatei des Benutzers einen Alias zu diesem Skript und nicht wie ein Alias su=/usr/bin/su.sh. Auf diese Weise wird bei jedem Aufruf des Datums das Skript ausgeführt und informiert Sie, dass Sie das Befehlszeilenmerkmal set date ausgegeben haben und zur Bestätigung auffordert.

Sie können auch die Verwendung eines Alias ​​vermeiden, indem Sie einfach den suBefehl wie folgt ersetzen, aber ändern Sie auch den suNamen der Binärdatei im Skript von /usr/bin/suin/usr/bin/su_cmd

mv /usr/bin/su /usr/bin/su_cmd  mv /usr/bin/su.sh /usr/bin/su 
Vielen Dank. Ich fuhr mit der Aliasmethode fort. Es fehlt zwar die direkte binäre Blockierung, dies ist jedoch der einfachste, kostengünstige Weg. : D RatDon vor 6 Jahren 0
Froh zu hören! Ich habe gerade erkannt, dass Sie sich darauf beziehen können, dass Sie "rbash" wie oben angegeben verwendet haben, nicht den Alias, den ich in meiner Antwort vorgeschlagen habe. AnythingIsFine vor 6 Jahren 0
Wie der von Ihnen vorgeschlagene. Aber nicht genau Ich habe es vor einem Monat gemacht. RatDon vor 6 Jahren 0