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