[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.6 chown, chgrp, chroot, id: ユーザ名かユーザ ID かを明確にする

chown, chgrp, chroot, id といったコマンドでは、引数として ownergroup を渡す際に名前で指定しても、ID 番号で指定してもよい。 この指定法が曖昧であることは明らかである。 もし、ユーザ名やグループ名が数字の連続だったら、どうだろう? (1) コマンドはそれをユーザ名と解釈すべきだろうか? ID 番号と解釈すべきだろうか? POSIX では、「こうしたコマンドは、指定された文字列をまず名前として解決することを試み、 それに失敗した場合のみ、ID 番号として解釈しようとすること」と規定している。 この規定では、ユーザが引数として ID 番号、たとえば 42 を指定しようとすると、 面倒な話になる。42 というユーザ名が存在し、それにユーザ ID 番号として別の数字、 たとえば 1000 が割り当てられているといったややこしい状況でも、 うまく処理できなければならないとすると、厄介なことになるのだ。 単に chown 42 F を実行したのでは、ファイル ‘F’ の所有者の ID 番号が 1000 になってしまう。これはユーザが意図した動作ではない。

GNU の chown, chgrp, chroot,id は、この問題に対する回避策を用意している。この回避策を使用すると、 データベースの検索を省略するので、処理速度が著しく向上することがあるというおまけまで付く。 ユーザやグループに ID 番号を指定する際には、その前に ‘+’ を付けさえすればよい。そうすれば、整数として解釈するように強制できるのである。

 
chown +42 F
chgrp +$numeric_group_id another-file
chown +0:+0 /

+’ が前に付く各文字列に対しては、ユーザ名の検索プロセスが省略される。 何故なら、‘+’ を含む文字列が有効なユーザ名やグループ名であることは絶対にないからだ。 この書き方は、よく使われているたいていの Unix システムで使用できるが、Solaris 10 では使用できない。


This document was generated on June 7, 2022 using texi2html 1.82.