「id -r」コマンドの適切な構文

「id -r」コマンドの適切な構文

's や'sid -rの有無にかかわらず、システムにログインしたユーザーの UID またはユーザー名が出力されるかどうかを確認しようとしています。これを行うことで、ユーザーの責任をもう少し明確にし、それに応じてスクリプトの機能をカスタマイズできます (つまり、スクリプトで sudo を発行すると、ログインしたユーザーのホーム ディレクトリから情報が取得されます)。susudo

sudo設定されていることは理解していますSUDO_USERが、これはユーザーが変更できる変数であり、最新の sudo を発行したユーザーのユーザー名だけが含まれるため (つまり、sudo -i ; sudo -iu randomUser ; echo $SUDO_USER実際のユーザーではなく「root」が出力される)、これに依存したくありません。

マニュアル ページやオンラインで見つけたものには、このコマンドの適切な使用方法が示されていないようで、明らかな組み合わせは機能しません。

[root@ditirlns03 ~]# id -r
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r jadavis6
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r root
id: cannot print only names or real IDs in default format

id -rこの時点では、何を印刷すればよいのかまだわかりません。何を印刷すればよいのかまったくわからないからです。

答え1

-r他のオプションと組み合わせて使用​​する必要があります。例:

$ id -Gr
1000 4 24 27 30 46 109 124

man ページからの引用:

-r, --real
print the real ID instead of  the  effective  ID,  with -ugG

答え2

プログラムとドキュメントは標準的な方法から逸脱しています:

-ugGが実際に意味する場合-u|g|G[modifier](明らかにその通りです)、そのように文書化する必要があります。著者は、その労力に見合う価値があるとは考えていなかったようです。ただし、ユーザーが同じことを行う場合 (デイビス氏がかなり合理的に試みたように)、次のようになります。

-ru正当かつ直感的な仮定ですが、エラーが返されます。

このヒントに関連して:

stat -c "%U" $(tty)

おそらく、それがシェル固有であることを言及しておくと役立つでしょう。

答え3

  • ユーザーIDを印刷する:id -u
  • ユーザー名を印刷する:id -u -n

もっと傾いてみてくださいman id

関連情報