
スクリプトがブート時に root として実行されると仮定します。このスクリプトから を開始したいのですがtcpsvd -E 0 515 lpd
、tcpsvd
権限のないユーザーとして実行したいのですが、ポート 515 にバインドするには root 権限が必要です。どうすればこれを実現できますか?
さらに以下を使用する必要があります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.