Tidak mengetahui kata sandi membuat segalanya menjadi rumit, tetapi mungkin solusinya adalah: apakah mungkin untuk sementara mengosongkan kata sandi pengguna? (Dan setelah itu reset ke apa pun sebelumnya.)
Sebagai permulaan:
Pertama, dapatkan jendela login untuk ditampilkan. Cukup logout pengguna saat ini, gunakan pengalihan pengguna cepat, atau gunakan SSH:
cd "/ System / Library / CoreServices / Ekstra Menu / User.menu / Isi / Sumber Daya /"
sudo ./CGSession -suspend
Atau, untuk langsung beralih ke pengguna tertentu, yang mungkin akan menampilkan jendela masuk (ini tiba-tiba tidak lagi berfungsi pada Leopard 10,5 saya):
sudo ./CGSession -switchToUserID 501
Apa yang ditampilkan sekarang sedikit bergantung pada System Preferences, tetapi mari kita asumsikan itu adalah ikon dan nama pengguna. Untuk mengaktifkan nama, kita harus mengetikkan huruf pertama. Kemudian, setelah Kembali, prompt kata sandi muncul. Atau satu dapat memilih setiap nama (seperti dengan menekan Panah Bawah) dan kemudian tekan Option-Kembali ke diminta untuk kedua setiap username dan password-nya. Saya tidak tahu bagaimana orang dapat mengetahui layar mana yang ditampilkan, tetapi mari kita simpan itu untuk nanti ...
Jadi, untuk memilih nama pengguna pertama (acak) dan tekan Option-Return, ketikkan nama pengguna tertentu, tekan Return, dan ketikkan kata sandi:
sudo osascript -e 'beri tahu aplikasi "System Events"
kode kunci 125
keystroke kembali menggunakan opsi turun
keystroke "nama pengguna"
keterlambatan 1.0
kembali keystroke
keterlambatan 1.0
keystroke "kata sandi"
keterlambatan 1.0
kembali keystroke
akhiri '
Di atas menunjukkan beberapa kesalahan, yang sejauh yang saya tahu tidak membatasi penggunaan:
osascript [285]: 3891612: (connectAndCheck) Aplikasi yang tidak tepercaya tidak
diizinkan untuk terhubung atau meluncurkan Window Server sebelum masuk.
_RegisterApplication (), GAGAL UNTUK membangun koneksi default untuk
WindowServer, _CGSDefaultConnection () adalah NULL.
Atau, gunakan skrip khusus bahasa dari " Script the Login window through Apple Remote Desktop " (mungkin suatu hari komentar di situs itu akan menunjukkan solusi yang lebih baik):
beri tahu proses "SecurityAgent"
setel nilai bidang teks 1 dari grup 1 dari jendela 1 ke "nama pengguna"
setel nilai bidang teks 2 grup 1 dari jendela 1 ke "kata sandi"
akhiri saja
klik tombol "Masuk" dari jendela 1 proses aplikasi "SecurityAgent"
Tetapi masalah utamanya adalah: ini masih membutuhkan kata sandi . Namun: jelas tidak diperlukan kata sandi saat pengguna memiliki kata sandi kosong. Bahkan, untuk kata sandi kosong, cukup mengklik ikon pengguna saja yang diperlukan. Jadi, jika mengirim penekanan tombol menggunakan AppleScript dapat diterima, maka mungkin "semua" yang tersisa untuk mencari tahu:
Apakah mungkin untuk sementara mengosongkan kata sandi pengguna, untuk memungkinkan memulai (atau melanjutkan) sesi tanpa mengetahui kata sandi itu ...?
Bisakah satu membuat AppleScript-proof? Suka:
- Bagaimana cara mengetahui apakah jendela login terlihat? (mungkin
stat -f%Su /dev/console
dapat membantu, karena itu menghasilkanroot
saat jendela masuk ditampilkan)
- Bagaimana cara mengetahui jendela masuk mana yang ditampilkan? (Seperti: yang memperlihatkan ikon dan nama login, atau daftar dropdown, atau mungkin hanya prompt kata sandi jika seseorang memilih untuk beralih ke pengguna tertentu?)
- Singkirkan penundaan.
- Bagaimana dengan pesan kesalahan itu?
(Catatan untuk pengujian: saat menggunakan Berbagi Layar sepertinya mengatur preferensi Saat mengendalikan komputer: Mengenkripsi hanya kata sandi dan penekanan tombol juga mempertahankan koneksi ketika jendela login ditampilkan, atau setelah pengguna berhasil login. Saat menggunakan Enkripsi semua jaringan data maka Mac saya perlu membangun kembali koneksi Screen Sharing setiap kali login ditampilkan atau pengguna diaktifkan.)
sudo osascript -e 'tell app "System Events" to keystroke "password" & return'
. Dengan layar terkunci, memasukkan nama pengguna administratif dan kata sandi dilanjutkan kembali sesi pengguna lain. Tetapi bagaimana cara memulai sesi untuk pengguna tanpa mengetahui kata sandi? (Hanya untuk memastikan, jika Anda mengetahui kata sandi: solusi lain mungkin Berbagi Layar, yang juga berfungsi untuk layar masuk. Anda harus menghubungkan kembali Berbagi Layar setelah sesi pengguna tertentu dimulai atau dilanjutkan.)su
pada command prompt, tetapi kemudian untuk sesi GUI. Atau seperti ketika layar terkunci, di mana memasukkan nama pengguna administratif dan kata sandi melanjutkan sesi pengguna lain.)Saya telah menyelidiki ini baru-baru ini.
Masukkan ini ke dalam tumpukan PAM aplikasi Anda, atau uji dengan sshd:
Itu sangat membantu Anda mendapatkan sesi grafis yang cukup dekat dengan sesi pengguna yang tidak aktif. Secara khusus, itu ada di namespace bootstrap kanan dan memiliki port bootstrap yang benar (saya pikir). Anda dapat memeriksa sumbernya untuk mengetahui apa yang dilakukan pam_launchd; itu menggunakan beberapa perpustakaan pribadi yang tampak masuk akal (fungsi vproc_priv.h di libvprop) untuk memanggil rutin Mach untuk mengatur port dan namespace. Cocok dengan semua dokumen (terbatas) yang disediakan Apple untuk syscalls yang diturunkan dari Mach.
Selanjutnya, Anda perlu mengatur id pengguna audit Anda dengan id pengguna dengan API BSM, atau jendela masuk tidak akan berbicara dengan Anda di Lion.
Sesi ini terlihat sangat dekat dengan sesi yang tidak aktif sekarang jika Anda memeriksa "launchctl blist", dan beberapa proses dan layanan menjadi hidup dengan baik (seperti papan tulis, dan sebagainya). Bahkan, semuanya kecuali Finder dan loginwindow sedang berjalan. Hingga loginwindow berjalan, Anda tidak dapat meluncurkan aplikasi grafis, dan proses loginwindow per-sesi selalu muncul sebagai anak langsung dari aplikasi global. Bagaimana cara menyodok proses loginwindow untuk meluncurkan loginwindow baru di sesi baru? Saya tidak dapat menemukan cara untuk mendapatkan potongan terakhir di tempat!
Segala bantuan yang melengkapi jawaban ini diterima dengan rasa terima kasih.
sumber
menjalankan perintah dengan sudo memungkinkan Anda untuk mengatur skrip agar tidak dapat dibaca oleh pengguna standar. Itu tidak sempurna, tetapi jika pengguna admin Anda sudah dikompromikan, permainan sudah berakhir!
chmod skrip namamu
skrip saya terlihat seperti ini, berfungsi dari jarak jauh ketika satu pengguna sudah berjalan, untuk beralih ke pengguna kedua melalui SSH (diuji pada Snow Leopard 10.6.3):
sumber
Saya perlu login pengguna yang sama ke 25 workstation yang berbeda, untuk melakukan pembaruan perangkat lunak. Saya tidak dapat menjalankan perintah 'osascript -e ...' dengan andal dari sesi SSH, bahkan dengan hak sudo. Namun, saya bisa menjalankannya melalui Apple Remote Desktop. Jika Anda memiliki ARD:
Saya senang menemukan semua 25 Mac Minis menjalankan Finder sebagai pengguna, dalam waktu kurang dari satu menit. Hanya untuk mengulangi, dengan ARD Anda tidak perlu mengetikkan kata sandi sudo pada setiap mesin. Baris yang perlu Anda tempelkan ke dialog perintah adalah (mengganti nama pengguna dan kata sandi yang valid):
sumber