На iOS есть возможность удалить все данные после 10 неудачных попыток входа в систему. Как я могу использовать ту же опцию в macOS, чтобы мой SSD удалялся / переформатировался после неудачных попыток входа в мою учетную запись?
источник
На iOS есть возможность удалить все данные после 10 неудачных попыток входа в систему. Как я могу использовать ту же опцию в macOS, чтобы мой SSD удалялся / переформатировался после неудачных попыток входа в мою учетную запись?
С помощью встроенных инструментов (и без использования внешних сервисов, таких как «Найди мой Mac» и «Удаленно удалите мой Mac» через iCloud) невозможно стереть или переформатировать загрузочный том, diskutil ...
так как диск занят .
Вы можете удалить свою папку пользователя, хотя:
Приведенный ниже метод использует политику паролей и в зависимости от состояния возможностей входа пользователя в систему, демон запуска и сценарий bash, вызываемый демоном, удаляют папку пользователя.
Создайте список политик паролей на рабочем столе:
<?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>
Возможности входа пользователя будут отключены после 10 неудачных попыток входа в систему в течение 31536000 секунд (= один год).
Создайте 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
в / usr / local / bin / и сделать его исполняемым. Замените строку username именем вашего пользователя, но оставьте угловые скобки в операторе if!
Создайте демон запуска org.userdirrm.plist в / Library / LaunchDaemons / с содержимым:
<?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>
Владелец файла и группа должны быть root: права доступа к колесу и файлу должны быть 644. Демон будет запускаться каждые 60 секунд. Вы можете настроить это, изменив целое число в ключе StartInterval .
Импортируйте политику паролей:
pwpolicy setaccountpolicies ~/Desktop/pwpolicy.plist
Вы должны ввести свой пароль (authenticator = admin).
Запустите демон:
sudo launchctl load /Library/LaunchDaemons/org.userdirrm.plist
Вы можете протестировать настройку, создав пользователя-заглушку, временно изменив имя пользователя в скрипте bash и введя неправильные пароли, пытаясь войти с этим пользователем-заглушкой. Вы можете уменьшить количество неудачных попыток входа в систему до 3 в политике паролей временно, чтобы сократить тест.
Твики:
добавив опцию (rm) -P в скрипт оболочки:
Перезаписать обычные файлы перед их удалением. Файлы перезаписываются три раза, сначала с помощью байтового шаблона 0xff, затем 0x00, а затем снова 0xff, прежде чем они будут удалены.
пытаемся удалить корневую папку вместо вашей пользовательской папки:
rm -fR /
или
rm -fRP /
Файлы, защищенные SIP, не будут удалены / перезаписаны! Чтобы удалить / удалить / перезаписать их также, вы должны отключить SIP.
man srm
дальнейшие варианты (я не проверял это).По моему мнению, описанный выше метод можно обойти, загрузившись в однопользовательском режиме, запустив opendirectoryd с launchctl (после обязательной проверки файловой системы и установив загрузочный том в /) и удалив все политики паролей с помощью pwpolicy -clearaccountpolicies
.
Поэтому форматирование или стирание дисков или папок для «обеспечения безопасности» не рекомендуется. Вместо этого зашифруйте основной том с помощью FileVault2 и используйте надежные пароли для всех пользователей.