web-dev-qa-db-ja.com

touchコマンドでファイルのアクセス許可を設定する方法

touchを使用してファイルを作成するたびに、権限が-rw-r--r-に設定されているようです。

touchを使用してアクセス許可を構成する方法はありますか、または別のコマンドを使用してこれを実行する必要がありますか?

17
chackerian

umaskを変更して、(ほとんどの実装で)より多くの読み取り/書き込み特権を許可することができますが、実行可能ではありません。通常、要求される権限は0666です。

umask022の場合、touch0644ファイルを作成することがわかります。

興味深いことに、 [〜#〜] posix [〜#〜] は、creatの観点からこの動作を説明しています。

  1. ファイルが存在しない場合:

    creat() 関数は、次の引数で呼び出されます。

    • Fileオペランドは、パス引数として使用されます。

    • S_IRUSRS_IWUSR、-のビット単位の包含[〜#〜]または[〜#〜]の値S_IRGRPS_IWGRPS_IROTH、およびS_IWOTHがモード引数として使用されます。

creat、次にopenへのリンクをたどって、umaskに言及し、open(およびcreat)は、umasktouchに影響を与えるはずであることを確認します。

umasktouchコマンドのみに影響するようにするには、サブシェルを使用します。

(umask 066; touch private-file)
(umask 0; touch world-writable-file)
touch file-as-per-current-umask

(いずれの場合でも、ファイルが事前に存在していた場合、touchはその権限を変更せず、タイムスタンプを更新するだけです)。

27
Thomas Dickey

umaskを操作できます。通常、これは022に設定されます。つまり、ユーザーがファイルを作成すると、0644の権限が付与され、必要に応じてumaskを操作できます。

2
TarunSinghal