Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';不要在SonarQube上使用端口80_Sonarqube_Sonarqube7 - Fatal编程技术网

Can';不要在SonarQube上使用端口80

Can';不要在SonarQube上使用端口80,sonarqube,sonarqube7,Sonarqube,Sonarqube7,第一次尝试使用root用户运行SonarQube时,失败了。在互联网上搜索,我发现新的声纳应该由非root用户执行。我使用以下命令创建了用户声纳useradd-m-s/bin/bash-sonar,并执行了chmod-R 777-sonaqube-7.0。然后我登录sonar用户:sudoSuSonar。当我执行/sonar.sh控制台时一切正常。但是,当我将端口默认更改为端口80时,这将失败。使用命令netstat-plunt我检查端口80是否正在使用,但我使用的唯一端口是22(sshd)、5

第一次尝试使用root用户运行SonarQube时,失败了。在互联网上搜索,我发现新的声纳应该由非root用户执行。我使用以下命令创建了用户声纳
useradd-m-s/bin/bash-sonar
,并执行了
chmod-R 777-sonaqube-7.0
。然后我登录sonar用户:
sudoSuSonar
。当我执行
/sonar.sh控制台时
一切正常。但是,当我将端口默认更改为端口80时,这将失败。使用命令
netstat-plunt
我检查端口80是否正在使用,但我使用的唯一端口是22(sshd)、5432(postgres)和25(exim4)。我认为发生这种情况是因为用户声纳没有使用端口80的权限。我如何才能将端口80与SonarQube一起使用


我当前的操作系统是debian 9

您当前无法通过端口80使用SonarQube实际上是因为几乎所有Linux发行版都提供了一个限制:特权端口

非root用户执行的程序无法监听1024以下的所有端口,也就是说,只有用户“root”可以运行在这些端口上运行的程序。这是为了确保当您连接到在该端口上运行的应用程序时,该应用程序是“真实的”,而不是黑客伪造的


因为SonarQube不允许您以root用户身份执行它,所以将端口80代理到SonarQube正在执行的1024以上的端口是绕过此限制的唯一方法。

您当前无法通过端口80使用SonarQube实际上是由于几乎所有Linux发行版都提供了一个限制:特权端口

非root用户执行的程序无法监听1024以下的所有端口,也就是说,只有用户“root”可以运行在这些端口上运行的程序。这是为了确保当您连接到在该端口上运行的应用程序时,该应用程序是“真实的”,而不是黑客伪造的


由于SonarQube不允许您以root用户身份执行,因此将端口80代理到SonarQube正在执行的1024以上的端口是绕过此限制的唯一方法。

存在一些允许非root用户使用端口80和433的方法,使用
iptables
重定向端口请求,
CAP\u NET\u BIND\u服务
authbind
。更简单的方法是
authbind

使用
authbind
授予一次性访问权限,并具有更好的用户/组/端口控制:

()工具正是为此而存在的

  • 使用您喜爱的软件包管理器安装
    authbind

  • 将其配置为授予对相关端口的访问权限,例如允许所有用户和组访问80和443:

    sudo touch /etc/authbind/byport/80
    sudo touch /etc/authbind/byport/443
    sudo chmod 777 /etc/authbind/byport/80
    sudo chmod 777 /etc/authbind/byport/443
    
  • 现在通过
    authbind
    执行命令(可选指定
    --deep
    或其他参数,请参见手册页):

    例如


  • 此选项向用户/组授予信任,并提供对每个端口访问的控制,但AFAIK仅支持IPv4

    以下是我用来记录我的链接:


  • 存在一些允许非root用户使用端口80和433的方法,使用
    iptables
    重定向端口请求,
    CAP\u NET\u BIND\u服务
    authbind
    。更简单的方法是
    authbind

    使用
    authbind
    授予一次性访问权限,并具有更好的用户/组/端口控制:

    ()工具正是为此而存在的

  • 使用您喜爱的软件包管理器安装
    authbind

  • 将其配置为授予对相关端口的访问权限,例如允许所有用户和组访问80和443:

    sudo touch /etc/authbind/byport/80
    sudo touch /etc/authbind/byport/443
    sudo chmod 777 /etc/authbind/byport/80
    sudo chmod 777 /etc/authbind/byport/443
    
  • 现在通过
    authbind
    执行命令(可选指定
    --deep
    或其他参数,请参见手册页):

    例如


  • 此选项向用户/组授予信任,并提供对每个端口访问的控制,但AFAIK仅支持IPv4

    以下是我用来记录我的链接:


  • 可能是重复的,我已经读过了,但我认为使用nginx或apache从端口80代理到9000不是一个好主意,如果这可以通过使用sonar config文件完成不幸的是,您不能以非root用户的身份在端口=<1024上运行程序;大多数Linux发行版的开发人员故意使其无法实现。更多细节将在下面的回答中。可能重复的我已经读过了,但我认为使用nginx或apache从端口80到9000代理不是一个好主意,如果可以使用sonar配置文件完成,不幸的是,您不能以非根用户身份在端口=<1024上运行程序;大多数Linux发行版的开发人员故意使其无法实现。更多细节将在下面的答案中给出。
    authbind --deep java -jar SomeServer.jar