GNU/Linux >> Znalost Linux >  >> Linux

Umožňuje uživateli povolit poslech portu pod 1024

setcap 'cap_net_bind_service=+ep' /path/to/program

to bude fungovat pro konkrétní procesy. Chcete-li však konkrétnímu uživateli povolit vazbu na porty pod 1024, budete ho muset přidat do sudoers.

Podívejte se na tuto diskuzi pro více.


(Některé z těchto metod byly zmíněny v jiných odpovědích; uvádím několik možných možností v hrubém pořadí preferencí.)

Nízký port můžete přesměrovat na vysoký port a poslouchat na vysokém portu.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 1080

Server můžete spustit jako uživatel root a poté, co začal naslouchat na privilegovaném portu, zahodit oprávnění. Raději než to kódovat sami, spusťte svůj server z obalu, který za vás udělá práci. Pokud váš server spouští jednu instanci na připojení, spusťte jej od inetd (nebo podobný program jako xinetd ). Pro inetd , použijte řádek jako tento v /etc/inetd.conf :

http  stream  tcp  nowait  username:groupname  /path/to/server/executable  argv[0] argv[1]…

Pokud váš server naslouchá v jediné instanci, spusťte jej z programu, jako je authbind . Buď vytvořte prázdný soubor /etc/authbind/byport/80 a učinit jej spustitelným pro uživatele provozujícího server; nebo vytvořte /etc/authbind/byuid/1234 , kde 1234 je UID, na kterém běží server, obsahující řádek 0.0.0.0/0:80,80 .

Pokud je spustitelný soubor vašeho serveru uložen na souborovém systému, který podporuje funkce, můžete mu přidělit cap_net_bind_service schopnost. Mějte na paměti, že schopnosti jsou stále relativně nové a stále mají několik zádrhelů.

setcap cap_net_bind_service=ep /path/to/server/executable

Krátká odpověď je, že to není možné z návrhu.

Dlouhá odpověď je, že ve světech open source si spousta lidí hraje s designem a vymýšlí alternativní metody. Obecně je všeobecně uznávanou praxí, že by to nemělo být možné. Skutečnost, že se snažíte, pravděpodobně znamená, že máte ve svém systému další konstrukční chybu a měli byste přehodnotit celou architekturu svého systému ve světle osvědčených postupů *nix a bezpečnostních důsledků.

To znamená, že jeden program pro autorizaci non-root přístupu k nízkým portům je authbind. Jak selinux, tak grsecurity také poskytují rámce pro takto vyladěné ověřování.

A konečně, pokud chcete, aby konkrétní uživatelé spouštěli konkrétní programy jako root a co opravdu potřebujete, je umožnit uživateli restartovat apache nebo něco podobného, ​​sudo je tvůj přítel!


Linux
  1. Jak nainstalovat server PostgreSQL na Ubuntu 18.04

  2. Poslouchejte žádost o wakeonlan

  3. Povolení FTP s IPTables

  1. Jak nainstalovat VSFTPD na cloudový server Ubuntu

  2. Jak nainstalovat VSFTPD na cloudový server Debian

  3. Jak nainstalovat VSFTPD na cloudový server CentOS

  1. Povolit uživateli používat sudo bez hesla?

  2. Změňte výchozí číslo portu serveru SSH

  3. Nainstalujte server MariaDB na CentOS