私の知る限り、下位のUIDとGIDは、連続した範囲を形成するようにアカウントに割り当てられます。
範囲はデフォルトで100000から始まり、おそらくUID/GIDの理論上の最大値まで拡張されます(シェルからこれを照会する方法が見つからない場合でも、/etc/login.defs
は、ツールに許可されている値のみをリストします)。
さて、範囲が100000の倍数で始まるとしたら、人間としての私にとってはるかに便利です。つまり、n*100000
n
は正の整数(n>0
)、 の代わりに 100000+n*65536
。このようにして、どのファイルがどのホストユーザーによって所有されているかをすぐに確認できます。
現代の十分な方法で従属UID/GIDの割り当てに影響を与える方法はありますかshadow-utils
より人間が読める形式の割り当てを実現するには?
そうでない場合は、単にファイルを上書きしても大丈夫ですか/etc/subuid
および/etc/subgid
必要なものを取得するための適合データを使用しますか?
はい、これは/etc/login.defs
、SUB_UID_MIN
、およびSUB_UID_MAX
パラメーターとそれらのSUB_UID_COUNT
対応するパラメーターを使用してSUB_GID_*
で構成できます。
これらのパラメータはすべてlogin.defs
(5)のマニュアルページで説明されていますが、このドキュメントに記載されているデフォルト値はすべてのプラットフォームに当てはまるわけではありません。
マニュアルページによると、説明したものと同様の動作をデフォルトで使用し、範囲を10000の倍数に設定する必要があります。ただし、これにより、特定のプラットフォームでUIDおよびGIDが65000を超えると影響を受ける一部のシステムアカウントおよびグループで問題が発生します(たとえば、Debianおよび派生物)。したがって、デフォルトの範囲65536は、ご存知の副作用で適用されています。
したがって、より人間が読める範囲を取得するには、/etc/login.defs
ファイルで以下の値を明示的に設定できます。
SUB_UID_MIN 100000
SUB_UID_MAX 600100000
SUB_UID_COUNT 100000
SUB_GID_MIN 100000
SUB_GID_MAX 600100000
SUB_GID_COUNT 100000
ちなみに、ファイル/etc/subuid
と/etc/subgid
は実際に手動で編集できますが、範囲が重複しないようにし、プロセス、ファイル、またはその他のオブジェクトの所有権を混乱させないようにしてください。つまり、実際にレンジを使用する前に行うのは安全ですが、その後は特別な注意が必要になります。
usermod
コマンドを使用して、SUBUIDおよびSUBGIDに特定のFIRSTおよびLAST値を設定できます。例えば:
user=<insertusername>
uid=$(id -u $user)
Sudo usermod -v $((uid+200000))-$((uid+200000+65535)) -w $((uid+200000))-$((uid+200000+65535)) $user
これにより、/ etc/subuidおよび/ etc/subgidに必要な値のエントリが追加されます。見る man usermod
詳細については。