
実際にログインできるシステムアカウントを作成しなくても、ユーザー名をユーザーIDに関連付けるために使用できる標準化されたメカニズムはLinuxにありますか?
Windows サーバーに接続し、ユーザーに UID を提供する機能を考慮すると、これが可能になります。通常、より高い範囲の数字にあります。
私に必要な/必要なのは、子IDだけで存在するグループとユーザーに意味のある名前を割り当てることです(ユーザー名)。
関連することをすることでこのことができると思います。国家安全保衛部(5)ところで手ぶらで来ました。
いくつかの背景
ホストシステムでは通常64k UID(およびGID)が使用されますが、0..2^32-1
範囲は書くことができるユーザーID。したがって、範囲全体のサブ範囲を特定のユーザーのサブIDとして割り当てることができます。たとえば、スコープがルートネームスペースのユーザー100000..2^32-1
に割り当てられているとします。root
LXCの場合(長沙)、ルートネームスペースを持つユーザーを使用します。所有者100000..165535
サブIDはサブネームスペースにマップされるため、サブネームスペース内のホストのUID範囲はで表されます0..65535
。
したがって、ファイル所有者はroot
~へサブネームスペースは、UID 100000が所有しているように見えます。ホストから。
したがって、実際にユーザーアカウントを作成しなくても、ホストシステムがこの「仮想」UID 100000に意味のある名前を割り当てることができる場合は非常に役立ちます。
これが私が探しているものです。
今は回避策としてこのヘルパースクリプトを使用しています。 StackExchangeまたはパブリックドメイン/CC0規約に記載されている条件に従って自由に使用してください。
#!/usr/bin/env bash
LXCPATH=$(lxc-config lxc.lxcpath)
function create-group
{
local NAME=$1
local GUEST=$3
local GUESTCONF="/etc/lxc/guests/lxc.$GUEST.conf"
local BASEID=$(awk '$1 ~ /^lxc\.id_map$/ && $3 ~ /^g$/ {print $5}' "$GUESTCONF" || echo "0")
local ID=$(($2+$BASEID))
echo "groupadd -g $ID $NAME"
}
function create-user
{
local NAME=$1
local GUEST=$3
local GUESTCONF="/etc/lxc/guests/lxc.$GUEST.conf"
local BASEID=$(awk '$1 ~ /^lxc\.id_map$/ && $3 ~ /^u$/ {print $5}' "$GUESTCONF" || echo "0")
local ID=$(($2+$BASEID))
echo "useradd -M -N -u $ID -s /usr/sbin/nologin $NAME"
}
function create-entry
{
local GUEST=$1
local DATABASE=$2
local FUNCTION=$3
local entry; local NAME; local ID
for entry in $(awk -F : '{print $1 ":" $3}' "$DATABASE"); do
NAME=$GUEST.${entry%:*}
if getent ${DATABASE##*/} $NAME; then
echo "Entry $NAME (${DATABASE##*/}) already exists"
else
$FUNCTION $NAME ${entry#*:} $GUEST
fi
done
}
for guest in $(lxc-ls -1); do
create-entry $guest "$LXCPATH/$guest/rootfs/etc/group" create-group
create-entry $guest "$LXCPATH/$guest/rootfs/etc/passwd" create-user
done|sort -u|while read cmd; do
echo "$cmd"
$cmd
done
awk
(mawk
またはgawk
)、、、、、bash
がgetent
必要groupadd
ですuseradd
。この行をコメントアウトすると:
$cmd
実行するすべてのコマンドの出力を取得できます。ユーザーとグループIDを昇順に追加します。ただし、lxc.id_map
エントリがLXCゲスト名を付けたファイルにあり、ファイル名がスキーマに従うと仮定します/etc/lxc/guests/lxc.${guestname}.conf
。この設定を調整したい場合があります。
ゲストにユーザーを追加すると、スクリプトを再実行できます。
これは