假设脚本在启动时以 root 身份运行。我想从这个脚本开始tcpsvd -E 0 515 lpd
。我想tcpsvd
以非特权用户身份运行。但它需要 root 权限才能绑定到端口 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
您需要在以 root 身份运行时将程序绑定到端口,然后切换到非特权用户。 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.