La cuenta común de Linux está vinculada a 1024 o menos puerto

  
        

Primero, recibí una solicitud abierta ayer:

¿Puedo abrir una cuenta normal en esta máquina por separado, el permiso requerido es vincular el puerto udp 53?

Esta cuenta es


Para los desarrolladores, parece que este requisito es muy simple, pero en realidad implica algunos problemas técnicos (los usuarios normales en Linux no pueden unirse a puertos por debajo de 1024),

En ese momento, para no retrasar el trabajo de apertura, di la raíz de una máquina de prueba y ahora vuelvo para resolver el problema.



En segundo lugar, google sabe que básicamente hay dos soluciones:

1, que se usa comúnmente es usar sudo para otorgar a los usuarios comunes ciertos permisos , pero esto es diferente de dar root, tienes que mantener sudo.


2. Hay un pequeño programa authbind en el sistema debian, que permite al programa enlazar el puerto privilegiado por debajo de 1024 sin usar privilegios de raíz.

Al llamar a authbind, authbind llamará a algunas variables de entorno para permitir que su programa esté vinculado a un puerto privilegiado.


Ubuntu 12.04 install authbind

apt-get install authbind


¿Cómo usar authbind? Utilizado por el área de archivo de configuración, el área de archivo de configuración predeterminada está en el directorio /etc /authbind, que tiene tres directorios: byport, byaddr, byuid.

Si tenemos una cuenta de prueba, queremos ejecutar un programa para enlazar el puerto 80

Crear 80 archivos en el directorio de puertos: /etc /authbind /byport /80, configurar la cuenta de prueba para que tenga 80 archivos. El permiso para usar, si se puede acceder al archivo 80 por prueba, el enlace es exitoso, de lo contrario el enlace es un fracaso.


Operaciones específicas:

chmod 755 /etc /authbind /port /80

chown test.test /etc /authbind /port /80 < Br>

Agregue el comando authbind --deep antes del comando que desea iniciar.


También podemos vincular el puerto directamente a la dirección y crear un archivo ip: port bajo byaddr. El método de prueba es el anterior.

También puede crear un archivo uid en el directorio byuid, siempre que se pueda acceder a su cuenta de prueba, de lo contrario, el enlace falla.



Tercero, implementación de centos

Dado que authbind se basa en Debian, por lo que la fuente no se puede encontrar en yum, Google tampoco encontró la correspondiente Rpm;

Encontrado en github: https://github.com/tootedom/authbind-centos-rpm


Abajo, siga las instrucciones rpmbuild -v -bb --clean SPECS /authbind.spec tiene dos problemas:

1, error de ruta

[root @ stat authbind] # rpmbuild -v -bb --clean SPECS /authbind.spec < Br>

error: Archivo /root/authbind/SOURCES/authbind_2.1.1.tar.gz: No existe tal archivo o directorio


2, no se pudo generar el directorio de compilación

[root @ stat authbind] # rpmbuild -v -bb --clean SPECS /authbind.spec

Ejecución (% prep): /bin /sh -e /var /tmp /rpm-tmp. 6tbsn7

+ umask 022

+ cd /root /authbind /authbind /BUILD

/var/tmp/rpm-tmp.6tbsn7: línea 26: cd: /root /authbind /authbind /BUILD: No existe tal archivo o directorio

error: Estado de salida incorrecto de /var/tmp/rpm-tmp.6tbsn7 (% prep)



Errores de compilación de RPM:

Estado de salida incorrecto f Rom /var/tmp/rpm-tmp.6tbsn7 (% prep)


No está familiarizado con rpmbuild, pero encontró FUENTES /authbind_2.1.1.tar.gz, descomprimido y encontrado Makefile, directamente Instalación exitosa!

[root @ stat authbind-2.1.1] # make

cc -g -O2 -Wall -Wwrite-strings -Wpointer-arith -Wimplicit -Wnested-externs -Wmissing-prototypes - Wstrict-prototypes -DMAJOR_VER = '" 1 "' -DMINOR_VER = '0' -DLIBAUTHBIND = '' /quotr /lr/local/lib/aibbind/libauthbind.so.1" '-DHELPER =' -DHELPER = '&D'; Usr /local /lib /authbind /helper " '-DCONFIGDIR =' " /etc /authbind " '-D_GNU_SOURCE -c -o authbind.o authbind.c

cc -g authbind.o -o authbind

cc -g -O2 -Wall -Wwrite-strings -Wpointer-arith -Wimplicit -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -DMAJOR_VER = '" 1 "' -DMINOR_VER = '" 0 " '-DLIBAUTHBIND =' " /usr/local/lib/authbind/libauthbind.so.1" '-DHELPER =' " /usr /local /lib /authbind /helper " '-DCONFIGDIR =' " /Etc /authbind " '-D_GNU_SOURCE -c -o helper.o helper.c

cc -g helper.o -o helper

cc -D_REENTRANT -g -O2 -Wall -Wwrite- Cadenas -Wpointer-arith -Wimplicit -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -DMAJOR_VER = '" 1 "' -DMINOR_VER = '"' -DLIBAUTHBIND = '" /usr/local/lib/authbind/libauthbind.so.1"' -DHELPER = '" /usr /local /lib /authbind /helper " '-DCONFIGDIR =' " /etc /authbind " '-D_GNU_SOURCE -c -o libauthbind.o -fPIC libauthbind.c

ld -shared -soname libauthbind .so.1 -o libauthbind.so.1.0 libauthbind.o -ldl -lc

[root @ stat authbind-2.1.1] #

[root @ stat authbind-2.1.1 ] #

[root @ stat authbind-2.1.1] # make install

install -o root -g root -m 755 -d /usr /local /lib /authbind /usr /Local /share /man /man1 /usr /local /share /man /man8

instala -o root -g root -m 755 -s authbind /usr /local /bin /.

Instale -o root -g root -m 644 libauthbind.so.1.0 /usr /local /lib /authbind /.

tira --strip-unededed /usr/local/lib/authbind/libauthbind.so. 1.0

ln -sf libauthbind.so.1.0 /usr/local/lib/aibbind/libauthbind.so.1

instala -o root -g root -m 755 -s helper /usr /local /lib /authbind /.

chm Od u + s /usr /local /lib /authbind /helper

instalar -o root -g root -m 755 -d /etc /authbind \\

/etc /authbind /byport /Etc /authbind /byaddr /etc /authbind /byuid


[root @ stat authbind-2.1.1] # cd /etc /authbind /

[root @ stat Authbind] # ls

byaddr byport byuid


Después de authbind --deep, la cuenta común de Linux está vinculada a 1024 o menos.

Este artículo proviene del blog " operación y mantenimiento de " McMr., por favor asegúrese de mantener esta fuente http://xiaomaimai.blog.51cto.com/1182965/1437027

Copyright © Conocimiento de Windows All Rights Reserved