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)
シェルスクリプトから。