だから正直に言って、これは宿題なのですが、コンピュータに穴を開けると思います。オンラインで探してみましたが、質問が間違っているかどうか。
デフォルトでは、私はbashスクリプトを作成してファイルを生成し、グループをインポートしてファイルとして印刷し、1行ずつ印刷する必要があります。
タッチで簡単にファイルを作成できます。
touch /dir/output.txt
私はコードが次のようになると思います。
for each group member in group length
printf "name,password,group" >> /dir/output.txt
私の質問は、このファイルにグループメンバーシップを印刷する方法です。
挨拶、
精神的に疲れた学生。
ベストアンサー1
グループのメンバーを一覧表示するには、group
NSSデータベースにグループ名を照会して、gidとメンバーをインポートする必要があります。
passwd
また、そのgidを持つユーザーを確認するには(ユーザー)データベースに問い合わせる必要があります。とともに:
group_name=somegroup
awk -F: '
!groups_processed {
gid[$3] # record gid in gid hash
split($4, members, ",") # extract members
for (i in members) users[members[i]] # unique members listed as
# keys of users hash
next
}
$4 in gid {
users[$1] # also record users with corresponding gid
}
END {
for (i in users) print i
}' <(getent -- group "$group_name") \
groups_processed=1 \
<(getent passwd) | sort
通常、データベースにはグループ名ごとに1つのエントリしかありませんが、複数のデータベース(ファイルやLDAPなど)があるシステムではより多くのエントリが見つかる可能性があります。これには、ベストプラクティスでもそうでないかもしれないすべてのGIDが記録されます。さらに、他のグループは同じGIDを持つことができます。ここには、同じ GID を持つ別のグループのメンバーとしてリストされたユーザーは含まれません。
1 GNUシステムでは、getent group
これらすべてが個別にリストされていますが、getent group thegroupname
そのうちの1つだけが返されることがわかりました。