membuka aplikasi dalam skrip shell dengan sudo

1

Saya mencoba membuka aplikasi yang mendengarkan port 25 dalam skrip shell. Untuk mendengarkan port 25, saya harus menjalankan aplikasi dengan sudo. Jadi saya mencoba yang berikut:

sudo open appThatNeedsPort25

Ia meminta kata sandi saya dan membuka aplikasi. Masalahnya adalah aplikasi TIDAK dijalankan sebagai root, sehingga tidak dapat mendengarkan port 25 ...

Apa yang harus saya lakukan untuk membuka aplikasi dari skrip shell sehingga dapat mendengarkan port 25?

at01
sumber
Apakah ini aplikasi GUI atau hanya Unix yang dapat dieksekusi?
Mark
Aplikasi GUI, mereka memiliki mode konsol, tetapi merupakan konsol interaktif
at01

Jawaban:

0

sudo -b membuat aplikasi berjalan di latar belakang.

sudo -b appThatNeedsPort25

Berbeda dengan sudo appThatNeedsPort25 &, sudo sendiri akan berjalan di latar depan, jadi Anda tidak akan memiliki masalah dengan kata sandi. Perhatikan bahwa sudo juga memiliki -A pilihan untuk membuatnya meminta kata sandi melalui GUI bukan di terminal, Anda dapat menggunakan ini saat sudo tidak berjalan dari terminal.

Gilles
sumber
0

Coba saja sudo appthatneedsport25, tidak perlu menggunakan buka saat berurusan dengan skrip bash atau shell. Jika itu adalah skrip yang diinterpretasikan (python ruby ​​dll) dan itu tidak diatur ke executable, Anda selalu dapat melakukan sudo python scriptname.

ConstantineK
sumber
hmm, ok, saya bisa menjalankannya di latar belakang dengan menambahkan > /dev/null 2>&1 &. Saya kira itu tidak meminta saya untuk kata sandi karena saya telah bermain dengan sudo ... perhatian saya adalah menjalankan sesuatu di latar belakang & akan memiliki masalah ketika meminta saya untuk kata sandi dengan sudo ..
at01
Seharusnya tidak, karena itu mendapatkan privs ketika Anda menjalankannya, dan sisanya yang diarahkan ke apa-apa pada saat ini. Apakah aplikasi ini membutuhkan input di masa mendatang dari Anda? Bisakah Anda memberi tahu kami apa itu dan untuk apa Anda menggunakannya?
ConstantineK
Ini adalah server smtp dummy untuk keperluan dev. Jadi saya hanya mencobanya setelah kata sandi sudo teringat habis dan hanya menampilkan 3 kata sandi yang meminta dan keluar. Saya kira saya harus menjalankan aplikasi dummy dulu dengan sudo ...
at01
Jika Anda ingin menjalankannya tanpa meminta kata sandi, maka ya, perlu menjalankan aplikasi terlebih dahulu untuk menyimpannya, tetapi mengapa tidak memasukkan kata sandi setelah Anda memulai server smtp?
ConstantineK
Masalahnya adalah skrip yang menjalankan aplikasi saya hanya berhenti. Anda tidak bisa melakukannya sudo appname &. Menjalankannya di latar belakang tidak memberi Anda kesempatan untuk memasukkan kata sandi.
at01
0

menggunakan sudo open -a appThatNeedsPort25

Am1rr3zA
sumber
Saya mendapatkan kesalahan ini: LSOpenURLsWithRole() failed for the application DevNullSmtp.jar with error -10810.
at01
Mencoba sudo open -a /path/to/Application.app
styfle
0

Sebagai alternatif (sedikit tidak aman) untuk menambahkan sudo kunci ssh Anda ke pengguna root Anda maka Anda dapat melakukan 'ssh root @ localhost appThatNeedsPort25'.

Pertama kali Anda melakukan ini mungkin meminta Anda untuk frasa sandi ssh Anda, tetapi setelah itu di-cache sampai Anda reboot.

Sebagai optimasi lebih lanjut, tambahkan ini ke file ~ / .ssh / config Anda:

Host root
    Hostname 127.0.0.1
    User root

Maka Anda cukup mengetik 'ssh root appThatNeedsPort25' sebagai gantinya.

Saya telah melakukan trik 'ssh root' ini selama bertahun-tahun dan itu menyelamatkan saya tak terhitung menit mengetik ulang kata sandi saya. :-)

Darren Greaves
sumber
Saya sebenarnya lebih suka mengetikkan kata sandi saya dalam kasus ini
at01
0

Anda melakukannya seperti ini

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts

kalau tidak

#   sudoapp: Runs .app with root privileges
#   --------------------------------------------------------------------
    sudoapp () {
        sudo "$1/Contents/MacOS/$(defaults read "$1/Contents/Info.plist" CFBundleExecutable)" $2
    }

$ sudoapp /Applications/TextEdit.app /etc/hosts

Sergei
sumber