
부팅 시 스크립트가 루트로 실행된다고 가정합니다. 이 스크립트에서 시작하고 싶습니다 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.