グループメンバーは、reiserfs および拡張 ACL を使用してグループ書き込み可能ファイルに書き込むことはできません。

グループメンバーは、reiserfs および拡張 ACL を使用してグループ書き込み可能ファイルに書き込むことはできません。

ユーザーvirust共有グループはrust特定のファイルを共有しようとします。

rust$ ls -l myfile 
-rw-rw-r-- 1 vi rust 0 May 30 03:48 myfile
rust$ stat myfile  | grep Gid
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      vi)   Gid: ( 1057/    rust)
rust$ id
uid=1048(rust) gid=1057(rust) groups=1057(rust),...

rust$ cat myfile
rust$ touch myfile 
touch: cannot touch ‘myfile’: Permission denied
rust $ dd of=myfile 
dd: failed to open ‘myfile’: Permission denied

vi$ id
uid=1000(vi) gid=1000(vi) groups=1000(vi),{many unrelated groups skipped},1057(rust),{many unrelated groups skipped}
vi$ touch myfile
vi$ 

g + wにもかかわらず、「vi」ユーザーだけがファイルへの書き込み権限を持ちます。

root# chown rust myfile
rust$ ls -l myfile 
-rw-rw-r-- 1 rust rust 0 May 30 03:51 myfile
vi$ touch myfile
rust$ chmod g-w myfile
vi$ touch myfile 
touch: cannot touch ‘myfile’: Permission denied

vi書き込み可能rustファイルはg + wビットによって異なります(例外)。

グループ書き込み可能ビットが一方向にしか動作しないのはなぜですか?

モードでもファイルは使用できませんa+w。 3人目のユーザーはファイルに書き込むことができますがa+w...

getfacl myfile返品Invalid argument

このファイルはローカル reiserfs にあります。

id viそして、各ユーザーのシェルで関連付けられていないグループの順序をid rust一致させます。id


もう一つの実験:

vi$ chmod a+w myfile
vi$ stat myfile
  File: ‘myfile’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fb02h/64258d    Inode: 12618147    Links: 1
Access: (0666/-rw-rw-rw-)  Uid: ( 1000/      vi)   Gid: ( 1057/    rust)
Access: 2016-05-30 18:49:20.000000000 +0300
Modify: 2016-05-30 20:48:23.000000000 +0300
Change: 2016-05-30 20:48:23.000000000 +0300
 Birth: -
ルーツ#ダイビング-J -uさびた-gさびた - id
uid=1048(ラスティ) gid=1057(ラスティ) グループ=1057(ラスティ)
ルート#ダイブ-J -u錆-g錆 - dd of=/home/vi/home/rust/myfile
dd: '/home/vi/home/rust/myfile' を開けません: 権限が拒否されました。

ルート#ダイビング-J -u錆-g 99999 - id
uid=1048(rust) gid=99999 グループ=99999
root# dive -J -u Rust -g 99999 - dd of=/home/vi/home/rust/myfile
食品医薬品安全庁
0+1レコード
0+1 レコード出力
9バイト(9B)、1.14971秒、0.0kB /秒コピー

ミステリー。 grsecurityパッチが問題になるのでしょうか?


次の実験:

root# stat /home/vi/home/rust/myfile
  File: ‘/home/vi/home/rust/myfile’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fb02h/64258d    Inode: 13848412    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (99997/ UNKNOWN)   Gid: (99998/ UNKNOWN)
Access: 2016-05-31 00:39:24.000000000 +0300
Modify: 2016-05-31 00:39:24.000000000 +0300
Change: 2016-05-31 00:39:24.000000000 +0300
 Birth: -
root# getfacl /home/vi/home/rust/myfile
getfacl: /home/vi/home/rust/myfile: Invalid argument
root# for i in {0..1099}; do if dived -J -u $i -g 99998 -- touch /home/vi/home/rust/myfile 2> /dev/null; then echo $i; fi; done
0
1000
root# 
root# 
root# mount -o remount,noacl /home
root# 
root# for i in {0..1099}; do if dived -J -u $i -g 99998 -- touch /home/vi/home/rust/myfile 2> /dev/null; then echo $i; fi; done | head
0
1
2
3
4
5
6
7
8
9
(and so on, basically it works)
root# mount -o remount,acl /home
root# 
root# for i in {0..1099}; do if dived -J -u $i -g 99998 -- touch /home/vi/home/rust/myfile 2> /dev/null; then echo $i; fi; done | head
0
1000
root# 

getfacl(またはカーネル部分)問題があるようです。 ACLは有効ですが管理できません。

答え1

問題は、LinuxでReiserFSが無視されることです。https://bbs.archlinux.org/viewtopic.php?id=197628

カーネル4.4.xのreiserfsでACLが破損しています(無効なパラメータエラー)。 4.3.xは私にとってうまくいきます...

4.4以降、カーネルに入る方法を確認していません。

ファイルシステムから破損したACLを削除するには、<4.4カーネルで再起動する必要があります。

関連情報