Почему файлы, созданные root, получают неправильные разрешения в общем каталоге samba?

Это, кажется, делает это. Будучи простой одной строкой awk, он должен довольно быстро работать с файлом строк размером 1,2 млн. Создав фиктивный файл из 1,3 млн строк на основе вашего образца, я увидел, что он был завершен за 24 секунды на базовой виртуальной машине CentOS 7 с 4 ГБ памяти и GNU Awk 4.0.2.

Чтобы получить точные ответы от StackExchange, вы можете опубликовать свой образец ввода на pastebin вместе с образцом вывода.

$ awk '{printf "%s %-6s%-81s%-12s%-12s%s\n",$1,$2,gensub(/[0-9.-]* +[0-9.-]* +[0-9]$/,"","g",substr($0,10)),$(NF-2),$(NF-1),$NF}' inp | head
AD AD100 Canillo                                                                          42.5833     1.6667      6
AD AD200 Encamp                                                                           42.5333     1.6333      6
AD AD300 Ordino                                                                           42.6        1.55        6
AD AD400 La Massana                                                                       42.5667     1.4833      6
AD AD500 Andorra la Vella                                                                 42.5        1.5         6
AD AD600 Sant Julià de Lòria                                                              42.4667     1.5         6
AD AD700 Escaldes-Engordany                                                               42.5        1.5667      6
AR 3636  POZO CERCADO (EL CHORRO (F), DPTO. RIVADAVIA (S))  Salta A                       -23.4933    -61.9267    3
AR 4123  LAS SALADAS Salta A                                                              -25.7833    -64.5       4
AR 4126  BARADERO Salta A                                                                 -26.0833    -65.263     3
$

Попробуйте онлайн!

0
29.07.2020, 16:45
1 ответ

Почему разрешения установлены такими, какие они есть?

Когда программа в стиле Unix -создает новый файл, она указывает для него исходные разрешения. Эти начальные указанные разрешения обычно имеют значение 0666или rw-rw-rw-для обычных файлов и 0777или rwxrwxrwxдля каталогов или исполняемых файлов. Это то, что закодировано прямо в каждой программе и не может быть легко изменено.

Но эти первоначальные разрешения не будут применяться непосредственно к новому файлу. Операционная система сначала удалит все биты разрешения, установленные в значении umask. У вашего пользователя sadminесть umask 0002, что соответствует -------w-, т.е. он только выбивает бит записи для "других" пользователей и разрешает все права, запрашиваемые программой для владельца файла, а также для группы пользователей файл принадлежит. Это приводит к разрешениям rw-rw-r--для обычных файлов и rwxrwxr-xдля каталогов и исполняемых файлов.

С другой стороны, ваша учетная запись rootимеет umask 0022, что соответствует ----w--w-, поэтому доступ на запись будет закрыт для всех, кроме фактического владельца файла. Это приводит к разрешениям rw-r--r--для обычных файлов,и rwxr-xr-xдля каталогов и исполняемых файлов. Как правило, это хорошо, так как файлы, принадлежащие пользователю root, но доступные для записи кому-то еще, могут упростить некоторые эксплойты безопасности. Это значение umask позволит избежать случайного создания таких файлов.

Но почему существующие файлы могут изменяться при редактировании root? Ну, это зависит от того, что именно делает ваш текстовый редактор. Некоторые текстовые редакторы изначально создают новый временный файл (, чтобы они могли сохранить ваши изменения, если вы работаете удаленно и во время редактирования теряется сетевое соединение ), а когда вы «сохраняете», они на самом деле просто удаляют исходный файл и переименовать отредактированную временную копию как оригинал. Некоторые редакторы могут сохранять права/право собственности исходного файла в процессе, но не все из них. Некоторые редакторы можно настроить так, как вам нужно.

Что вы можете с этим поделать?

Вы можете изменить umask root на 0002 с помощью простой команды umask 0002только для одного сеанса. Или вы можете добавить команду в соответствующий сценарий запуска оболочки -, чтобы сделать его постоянным для root. Но ни один из них на самом деле не рекомендуется, так как это делает вашу корневую учетную запись более уязвимой для эксплойтов безопасности.


Если ваша файловая система поддерживает списки ACL (и эта поддержка была включена в настройках файловой системы по умолчанию или параметрах монтирования -в современной CentOS она, вероятно, включена по умолчанию ), вы можете установить ACL по умолчанию в каталоге, что фактически заменит настройку umaskтолько для этого конкретного каталога:

 setfacl -m d:u::rwx,d:g::rwx,d:o::rx /srv/servers/spi

Любые новые подкаталоги -, созданные, когда это действует, автоматически наследуют ACL по умолчанию, точно так же, как это происходит с битом setgid.

Если в вашем общем ресурсе уже есть подкаталоги -, вы можете сделать это для всех каталогов в пределах всего дерева каталогов /srv/servers/spi:

find /srv/servers/spi -type d -exec setfacl -m d:u::rwx,d:g::rwx,d:o::rx {} \+

В качестве еще одного варианта:если вы следуете передовым методам администрирования, вам не следует входить в систему как root, поэтому вы, вероятно, входите в свою личную учетную запись, а затем используете sudoили su, чтобы стать пользователем root.

Вы уже предоставили доступ на запись в этот каталог группе sambashare, так что вы можете просто добавить свою личную учетную запись в группу sambashare, и тогда вам не нужно быть root, чтобы вносить изменения в общие каталоги -и для лучшей подотчетности в идеале не следует вносить изменения от имени пользователя root, если вы можете сделать это, используя свою личную учетную запись. Если в этой системе включено ведение журнала аудита, то журналы аудита в /var/log/auditбудут напрямую показывать, кто -делал -что -и когда, что может быть чрезвычайно важно в некоторых ситуациях.

Как правило, лучше всего, чтобы группы пользователей и права доступа к файлам отражали реальность того, кому разрешено и ожидается изменение вещей, чтобы каждый мог выполнять обычные дневные -–-повседневные дела, используя свои личные учетные записи пользователей, вместо обычного использования учетной записи root для всего.

0
18.03.2021, 23:16

Теги

Похожие вопросы