![tcpsvd가 루트 권한을 포기하도록 만드는 방법은 무엇입니까?](https://linux55.com/image/50551/tcpsvd%EA%B0%80%20%EB%A3%A8%ED%8A%B8%20%EA%B6%8C%ED%95%9C%EC%9D%84%20%ED%8F%AC%EA%B8%B0%ED%95%98%EB%8F%84%EB%A1%9D%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
스크립트는 시작 시 루트로 실행된다고 가정합니다. 나는 이 스크립트 로 시작 하고 싶습니다 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.