Ich habe Code in einem Skript gefunden, das mir von einer anderen Person als Ressource zum Sperren / Härten von Ubuntu 16.04 für ein Projekt gegeben wurde, das ich gerade mache.
Ich habe keine Ahnung, was es tut, und möchte es nicht ausführen, wenn ich die Änderung, die es vornehmen würde, nicht identifizieren kann. Ist jemandem bewusst, was es tut oder ändert? Nur Code ohne einen kurzen Erklärungskommentar, und es ist das einzige, was ich nicht weiß. Auch die zweite Funktion ist durch die Funktion identifizierbar, aber ich verstehe den Zweck oder die Einzelheiten nicht.
function bacon.config.ubuntu.chage() {
CHAGE_SCRIPT='/etc/cron.daily/userchage'
if [ ! -e $CHAGE_SCRIPT ]; then
printf "#%c/bin/bash \nfor i in \$(awk -F: '{if(($3 >= 1000)&&($3 <65534)) print \$1}' /etc/passwd); do \nchage -m 0 -M 60 -W 10 \$i \ndone \n" ! > $CHAGE_SCRIPT
chmod +x $CHAGE_SCRIPT
fi
}
function bacon.config.ubuntu.log.rotate() {
echo "bacon.config.ubuntu.log.rotate: [INFO] Installing logrotate..."
sudo apt-get install logrotate 1>/dev/null
echo "bacon.config.ubuntu.log.rotate: [INFO] Configuring logrotate..."
sed 's/rotate 4/rotate 60/' /etc/logrotate.conf > /etc/logrotate.conf.new
mv /etc/logrotate.conf.new /etc/logrotate.conf
sed 's/rotate 1/rotate 60/' /etc/logrotate.conf > /etc/logrotate.conf.new
mv /etc/logrotate.conf.new /etc/log.rotate.conf
sed 's/rotate 7/rotate 1825/' /etc/logrotate.d/rsyslog > /etc/logrotate.d/rsyslog.new
mv /etc/logrotate.d/rsyslog.new /etc/logrotate.d/rsyslog
}
Jede Hilfe bei der Identifizierung dieser wäre erstaunlich.
Antworten:
Die erste Funktion prüft, ob eine Datei
$CHAGE_SCRIPT
vorhanden ist, und versucht andernfalls, sie mit einerprintf
Anweisung zu erstellen . Sie können sehen, was diese Anweisung bewirkt, indem Sie sie in einem Terminal ausführen:Sie werden feststellen, dass Instanzen der
$3
Auswertung leer sind, da sie (anders als\$1
) nicht vor einer Erweiterung durch die Shell geschützt sind. Die Verwendung von%c
zum Einfügen des!
In#!/bin/bash
legt nahe, dass der ursprüngliche Autor nicht wirklich versteht, wie die Erweiterung des Bash-Verlaufs funktioniert.IMHO wäre es einfacher und klarer, ein Here-Dokument zu verwenden:
Die Bedienung der zweiten Funktion sollte ziemlich offensichtlich sein - sie könnte vereinfacht werden, indem alle
sed
Befehle so kombiniert werden, dass die Datei nur einmal geschrieben / verschoben wird.quelle
$3
unbeabsichtigt war - da dies zu einem Syntaxfehler von awk führen würdeDas Skript enthält zwei Funktionsdefinitionen. Die erste Funktion
bacon.config.ubuntu.chage
erstellt ein Skript unter/etc/cron.daily/userchage
(von mir hinzugefügte Kommentare):Die zweite Funktion installiert logrotate und erstellt eine Konfigurationsdatei dafür.
quelle
Das
chage
Programm ändert den Kennwortablauf für alle Benutzer. Das heißt, sie können ihr aktuelles Passwort höchstens 60 Tage lang behalten . Es wird täglich ausgeführt. Die Mindestdauer von0
ist ab /security/78758/what-is-the-purpose-of-the-password-minimum-age-setting fraglich . Fragen Sie unter https://security.stackexchange.com, ob dies wirklich empfohlen wird.Warum
logrotate
die Sicherheit verbessert werden sollte, liegt etwas über mir.quelle
-m
scheint richtig. Wenn Sie die Manpages lesen können, können Sieman cron
nach demcron.daily
Ordner suchen.