Bestätigungsaufforderung für chmod, chown

683
Petar Vasilev

Ich versuche nur, eine Bestätigungsaufforderung zu einigen Linux-Befehlen wie chmodund hinzuzufügen chown.

Ich habe versucht, dies zu googeln, finde aber nicht viele Informationen zu diesem Thema.

Bei der Suche habe ich herausgefunden, dass es eine Lösung für die rmVerwendung der -iOption gibt, die jedoch mit überschrieben werden kann-f

Es gibt jedoch ein safe-rmPaket, das Sie auf Ihrem Server installieren können und bestimmte wichtige Verzeichnisse auf eine schwarze Liste setzen. Dies ist eine gute Lösung, aber leider gibt es kein ähnliches Paket für chmodund chown.

Meine ideale Lösung wäre also, wo Bestätigungsaufforderungen chmodund chownBestätigungsaufforderungen angezeigt werden, und bestimmte Verzeichnisse werden von der Chmod-Ed und der Chown-Ed gesperrt.

Alle Antworten sehr geschätzt !!!

0
"chmod" und "chown" haben keine Bestätigungsschalter, da ihre Auswirkungen von root immer reversibel sind. Es ist sinnlos, eine Bestätigung für eine umkehrbare Aktion anzufordern. Larssend vor 9 Jahren 0
Es ist umkehrbar, aber Sie können chown oder chmod / und wenn Sie die genaue Berechtigung nicht kennen, da viele Dateien darin sind, sind Sie verloren Petar Vasilev vor 9 Jahren 0
Trotzdem sind die Daten nicht verloren, also sind sie nicht so gefährlich. Larssend vor 9 Jahren 0
Richtig, aber unabhängig von den Daten, wenn die Berechtigungen und Besitzrechte nicht richtig sind, werden viele Dinge auf dem Server beschädigt und die Reparatur ist nicht unbedingt einfach Petar Vasilev vor 9 Jahren 0
Zum Reparieren müssen Sie entweder ein Backup wiederherstellen oder ein Backup verwenden, um eine Liste der Berechtigungen zu erhalten, wie sie sein sollten. Und wie das geht, wurde schon vorher gefragt. Hennes vor 9 Jahren 1
Es ist immer noch schön zu vermeiden, dass die Wiederherstellung eines Backups Zeit in Anspruch nimmt, was einige Ausfallzeiten erforderlich macht Petar Vasilev vor 9 Jahren 0

2 Antworten auf die Frage

1
mykel

Eine Lösung in bash wäre die Verwendung von Shell-Funktionen und Aliasnamen. Sie können sie in / etc / bashrc oder ~ / .bashrc ablegen, wenn Sie sie nur für bestimmte Benutzer wünschen. Hier sind einige Funktions- und Alias-Definitionen, mit denen Sie etwa das tun können, was Sie gefragt haben.

DANGERLIST=/etc/dangerous.paths  _dangerouspath() { file=$(readlink -e "$1") [ -z "$" ] && return 1  while read pattern do [[ "$" =~ ^$$ ]] && return 0 done < $  return 1 }  _checkpaths() { shift while [ -n "$1" ] do [[ "X$1" =~ ^X[^-].* ]] && _dangerouspath $1 && return 0 shift done  return 1 }  _saferun() { p="$1" shift if _checkpaths $* then read -p "Are you sure you want to do this? (y/n) " r && [ "$r" = "y" ] && $p $* else $p $* fi }  alias chown="_saferun /bin/chown" alias chgrp="_saferun /bin/chgrp" alias chmod="_saferun /bin/chmod" 

Sie müssen in "$ DANGERLIST" (/etc/dangerous.paths) eine Liste von Pfaden erstellen, die Sie schützen möchten. Dies würde etwa so aussehen

/ /home /etc.* /usr/bin.* /bin.* 
Das scheint so zu funktionieren:) Petar Vasilev vor 9 Jahren 0
0
Hennes

Die Befehle chown (1) und chmod (1) haben keine Sunch-Option. Wenn Sie diese Funktionalität hinzufügen möchten, können Sie entweder:

  1. Muss die Quelle ändern und neu kompilieren.
  2. Oder schreiben Sie einen Wrapper.

Die erste Option ist die sauberste. Die Sekunde ist einfacher. Wenn Sie stecken bleiben, brauchen Sie eine neue Frage, die wahrscheinlich besser zu [SO] passt, aber kurz:

1) Verschiebe chmod woanders hin. z.Bmv /bin/chmod /bin/chmold.therealthing

2) Erstellen Sie ein ausführbares Skript namens chmod, das das tut, was Sie wollen (und das echte chmod aufruft).

Ungetestet etwas von einer Person, die kein Shell ist (auch ich :)

#!/usr/bin/env bash echo "/bin/chmod (Shell script) called with these arguments:" echo $@  read -p "Are you sure you want to do this? (y/n) " RESPONSE if [ "$RESPONSE" = "y" ]; then exec /bin/chmod.therealthing $@  else echo "OK, aborting." fi 

Wenn Sie eine genauere Kontrolle wünschen, wird das Skript schnell komplexer. Sie wünschen sich trotzdem, Sie könnten die Eingabe parsen und für jede Datei einen chmod ausführen (nachdem Sie nach einer gültigen Syntax gesucht haben).

Cheers dafür, es scheint, als würde es funktionieren:), übrigens, Sie haben ein doppeltes Anführungszeichen in der zweiten Zeile verpasst, ich versuche auch, dies in eine Bash-Funktion zu verwandeln, aber wenn ich es rufe, schließt es meine Shell, jede Chance weißt du warum das so ist? Petar Vasilev vor 9 Jahren 0
Schließt es nur, wenn Sie akzeptieren? Ich habe dort einen Exec. (wahrscheinlich aus meiner Zeit, als RAM knapp wurde). Hennes vor 9 Jahren 0
Ja, nachdem ich angenommen habe, habe ich gerade den Exec entfernt und es hat mich erledigt:) Petar Vasilev vor 9 Jahren 0