Jak zamontować kodowanie przy logowaniu na OS X Mountain Lion

2

Używam encfs do szyfrowania mojej zawartości Dropbox i dlatego chciałbym mieć montowane encfs, gdy użytkownicy logują się, a nie podczas uruchamiania systemu. Jednak nie mogę tego zrobić. Próbowałem:

  • Dodanie polecenia mount do .login / .profile. To nie działa, ponieważ te skrypty są uruchamiane podczas uruchamiania powłoki, a nie wtedy, gdy użytkownik loguje się normalnie.
  • Dodawanie LoginHook do com.apple.loginwindow. Nie robi to nic oprócz spowolnienia procesu logowania. W plikach dziennika systemu nie ma nic, więc nie jestem pewien, jak to debugować.
  • Rzuciłem okiem na / etc / fstab, ale na Mountain Lion ten plik jest pusty, z wyjątkiem ostrzeżenia, że ​​ten plik nie ma żadnego wpływu, więc dodanie do niego niczego nie pomoże.

Dla tych, którzy nie są zaznajomieni z kodowaniem plików, ale znają się na załatwianiu spraw w OSX, zasadniczo to, co muszę uruchomić, aby zamontować zaszyfrowany system plików, to polecenie:

echo password | encfs -S encrypted_dir mount_point

Każda pomoc w ogóle doceniana.

Jochen
źródło
Chciałbym zauważyć, że trzymanie tego hasła w skrypcie uruchamiania jest złym pomysłem. Zamiast tego możesz przechowywać go w pęku kluczy. Zobacz szerszy.org/blog/secure-your-dropbox . Np .: encfs --ondemand --extpass = "security 2> & 1> / dev / null find-generic-password -gl encfs | grep password | cut -d \\\" -f 2 "encrypted_dir unencrypted_mount_dir
Edward Anderson

Odpowiedzi:

1

Możesz uruchomić dowolny plik wykonywalny podczas logowania (w tym skrypty), dodając go za pomocą Preferencji systemowych -> Użytkownicy i grupy -> Elementy logowania. Nie podawaj skryptu rozszerzenia; użyj nazwy takiej jak foonie foo.sh. Ponieważ nie ma powiązanego okna do wyświetlania komunikatów o błędach, jeśli coś pójdzie nie tak, radzę przekierowanie stdout i stderr do pliku w / tmp.

Kyle Jones
źródło
Działa świetnie, dzięki. Ale jeszcze jedno. Po uruchomieniu skryptu na krótko pojawia się okno terminala, a następnie znika po zakończeniu skryptu. To nie jest wielka sprawa, ale w pewnym sensie sprzeczne z moim rozsądkiem jest uporządkowanie. Czy mogę jakoś uniknąć tego wyskakującego okienka?
Jochen
Nie wiem, jak to zrobić.
Kyle Jones
3

Właściwym sposobem na to jest utworzenie usługi launchctl. Nie będziesz mieć otwartych okien terminalu podczas logowania.

Utwórz skrypt, /usr/local/bin/encfs-mountaby załadować kodowanie z żądanymi argumentami. Byłoby to podobne do skryptu, który już ładujesz. Na przykład:

#!/bin/bash
/usr/local/bin/encfs -f --ondemand --extpass="security 2>&1 >/dev/null find-generic-password -gl encfs | grep password | cut -d \\\" -f 2" -i 15 ~/.sync ~/sync

Zauważ, że powyższy skrypt używa Keychain OSX za pomocą polecenia bezpieczeństwa, aby podać hasło, zamiast zapisywać je w tym skrypcie. Aby dodać hasło, otwórz narzędzie Dostęp do pęku kluczy i dodaj aplikację o nazwie encfs do jednego ze swoich pęków kluczy. Użyj swojego pęku kluczy do logowania, jeśli nigdy nie chcesz, aby wyświetlał się monit o podanie hasła, pęku kluczy systemowych, jeśli chcesz otrzymywać monit o hasło enfs za każdym razem, gdy montuje on system plików --ondemand, lub nowego pęku kluczy, jeśli chcesz mieć własne hasło. Zobacz http://widerin.org/blog/secure-your-dropbox .

Utwórz plik usługi w, ~/Library/LaunchAgents/com.arg0.encfs.plistaby załadować ten skrypt. Zamień na YOUR_USERNAMEswoją nazwę użytkownika:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.arg0.encfs</string>
   <key>Program</key>
   <string>/usr/local/bin/encfs-mount</string>
   <key>KeepAlive</key>
   <true/>
   <key>UserName</key>
   <string>YOUR_USERNAME</string>
</dict>
</plist>

Upewnij się, że encfs jeszcze nie działa (jeśli nie, odmontuj go i zatrzymaj). Następnie uruchom nową usługę:

launchctl load ~/Library/LaunchAgents/com.arg0.encfs.plist

System plików enfs powinien zostać zamontowany. Sprawdź, /var/log/system.logaby rozwiązać problem.

Edward Anderson
źródło