Saya dituntut menjadi pengguna untuk menjalankan skrip berjalan lama tertentu. Saya ingin menggunakan layar tetapi saya mendapat pesan kesalahan "Tidak dapat membuka terminal Anda '/ dev / pts / 4' - silakan periksa."
Jadi saya mencari di Google dan menemukan posting forum yang diperintahkan untuk dijalankan $ script '/dev/null/'
. Saya melakukannya dan kemudian saya bisa menyaring.
Mengapa ini bekerja? Apa yang su lakukan sehingga layar tidak dapat berjalan sebagai pengguna yang dituntut? Mengapa mengarahkan ulang 'skrip' ke / dev / null melakukan hal yang dicegah? Apakah menggunakan skrip untuk menulis log sebagai pengguna asli ke suatu tempat?
linux
bash
gnu-screen
su
Ichorus
sumber
sumber
su
dari dalam sesi layar.Jawaban:
Nah, secara teknis Anda tidak mengarahkan apa pun di sini.
Memanggil
script /dev/null
hanya membuatscript
save seluruh naskah dalam/dev/null
yang dalam prakteknya berarti membuang isinya.Lihat
man script
untuk detail info dan paket util-linux-ng untuk implementasi (misc-utils/script.c
).screen
Sebenarnya ini tidak ada hubungannya . Mengapa ini bekerja memohonscript
memiliki efek samping membuat pseudo-terminal untuk Anda di/dev/pts/X
. Dengan cara ini Anda tidak harus melakukannya sendiri, dan layar tidak akan memiliki masalah izin - jika Andasu
dari pengguna A ke pengguna B , dengan secara langsung memohonscreen
Anda mencoba mengambil kepemilikan terminal pseudo pengguna A. Ini tidak akan berhasil kecuali Anda root . Itu sebabnya Anda melihat pesan kesalahan.sumber
Untuk mengeluarkan langsung ke jendela terminal Anda, program yang berjalan harus dapat menulis ke terminal pengendali Anda. Jika Anda menggunakan xterm atau ssh atau koneksi virtual lainnya (bukan terminal langsung yang terhubung langsung) terminal pengendali Anda adalah pseudo tty (pty).
Kaset Anda diatur dengan izin tertulis hanya untuk Anda saat Anda masuk, jika tidak, pengguna lain dapat mencoret-coret layar Anda (atau membacanya). Jadi ketika Anda su ke pengguna lain (dan pengguna itu bukan root), pengguna itu tidak memiliki akses ke pty yang mendasarinya.
Namun, I / O yang lebih kompleks seperti layar memerlukan akses langsung ke pty untuk bekerja, ini ajaib untuk mengendalikan seluruh layar Anda. Saat itulah Anda mengalami masalah dengan orang yang menjalankan perintah tidak memiliki akses yang tepat ke terminal pengendali.
Mengarahkan skrip ke / dev / null menyebabkan layar tidak mencoba menulis ke terminal pengendali, sehingga tidak mengenai masalah izin.
sumber
/dev/null
. Pertama: naskah mencatat sesi Anda (lihat manual ini), dan Anda tidak perlu sama sekali: sehingga yang masuk ke / dev / null. Tapi itu tidak memiliki efek samping: itu membuat terminal semu, dan sekarang Anda menggunakan ini, dan layar dapat menulis ke yang satu ini.