tcpsvd가 루트 권한을 삭제하도록 하려면 어떻게 해야 합니까?

tcpsvd가 루트 권한을 삭제하도록 하려면 어떻게 해야 합니까?

부팅 시 스크립트가 루트로 실행된다고 가정합니다. 이 스크립트에서 시작하고 싶습니다 tcpsvd -E 0 515 lpd. tcpsvd권한이 없는 사용자로 실행하고 싶습니다 . 하지만 포트 515에 바인딩하려면 루트 권한이 필요합니다. 어떻게 해야 합니까?

더 나아가 다음을 사용해야 합니다 busybox tcpsvd.

tcpsvd
tcpsvd [-hEv] [-c N] [-C N[:MSG]] [-b N] [-u USER] [-l NAME] IP PORT PROG

Create TCP socket, bind to IP:PORT and listen for incoming connection.
Run PROG for each connection.

    IP              IP to listen on. '0' = all
    PORT            Port to listen on
    PROG [ARGS]     Program to run
    -l NAME         Local hostname (else looks up local hostname in DNS)
    -u USER[:GRP]   Change to user/group after bind
    -c N            Handle up to N connections simultaneously
    -b N            Allow a backlog of approximately N TCP SYNs
    -C N[:MSG]      Allow only up to N connections from the same IP
                    New connections from this IP address are closed
                    immediately. MSG is written to the peer before close
    -h              Look up peer's hostname
    -E              Do not set up environment variables
    -v              Verbose

답변1

루트로 실행하는 동안 프로그램을 포트에 바인딩한 다음 권한이 없는 사용자로 전환해야 합니다. 이를 수행하기 위한 옵션을 tcpsvd제공합니다 :-u

 -u user[:group]
          drop permissions.  Switch user ID to user’s UID, and group ID to
          user’s primary GID after creating and binding to the socket.  If
          user  is  followed  by a colon and a group name, the group ID is
          switched to the GID of group instead.  All supplementary  groups
          are removed.

관련 정보