制限が厳しいumaskにもかかわらず、ホームディレクトリのファイルが誰でも書き込み可能なファイルとして作成されるのはなぜですか?


10

新しいファイルとディレクトリの権限が少し奇妙に振舞うことに気づきました。まず第一に、umaskは正しい答えを返すようです:

$ umask
0002

これは、私のユーザーと私のグループには完全なアクセス権があり、残りの世界には書き込みアクセス権がなく、suidがないことを意味します。しかし、$ HOMEにファイルを作成すると、次のようになります。

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

つまり、すべてのユーザーに書き込みアクセス権を付与します。ディレクトリでも同じことが起こります:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

これは、0002ではなくumask 0000と同じだと思います。デフォルトの0002または0022を変更するumaskのインスタンスをすべての/ etcで検索しましたが、何も見つかりませんでした。これはデフォルトのCentOS 5.5インストールです。これが起こっている理由のヒントはありますか?


3
ホームディレクトリはどのファイルシステムタイプですか?
mattdm 2011年

4
そして、あなたはどのように作成testfileしていtestdirますか?
mattdm 2011

3
@mattdm、あなたは主張するのが正しかった:それはXFSだ。/ home、/ var、その他いくつかに別々のボリュームがあることを忘れていました。私はXFSを頻繁に使用し、この動作を確認していませんでした。どのように関連付けることができますか?
rsuarez 2011年

2
aclはローカルでumaskをオーバーライドできます。ディレクトリがaclでマウントされている可能性はありますか?
Faheem Mitha

3
うーん、どうやらxfsでは常にaclが有効になっています。/ etc / fstabに表示されない場合があります。パーティション/ディレクトリでgetfaclを実行してみてください。
Faheem Mitha、2011年

回答:


3

自分の質問に答えるのが適切かどうかわかりません。編集者は、そうでない場合はこれについて助言してください。前もって感謝します。

私はこの謎を解決したと思います。問題は、XFSボリュームにデフォルトのACLがないことでした。以下は、影響を受けるディレクトリの1つである/ srv / backupsのACLエントリです。

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

「mkdir test」または「touch testfile」を実行したときはいつでも、アクセス許可777が表示されました。

setfacl -m d:u::rwx /srv/backups

ACLを次のように残します。

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

以前は(おそらく)ACLはありませんでしたが、現在はあります。「ls -l」を実行すると、アクセス許可に「+」記号が表示されます。そして魔法のように、「mkdir test」と「touch testfile」は期待される権限で動作します。

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

これがなぜ起こるか私は知りません。XFSはデフォルトのACLがないことを嫌い、それが発生すると奇妙な動作をします。また、これはCentOSでのみ発生し、Debian / Ubuntuでは発生しないことも確認しました。多分それはカーネルのXFSバージョン、またはそのようなものに関連しています。わからない

とにかく、それは私のためにケースを解決します。すべての提案に感謝します:-)


あなた自身の質問に答えることは完全に受け入れられます。
キーストンプソン、

0

creat呼び出しでは、umaskよりも優先されるアクセス許可を明示的に指定できます。

作成方法に回答していませんtestfile,testdir

を使用してファイルを作成しtouch testfile、権限をリストして投稿する


遅れて申し訳ありません。「touch testfile」と「mkdir testdir」を使用してテストを行いましたが、同様の結果が得られました。彼らはパーミッション777で作成されているためumaskが、「0000」に設定されているようだ
rsuarez

0

getfacl .テストファイルを作成しているディレクトリでを試して、権限に影響を与えるデフォルトのACLがあるかどうかを確認します。


1
いいえ、デフォルトのACLはありません。XFSボリュームでのみ発生するため、XFSに何らかの関係があるようです。どっちにしても、ありがとうね。
rsuarez '20

-1

/etc/login.defsでUSERGROUPS_ENAB変数を探します

それらを無効にするためのコメント#USERGROUPS_ENABはい

現在のユーザーのumaskも変更する場合は、最初に前の手順を中止して、次の操作を実行する必要があります。

027の例

echo "umask 027" >>〜/ .bashrc && pkill -KILL -u your_username_here

echo "umask 027" >>〜/ .bashrcこのコマンドは、プロファイルにumaskのデフォルト値を設定します

これにより、ログアウトする必要があります

再度ログインした後

もう一度umaskコマンドを実行して、うまくいくかどうかを確認してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.