[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.