iOS에는 10 번의 로그인 시도 실패 후 장치가 모든 데이터를 삭제하도록하는 옵션이 있습니다. x가 사용자 계정에 로그인하지 못한 후 SSD가 삭제 / 재 포맷되도록 macOS에서 동일한 옵션을 사용하려면 어떻게해야합니까?
iOS에는 10 번의 로그인 시도 실패 후 장치가 모든 데이터를 삭제하도록하는 옵션이 있습니다. x가 사용자 계정에 로그인하지 못한 후 SSD가 삭제 / 재 포맷되도록 macOS에서 동일한 옵션을 사용하려면 어떻게해야합니까?
답변:
그것은 삭제 또는로 부팅 볼륨 포맷 불가능 온 - 보드 도구를 (와 같은 외부 서비스를 사용하지 않고 "내 맥 찾기"및 iCloud를 통해 "원격으로 내 맥 지우기") diskutil ...
디스크이기 때문에 바쁘다 .
그래도 사용자 폴더를 제거 할 수 있습니다.
아래 방법은 비밀번호 정책을 사용하며 사용자 로그인 기능의 상태에 따라 시작 데몬 및 데몬이 호출 한 bash 스크립트가 사용자 폴더를 제거합니다.
데스크탑에서 비밀번호 정책 plist를 작성하십시오.
<?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>
31536000 초 (= 1 년) 동안 10 번의 로그인 시도 실패 후 사용자 로그인 기능이 비활성화됩니다.
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 문에 꺾쇠 괄호를 유지하십시오!
/ Library / LaunchDaemons /에 컨텐츠 로 시작 데몬 org.userdirrm.plist 를 작성하십시오 .
<?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 : wheel이어야하고 파일 권한은 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
추가 옵션을 확인하십시오 (테스트하지 않았습니다).필자의 의견으로는 위에서 설명한 방법은 단일 사용자 모드로 부팅하고 launchctl을 사용하여 opendirectoryd (필수 파일 시스템 검사 및 부팅 볼륨을 /에 마운트 한 후)를 시작하고로 모든 비밀번호 정책을 제거하여 회피 할 수 있습니다 pwpolicy -clearaccountpolicies
.
따라서 "보안"을 얻기 위해 디스크 나 폴더를 포맷하거나 지우는 것은 권장되지 않습니다. 대신 FileVault2로 기본 볼륨을 암호화하고 모든 사용자에게 올바른 암호를 사용하십시오.