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

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

chown, chgrp, chroot, id といったコマンドでは、引数として owner や group を渡す際に名前で指定しても、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.