umask 値の変更

umask 値の変更

umask特定のユーザーの値を022から002に変更したいと思いますjboss。 /etc/profileの設定は次のようになります。

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
 else
umask 022
fi

変更すると/etc/profileすべてのユーザーに影響しますが、そのユーザーの設定のみを変更したいと思いますjboss。これを行うには、.basrhrc/.bash_profileユーザーのホームディレクトリを編集できます。しかし、私にとって問題は、ユーザーにシェルがないことです。umaskシェルを持たないユーザーに設定されたすべての方法。

答え1

これはumaskユーザーではなくプロセスの属性です。

これは子によって継承され、コマンドの実行(setuidコマンドも含む)全体にわたって持続します。

umask()システムコールを介して設定されます。このシステムコールumask()へのシェルインタフェースはumask組み込みコマンドです。

プロセスがuidを変更するたびにumaskを変更する魔法のような方法はありませんが、uidを変更するために一般的に使用される構成可能ないくつかのプログラムがあります。少なくともLinuxでは、PAMスタック(通常はログインプログラム)を使用するか、モジュールpam_umaskまたはsudo

しかし、ここではユーザーにシェルがないことを考えると、ログインしたユーザーではないように見え、実際にそのユーザーとして特定のソフトウェアを実行してそのumaskを所有しようとしています。その場合は、ソフトウェアを実行するだけです。

(umask 002; exec that-software)

シェルスクリプトから。

関連情報