ログインしないすべての非対話型シェルコマンドの前に umask を設定します。

ログインしないすべての非対話型シェルコマンドの前に umask を設定します。

私はSSHサーバーに接続するためにPHPスクリプトを使用しています。コマンドを実行して終了します。非対話型および非ログインのシェルに接続します。そのため、ファイルがロードされて.bashrcいないか、そこから正しく設定.bash_profileできません。 sshの内部動作に関する情報を検索してみると、sshが接続された後にファイルを使用していくつかのコマンドを実行umaskできるようです。~/.ssh/rc私のもの~/.ssh/rc サーバー上私は次に接続しています:

#!/bin/bash

echo "Setting umask to 002"
umask 002
echo "Umask set"

問題は私のumaskが間違って設定されていることです。スクリプトを実行してumaskサーバーでコマンドを実行すると、0022umaskが表示されます。

Run: cd /local/web/ && umask
> Setting umask to 002
> Umask set
> 0022

なぜ動作しないのですか?

ベストアンサー1

umask組み込みコマンドで実行した場合のみ有効です。

スクリプトを名前で呼び出すのではなく、. script現在のシェルプロセスで実行するように呼び出します。

0022ただし、印刷された値が混乱している場合は022違いがなく、値は同じです。

より理解しやすい出力のためにPOSIXを試してくださいumask -S

おすすめ記事