
setuid-rootツールを使用するには、さまざまなuid(数千個など)が必要です。そのような範囲を登録するプロトコルがありますか、それとも範囲を選択し、他のプログラムがそのuidを使用しないことを望みますか?
(これで混乱を起こしたくありません/etc/passwd
。)
私は/etc/subuid
(文書に記録されている他の人と一緒に)https://www.mankier.com/8/usermod)そして同様のことをするようです。正確には何ですか/etc/subuid
?これを使って私のsetuidツールの範囲を登録できますか?
/etc/subuid
これは、ある種のuidマッピングのためにdockerで使用されているようです。自分のアプリケーション用に新しいユーザーを作成する場合は、/etc/subuid
以下のサブスコープを予約してください。いいえこれをdockerで使用すると、私がuid範囲を予約したことをシステムの残りの部分に知らせる良い方法ですか?
答え1
ハッキングがあり、これを行う方法があります。正しい。
ハッキングは、維持するUIDがととの間にあるようにとをUID_MIN
上げることGID_MIN
です。 GID(存在する場合)はとの間にあります。これにより、一般ツール(、など)は、強制的に使用しない限り(新しいUIDおよび/またはGIDを明示的に指定して)、新しいユーザーアカウントにそれを使用しません。この新しい間隔範囲の既存の UID を .. 範囲に、GID を .. 範囲に再マップして、ツールが通常のユーザー アカウントとして処理できるようにする必要があります。/etc/login.defs
SYS_UID_MAX
UID_MIN
SYS_GID_MAX
GID_MIN
useradd
adduser
usermod
UID_MIN
UID_MAX
GID_MIN
GID_MAX
正しい方法はまた構成国家安全保障局(通常PAM)ツールが混乱しないようにスケジュールされたユーザーを確認してください。
最も簡単な方法は、libnss-extrausers
NSSモジュールとpam_extrausers
PAMモジュールを使用することです。これにより、これらの特別なユーザーを/var/lib/extrausers/passwd
(暗号化されていない項目も含む/var/lib/extrausers/shadow
)に入れることができ、オプションでグループ情報を配置できます/var/lib/extrausers/groups
。これらのモジュールは、すべての一般的なLinuxディストリビューションで利用可能です。
これらのユーザーをNSS / PAMに追加した場合は、予防措置としてスケジュールされたユーザーを拡張して上書きすることがSYS_UID_MAX
できます。ご存知のように、どのツールが..ユーザーのみをリストしているのか、それともユーザーだけをリストしてSYS_GID_MAX
いるのかを確認していません.除外する必要があります。多くのプログラマーは、これら2つのセットが相互補完的であると誤って信じているようです。したがって、予約されたUID / GIDをシステムアカウントとして扱うのはおそらく最も安全な選択です。UID_MIN
UID_MAX
SYS_UID_MIN
SYS_UID_MAX