GNU/Linux >> Tutoriels Linux >  >> Linux

Autoriser un utilisateur à laisser écouter un port inférieur à 1024

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

cela fonctionnera pour des processus spécifiques. Mais pour permettre à un utilisateur particulier de se lier à des ports inférieurs à 1024, vous devrez l'ajouter à sudoers.

Consultez cette discussion pour en savoir plus.


(Certaines de ces méthodes ont été mentionnées dans d'autres réponses ; je donne plusieurs choix possibles dans un ordre approximatif de préférence.)

Vous pouvez rediriger le port bas vers un port haut et écouter sur le port haut.

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

Vous pouvez démarrer votre serveur en tant que root et supprimer les privilèges après qu'il ait commencé à écouter sur le port privilégié. De préférence, plutôt que de coder cela vous-même, démarrez votre serveur à partir d'un wrapper qui fait le travail pour vous. Si votre serveur démarre une instance par connexion, démarrez-la à partir de inetd (ou un programme similaire tel que xinetd ). Pour inetd , utilisez une ligne comme celle-ci dans /etc/inetd.conf :

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

Si votre serveur écoute en une seule instance, démarrez-le à partir d'un programme tel que authbind . Soit créer un fichier vide /etc/authbind/byport/80 et le rendre exécutable par l'utilisateur exécutant le serveur ; ou créez /etc/authbind/byuid/1234 , où 1234 est l'UID exécutant le serveur, contenant la ligne 0.0.0.0/0:80,80 .

Si l'exécutable de votre serveur est stocké sur un système de fichiers qui prend en charge les fonctionnalités, vous pouvez lui attribuer le cap_net_bind_service aptitude. Attention, les fonctionnalités sont encore relativement nouvelles et présentent encore quelques défauts.

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

La réponse courte est que ce n'est pas possible par conception.

La réponse longue est que dans les mondes open source, il y a beaucoup de gens qui jouent avec la conception et proposent des méthodes alternatives. En général, il est largement admis que cela ne devrait pas être possible. Le fait que vous essayiez signifie probablement que vous avez un autre défaut de conception dans votre système et que vous devez reconsidérer l'ensemble de votre architecture système à la lumière des meilleures pratiques *nix et des implications en matière de sécurité.

Cela dit, un programme pour autoriser l'accès non root aux ports bas est authbind. selinux et grsecurity fournissent également des cadres pour ces authentifications fines.

Enfin, si vous voulez que des utilisateurs spécifiques exécutent des programmes spécifiques en tant que root et que vous avez vraiment besoin de permettre à un utilisateur de redémarrer apache ou quelque chose comme ça, sudo est votre ami !


Linux
  1. Autoriser un utilisateur à utiliser Sudo sans mot de passe ?

  2. Modifier le numéro de port du serveur SSH par défaut

  3. Comment installer VSFTPD sur un serveur Ubuntu Cloud

  4. Comment installer VSFTPD sur un serveur cloud Debian

  5. Comment installer un serveur PostgreSQL sur Ubuntu 18.04

Comment initialiser la configuration du serveur CentOS 7

Procédure :configuration initiale du serveur Ubuntu 15.04

Procédure :configuration initiale du serveur Fedora 21

Procédure :configuration initiale du serveur Debian 8.2

Configuration initiale du serveur avec Ubuntu 18.04

Comment activer l'utilisateur root dans Ubuntu Server ?