Dzięki wbudowanym narzędziom (i bez korzystania z usług zewnętrznych, takich jak „Znajdź mój komputer Mac” i „Zdalnie wymaż komputer Mac” za pośrednictwem iCloud), nie można usunąć ani sformatować woluminu rozruchowego, diskutil ...
ponieważ dysk jest zajęty .
Możesz jednak usunąć folder użytkownika:
Poniższa metoda wykorzystuje zasady haseł i w zależności od stanu możliwości logowania użytkownika demon uruchamiania i skrypt bash wywołany przez demona usunie folder użytkownika.
Utwórz listę zasad haseł na pulpicie:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>policyCategoryAuthentication</key>
<array>
<dict>
<key>policyContent</key>
<string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) or (policyAttributeCurrentTime > policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds)</string>
<key>policyIdentifier</key>
<string>com.apple.maximumFailedLoginAttempts</string>
<key>policyParameters</key>
<dict>
<key>autoEnableInSeconds</key>
<integer>31536000</integer>
<key>policyAttributeMaximumFailedAuthentications</key>
<integer>10</integer>
</dict>
</dict>
</array>
</dict>
</plist>
Możliwości logowania użytkownika zostaną wyłączone po 10 nieudanych próbach logowania przez 31536000 sekund (= jeden rok).
Utwórz skrypt bash rmuserdir.sh :
#!/bin/bash
PWPOL=$(pwpolicy -u username authentication-allowed)
if [[ $PWPOL == 'User <username> is not allowed to authenticate: Failed global policy "com.apple.maximumFailedLoginAttempts"' ]]
then rm -fR /Users/username
fi
w / usr / local / bin / i uczyń go wykonywalnym. Zastąp ciąg nazwy użytkownika nazwą użytkownika, ale trzymaj nawiasy kątowe w instrukcji if!
Utwórz demona uruchamiania org.userdirrm.plist w / Library / LaunchDaemons / z zawartością:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.userdirrm</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/usr/local/bin/rmuserdir.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/org.userdirrm.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/org.userdirrm.stdout</string>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>
Właścicielem pliku i grupy musi być root: uprawnienia do kół i plików muszą wynosić 644. Demon będzie uruchamiany co 60 sekund. Możesz to zmienić, zmieniając liczbę całkowitą w kluczu StartInterval .
Zaimportuj zasady haseł:
pwpolicy setaccountpolicies ~/Desktop/pwpolicy.plist
Musisz podać hasło (uwierzytelniające = admin).
Uruchom demona:
sudo launchctl load /Library/LaunchDaemons/org.userdirrm.plist
Możesz przetestować konfigurację, tworząc użytkownika pośredniczącego, tymczasowo zmieniając nazwę użytkownika w skrypcie bash i wprowadzając nieprawidłowe hasła, próbując zalogować się z tym użytkownikiem pośredniczącym. Możesz tymczasowo obniżyć liczbę nieudanych prób logowania do 3 w polityce haseł, aby skrócić test.
Poprawki:
dodanie opcji (rm) -P w skrypcie powłoki:
Zastąp zwykłe pliki przed ich usunięciem. Pliki są nadpisywane trzykrotnie, najpierw wzorcem bajtowym 0xff, następnie 0x00, a następnie 0xff ponownie, zanim zostaną usunięte.
próba usunięcia folderu głównego zamiast folderu użytkownika:
rm -fR /
lub
rm -fRP /
Pliki chronione SIP nie zostaną usunięte / nadpisane! Aby je również usunąć / usunąć / zastąpić, musisz wyłączyć SIP.
- spróbuj pobrać binarny srm ze starszej instalacji OS X, dodaj go do High Sierra i użyj go w skrypcie bash zamiast rm . Binarny srm bezpiecznie usuwa pliki lub katalogi. Sprawdź
man srm
dalsze opcje (nie testowałem tego).
Moim zdaniem powyższą metodę można obejść, uruchamiając system w trybie pojedynczego użytkownika, uruchamiając opendirectoryd za pomocą launchctl (po obowiązkowym sprawdzeniu systemu plików i podłączeniu woluminu rozruchowego do /) i usuwając wszystkie zasady haseł za pomocą pwpolicy -clearaccountpolicies
.
Dlatego formatowanie lub usuwanie dysków lub folderów w celu „zwiększenia bezpieczeństwa” nie jest zalecane. Zamiast tego zaszyfruj główny wolumin za pomocą FileVault2 i używaj dobrych haseł dla wszystkich użytkowników.