член группы не может записать файл с возможностью записи в группу с помощью reiserfs и расширенных списков ACL

Пользователи vi и rust разделяют 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$ 

Только пользователь «vi» имеет доступ на запись к файлу, несмотря на g + w.

 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 gw myfile vi$ touch myfile touch: cannot touch 'myfile': Permission denied 

vi может или не может записать файл rust зависимости от g + w бит, как исключено.

Почему бит, записываемый группами, работает только в одном направлении?

Файл остается недоступным даже в a+w . Третий пользователь может записать в файл с 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: - 
 root # dived -J -u rust -g rust - id
 uid = 1048 (ржавчина) gid = 1057 (ржавчины) группы = 1057 (ржавчина)
 root # dived -J -u rust -g rust - dd of = / home / vi / home / rust / myfile
 dd: не удалось открыть '/ home / vi / home / rust / myfile': Permission denied

 root # dived -J -u rust -g 99999 - id
 uid = 1048 (ржавчина) gid = 99999 групп = 99999
 root # dived -J -u rust -g 99999 - dd of = / home / vi / home / rust / myfile
 sfdasafd
 0 + 1 записей в
 0 + 1 записывает
 Скопировано 9 байтов (9 B), 1.14971 с, 0,0 кБ / с

Загадка. Могут ли проблемы с 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 действуют, но не управляемы.

One Solution collect form web for “член группы не может записать файл с возможностью записи в группу с помощью reiserfs и расширенных списков ACL”

Проблема в том, что ReiserFS игнорируется в Linux: https://bbs.archlinux.org/viewtopic.php?id=197628

ACL поврежден в reiserfs от Kernel 4.4.x (ошибка неправильного аргумента) 4.3.x отлично работает для меня …

Я еще не проверял, как идти в ядрах после 4.4.

Нужно перезагрузить ядро ​​<4.4, чтобы иметь возможность удалить сломанные ACL из файловой системы.

Linux и Unix - лучшая ОС в мире.