Bagaimana mengizinkan pengguna non-root untuk mendengarkan pada port istimewa?

11

Saya ingin syslog dijalankan sebagai pengguna non-root di kotak linux saya. Itu membuatnya tidak mungkin untuk mengikat ke port 514 - karena itu port istimewa. Apakah ada cara saya bisa memberi pengguna non-admin "foo" kemampuan untuk mendengarkan pada port 514?

Dan Goldburt
sumber

Jawaban:

10
setcap 'cap_net_bind_service=+ep' /path/to/syslogd

Membutuhkan kernel linux yang tidak kuno ( 2.6.24 atau lebih baru)

Cian
sumber
3

Anda dapat mengkonfigurasi rinetd(tersedia di sebagian besar, jika tidak semua, repositori standar distribusi) untuk mendengarkan pada port 514 dan meneruskan koneksi ke beberapa port lain (di atas 1024, katakan 1514). Dengan begitu proses pengguna yang tidak memiliki hak istimewa dapat mendengarkan pada 1514 dan rinetdakan meneruskan koneksi sehingga tampaknya mendengarkan pada 514.

Ini hanya akan bekerja untuk koneksi TCP. Jika Anda perlu mendukung UDP (atau apa pun) dengan cara ini serta atau bukannya TCP, maka Anda dapat menggunakan aturan terjemahan iptables untuk mencapai efek yang sama.

David Spillett
sumber
Oh, itu sangat mudah. Berikut adalah panduan tentang bagaimana melakukannya di Ubuntu: ubuntugeek.com/...
Ivan
2

Dengarkan pada port yang tidak terjangkau dan gunakan iptables dnat untuk mengarahkan ulang koneksi.

korkman
sumber