Mengetahui hari ini bahwa menjalankan layar sebagai pengguna berbeda yang saya sudo tidak akan berfungsi!
yaitu
ssh bob@server # ssh into server as bob
sudo su "monitor" -
screen # fails: Cannot open your terminal '/dev/pts/0'
Saya memiliki skrip yang berjalan sebagai pengguna "monitor". Kami menjalankannya dalam sesi layar untuk melihat output di layar. Masalahnya adalah, kami memiliki sejumlah pengguna yang masuk dengan akun mereka sendiri (yaitu bob, james, susie, dll ...) dan kemudian mereka tiba-tiba masuk ke pengguna "monitor". Memberi mereka akses ke pengguna "monitor" adalah hal yang mustahil.
sudo
gnu-screen
luckytaxi
sumber
sumber
sudo su "user" -
. Kenapa tidak digunakansudo -u user -s
?sudo su
- saya pikir hanya orang yang terbiasa (dalam kasus saya itu karena Anda tidak perlu tahu bendera sudo untuksudo su
- Saya tidak berpikir saya pernah membaca halaman sudo :)Jawaban:
Coba jalankan
script /dev/null
sebagai pengguna yang Andasu
inginkan sebelum meluncurkan layar - ini adalah ghetto hack kecil, tetapi seharusnya membuat layar senang.sumber
script
dapat digunakan untuk memulaiscreen
. Maka Anda hanya perlu keluar dua kali (sekali untukscreen
, sekali untuksu
). (Ini adalah sesuatu yangscript
dapat diklarifikasi oleh halaman manual untuk Anda, jika Anda meluangkan waktu untuk membacanya ...)sudo -u bob script -q -c 'screen -dr myscreen' /dev/null
. Maka Anda hanya memiliki satu terminal untuk keluar / lepas.script
buka perangkat tty sendiri, yang dimiliki oleh pengguna yang menjalankannya (lihat/dev
dan Anda akan melihatnya muncul setelah Anda menjalankannyascript
).screen
lalu ambil perangkat tty itu (yang dimiliki oleh pengguna yang sedang menjalankanscreen
sehingga tidak kesulitan mengaksesnya). Ini adalah pekerjaan total hack, tetapi berhasil. Melihat beberapa mesin saya, tampaknya layar versi baru tampaknya menginstal setuid-root, yang juga berfungsi, tetapi berarti Anda memiliki biner setuid-root lain yang mengambang, yang membuat beberapa orang merasa tidak nyaman.Saya menggunakan fungsi pembungkus
screen
untuk pengguna yang saya gunakansudo su
. Ini adalah fungsi pembungkus yang saya tambahkan ke pengguna~/.bashrc
:Ini memungkinkan saya untuk menggunakan semua opsi dan parameter
screen
yang mungkin ingin saya gunakan. Saya berpikir untuk menempatkan fungsi ini secara sistem.sumber
Dengan asumsi mereka SSHing menjadi tuan rumah, Anda dapat menambahkan kunci ssh publik untuk setiap pengguna yang membutuhkan akses ke akun monitor dalam file ~ monitor / .ssh / official_keys. Kemudian pada mesin remote setiap pengguna mereka dapat menjalankan
sumber
Dengan asumsi kita sedang berbicara tentang kesalahan ini:
Berikut ini adalah satu-liner (dapat digunakan sebagai "alias gobob", misalnya):
Penjelasan:
Ini akan memulai sebuah shell (seperti shell login) sebagai pengguna bob. Pengguna bob memulai
script
, yang diperintahkan untuk memanggil bash (bisa berupa tanda hubung atau ksh ...) dan salinan sesi dibuang.sumber
Mungkin harus mengubah izin pada perangkat yang dimaksud atau menambahkan monitor ke grup yang memiliki izin untuk membaca perangkat itu, itu akan menjadi kecenderungan pertama saya. Tetapi Anda harus mempertimbangkan implikasi keamanan dari melakukannya.
sumber
Anda bilang sudah:
Saya bertanya-tanya tentang tanda hubung. Saya biasanya melakukan:
Tanda hubung (per halaman manual su) memberi tahu su untuk "menjadikan shell sebagai shell login". Ini berarti ia akan sumber semua skrip startup shell yang biasa dan mengatur hal-hal seperti PATH dan HOME dengan benar.
sumber
sudo su - username
dansudo su username -
melakukan hal yang sama.Saya baru saja menemukan masalah ini. Selesaikan dengan
chmod +rw $(tty)
sebelum menjalankan sudo. Masalah dengan solusi ini adalah bahwa siapa pun dapat terhubung dan mengintip terminal Anda setelah itu.sumber
gpg
misalnya). Dan tentu saja dia tidak akan pernah berada pada sistem dengan pengguna jahat yang akan menontontty
dan mengendus kata sandi ...