Что различные пути состоят в том, чтобы установить полномочия файла и т.д. на гну/Linux

Я думаю, что Вы имеете в виду бит "SGID" файла, который не является тем же как его GID.

Вот типичный файл на моем компьютере (вывод ls-l):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

Если Вы смотрите на первые 10 символов,

(a)-: Это - просто простой файл (в противоположность каталогу, символьной ссылке, канал и т.д....)

(b) rw-: владелец может считать и записать этот файл, но не выполнить его. Владельцем является "Бристоль", как Вы видите позже в строке.

(c) r-: члены группы, этот файл принадлежит ("пользователи" в примере) кроме владельца, могут читать, но не записать или выполнить этот файл.

(d)---: Кто-либо еще не может получить доступ к этому файлу вообще (кроме корня, конечно).

Поле GID является тем, которое говорит Вам, которые группируются, этот файл принадлежит - в этом случае "пользователи".

Поле, которое Вы, вероятно, имели в виду, на основе Вашего описания, является SGID, укусил и здесь лучшее объяснение, чем я мог придумать:

http://www.codecoffee.com/tipsforlinux/articles/028.html

Короткая версия: если исполняемый файл имеет набор битов SGID, то любой, кто не находится в группе, но может выполнить этот файл временно, получает права этой группы, в то время как программа выполняется.

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

19
28.06.2016, 20:31
2 ответа

chmod: биты режима файла изменения

Использование (восьмеричный режим):

    chmod <octal-mode> files...

Использование (символьный режим):

    chmod <references><operator><modes> files..

references комбинация букв ugoa, которые указывают который доступ пользователя к files будет изменен:

  • u пользователь, который владеет им
  • g другие пользователи в file'S Group
  • o другие пользователи не в группе файла
  • a все пользователи

    Если опущенный, это принимает значение по умолчанию всем пользователям, но только полномочиям, позволенным umask изменяются.

    operator один из символов +-=:

    • + добавьте указанные биты режима файла к существующим битам режима файла каждого file
    • - удаляет указанные биты режима файла к существующим битам режима файла каждого file
    • = добавляют указанные биты и удаляют неуказанные биты, кроме setuid и setgid набор битов для каталогов, если явно не указано.

    mode состоит из комбинации букв rwxXst, которые указывают, какой бит полномочий должен быть изменен:

    • r читать
    • w записать
    • x выполнитесь (или ищите каталоги),
    • X выполняйтесь/ищите, только если файл является каталогом или уже имеет, выполняют набор битов для некоторого пользователя
    • s setuid или setgid (в зависимости от указанного references)
    • t ограниченный флаг удаления или липкий бит

    С другой стороны, mode может состоять из одной из букв ugo, в этом случае случитесь, режим соответствует разрешениям, в настоящее время даваемым владельцу (u), член file'S Group (g) или полномочия пользователей ни в одной из предыдущих категорий (o).

Различные биты chmod объясненный:

  • Управление доступом (см. также setfacl)
    • rwx — читайте (r), запишите (w) и выполнитесь/пересеките (x) полномочия.
      • Read(r) влияет, если файл может быть считан, или если каталог может быть перечислен.
      • Запишите (w) влияние, если файл может быть записан в, или если каталог может быть отредактирован (добавленные файлы, удаленные, переименованные).
      • Выполнитесь (x) влияние, если файл может быть выполнен, используйте для сценариев (см. #!), и другие исполняемые файлы.
      • Крест (x) влияние, если каталог может быть пересечен.
    • s и t — липкий бит (т) и setgid (s) на каталогах
      • Липкий бит только влияет на каталоги. Предотвратит любого кроме владельца файла и корня, от удаления файлов в каталоге.
      • setgid обдумал каталоги, заставит новые файлы и каталоги устанавливать группу на ту же группу и новые каталоги, чтобы иметь там setgid набор битов (см. также значения по умолчанию в setfacl).
    • s — setuid, setgid, на исполняемых файлах.
      • Это может влиять на безопасность плохим способом, если Вы не знаете то, что Вы делаете.
      • Когда исполняемый файл выполняется, если один из этих битов будет установлен, то эффективный пользователь/группа исполняемого файла станет пользователем/группой файла. Таким образом прогоны программы как тот пользователь. посмотрите setcap для более современного способа сделать это.

chown chgrp:


chattr: измените атрибуты файла

Использование:

    chattr <operator><attribute> files...

operator один из символов +-=: * + добавляют выбранные атрибуты, чтобы быть к существующему attributes из files * - удаляет выбранный attributes * = перезаписывает текущий набор атрибутов, которые файлы имеют с указанным attributes.

attribute комбинация букв acdeijstuADST, которые соответствуют атрибуты:

  • a добавьте только
  • c сжатый
  • d никакой дамп
  • e формат степени
  • i неизменный
  • j журналирование данных
  • s безопасное удаление
  • t никакое слияние хвоста
  • u неудаляемый
  • A нет atime обновления
  • D синхронные обновления каталога
  • S синхронные обновления
  • T вершина иерархии каталогов

setfattr: измените расширенные атрибуты файла

Использование (атрибут набора):

    setfattr -n <name> -v <value> files...

Использование (удаляет):

    setfattr -x <name> files...

name название расширенного атрибута, чтобы установить или удалить

value новое значение расширенного атрибута


setfacl: измените списки управления доступом к файлу

Использование:

    setfacl <option> [default:][<target>:][<param>][:<perms>] files...

option должен включать одно из следующего:

  • --set установите ACL файла или каталога, заменив предыдущий ACL
  • -m|--modify измените ACL файла или каталога
  • -x|--remove удалите записи ACL файла или каталога

    target одна из букв ugmo (или более длинная форма, показанная ниже):

  • u, users разрешение именованного пользователя, идентифицированного param, значения по умолчанию для регистрации владельца uid если опущено

  • g, group разрешение именованной группы, определенной param, значение по умолчанию к владению группой uid если опущено
  • m, mask эффективная маска прав
  • o, other полномочия других

    perms комбинация букв rwxX, которые соответствуют полномочиям:

  • r читать

  • w записать
  • x выполниться
  • X выполнитесь, только если файл является каталогом или уже имеет, выполняют разрешение для некоторого пользователя

    С другой стороны, perms может быть восьмеричная цифра (0-7) указание на набор полномочий.


setcap: возможности файла изменения

Использование:

    setcap <capability-clause> file 

A capability-clause состоит из разделенного запятыми списка имен возможности, сопровождаемых списком пар флага оператора.

Доступные операторы =, + и -. Доступные флаги e, i и p которые соответствуют Эффективным, Наследуемым и Разрешенным наборам возможности.

= оператор повысит указанные наборы возможности и сбросит другие. Если никакие флаги не даны в сочетании с = оператор все наборы возможности будет сброшен. + и - операторы повысят или понизят один или несколько указанных наборов возможности соответственно.


chcon: файл изменения контекст защиты SELinux

Использование:

    chcon [-u <user>] [-r <role>] [-t <type>] files...

пользователь является пользователем SELinux, такой как user_u, system_u или root.

роль является ролью SELinux (всегда object_r для файлов)

тип является типом предмета SELinux


chsmack: изменитесь ВКУС расширил атрибуты

Использование:

    chsmack -a <value> file

value маркировка ВКУСА должна быть установлена для SMACK64 расширенный атрибут файла


setrichacl: измените богатый список управления доступом.

richacls являются функцией, которая добавит более усовершенствованный ACLs.

В настоящее время происходящая работа, таким образом, я не могу сказать Вам очень о них. Я не использовал их.

См., что также этим вопросом Является там более усовершенствованная файловая система ACLs вне традиционного 'rwx' и POSIX ACL? и страница справочника

28
27.01.2020, 19:45
  • 1
    +1, Если бы Вы добавили примеры использования каждого cmd, этот ответ, был бы чрезвычайно полезен как канонический ответ, на который мы можем сослаться в будущем! –  slm♦ 15.11.2013, 16:46
  • 2
    @slm спасибо за предложение. Я добавил краткое объяснение использования каждой команды. –  Thomas Nyman 18.11.2013, 16:19
  • 3
    предупреждение любому желанию взять возможности далее, чем показанный здесь. Я использовал возможность, как обрисовано в общих чертах здесь. Однако попытка наследовать их (полезно) по ветвлению и должностному лицу кажется невозможной. Я думаю, что существует ошибка, видят unix.stackexchange.com/questions/196483 / … –  ctrl-alt-delor 26.07.2015, 01:12
  • 4
    Ошибка, которую я упомянул в предыдущем комментарии, это было ошибкой дизайна и было зафиксировано в ядре 4.3 с добавлением окружающих возможностей, посмотрите man7.org/linux/man-pages/man7/capabilities.7.html –  ctrl-alt-delor 28.06.2016, 20:25
  • 5
    я хотел бы видеть примеры на всем этом, это станет каноническим ответом! –  statquant 30.04.2017, 21:55

с высокого уровня:

  • разрешения базовой файловой системы, поддерживаемые всеми linux и всеми файловыми системами , которые -rwxrwxrwxобрабатываются chmod,вместе с идентификаторами владельца и группы, привязанными к каждому файлу или папке в файловой системе, обрабатываемой chownи chgrp; все в основном знают это произведение.
  • Расширенные атрибуты файла , которые сокращены или известны как xattr . Это функции файловой системы, которые позволяют пользователям связывать компьютерные файлы с метаданными, не интерпретируемыми файловой системой, тогда как обычные атрибуты имеют цель, строго определенную файловой системой; атрибуты представляют собой пары значений имя :, постоянно связанные с файлами и каталогами, подобно строкам среды, связанным с процессом. Существуют специальные команды Linux, связанные с простой установкой этих метаданных для различных файлов/папок.
  • SELINUX , известный как безопасный Linux . Вы можете найти в Интернете историю на нем. Также знайте, что есть альтернативы SELINUX, такие как AppArmor, и, возможно, есть и другие. На данный момент это модули ядра, которые обеспечивают функциональность и механизмы для выполнения обязательного контроля доступа к MAC ()с использованием xattr; selinux хранит метки безопасности файлов в xattrs . И есть определенные команды, связанные с selinux.

другие ключевые моменты:

  • эра и версия gnu/linux имеет значение в отношении xattr и selinux для того, что доступно и что функционально.
  • сообщается, что не все файловые системы поддерживают xattr; лучше оставить индивидуальному исследованию на основе используемого дистрибутива и версии linux (rhel/suse/debian,irix,solaris,aix,unix 1960-х годов)
  • на самом деле это просто встроенные базовые права доступа к файлам/папкам с uid/gid плюс xattr, которые делают все возможным; SELinux использует xattr для хранения меток безопасности файлов/папок... с selinux вся низкоуровневая работа выполняется/определяется в xattr, чтобы вы могли ее использовать. Поэтому, если ваша древняя файловая система не поддерживает xattr, вы не будете использовать selinux.
  • вы можете включить или отключить selinux (или apparmor или любой другой модуль ядра)
  • в зависимости от вашей версии Linux может включать или отключать xattr для данной смонтированной файловой системы; Я помню в SLES 11 параметр монтирования fstab user_xattr, и я мог выбрать, чтобы xattr не был доступен в корневой файловой системе во время установки; я думаю, что теперь с RHEL / CentOS 7 xattr есть по умолчанию, и вы не можете его не иметь.
  • при выполнении ls, если вы видите -rwxrwxrwx+, что +указывает на наличие расширенного атрибута файла в этом объекте .
  • Список контроля доступа(ACL):— это список разрешений, прикрепленных к объекту. ACL указывает, каким пользователям или системным процессам предоставляется доступ к объектам, а также какие операции разрешены для данных объектов.
  • из centos wiki selinux:selinux — это механизм безопасности MAC, реализованный в ядре; без включенного SELinux для управления доступом пользователей к файлам используются только традиционные методы дискреционного контроля доступа (DAC ), такие как права доступа к файлам или списки контроля доступа (ACL ); Как пользователям, так и программам разрешено предоставлять небезопасные права доступа к файлам другим или, наоборот, получать доступ к частям системы, которые в противном случае не были бы необходимы для нормальной работы; По сути, в традиционной модели DAC есть два уровня привилегий, root и user, и нет простого способа реализовать модель наименьших -привилегий. Многие процессы, запущенные с правами root, позже теряют права на запуск от имени пользователя с ограниченными правами
  • .
  • стоит прочитать, чтобы оценить использование xattr и списков ACL, потому что linux [ядро] рассматривает все как файл (блокирует устройства или сетевые порты )вы можете пометить почти все с помощью xattr и применить некоторые управления доступом через selinux, это не только файлы/папки.https://wiki.centos.org/HowTos/SELinux
  • xattr может вызвать проблемы с перемещением данных между системами и файловыми системами, а также NFS, где [новые] системы имеют более полную поддержку xattr по сравнению со старыми системами, которые могут не распознавать все эти расширенные атрибуты [если вообще]. Помните об использовании tarдля вещей с xattr, если он остается в этой системе, нет проблем, но если он уходит в другое место, могут быть проблемы, если важны xattr (, т.е. samba и копирование между win10 ntfs и linux ext3/4,btrfs,хфс; или туда и обратно между сетевыми устройствами хранения)
  • Если нет selinux или другого механизма, обеспечивающего соблюдение ACL с помощью того, что определено в xattrs, то xattrs теоретически может ничего не значить и быть отброшенным или удаленным, потому что в этот момент это просто дополнительный багаж.
  • будьте осторожны отключите selinux сейчас в rhel/centos 7, потому что, если метки файловой системы через xattr будут потеряны, это вызовет проблемы при изменении selinux обратно на принудительное или разрешающее ; опять же, это зависит от вашей версии Linux и от того, как она использует xattr через selinux.

Базовый общий ресурс Samba не работает в RHEL/CentOS 7... потому что selinux по умолчанию настроен на принудительное выполнение; selinux запрещает все, пока вы не разрешите это, поэтому либо отключите selinux (bad ), либо установите разрешающий. Если вы оставите selinux в качестве принудительного, то вы должны пометить папку, которую вы хотите использовать samba, с помощью расширенного атрибута, чтобы selinux распознал и разрешил общий доступ. Поэтому, если вы оставите принудительное применение selinux, то со всеми командами selinux (, которые затем установят необходимые xattrs):

# from centos 7.6 /etc/samba/smb.conf.example

# Turn the samba_domain_controller Boolean on to allow a Samba PDC to use the useradd and groupadd family of binaries.
# Run the following command as the root user to turn this Boolean on:

# this is an selinux command, not 
setsebool -P samba_domain_controller on

# If you create a new directory, such as a new top-level directory, label it with      samba_share_t
# so that SELinux allows Samba to read and write to it.
# Do not label system directories, such as /etc/ and /home/ with samba_share_t, as such directories should already have an SELinux label.


# the xattr having the name "samba_share_t" is labelled onto "/mydatashare"
# this xattr of syntax "samba_share_t" is recognized by an existing rule in selinux
# if the folder does not have the xattr "samba_share_t" then the  rule in selinux (when enforced) will prevent access via samba to the folder.

chcon -t samba_share_t /mydatashare

вы также используете selinux в системе linux с этим общим ресурсом samba, чтобы применить ограничения к файлам/папкам в этом общем ресурсе samba (с использованием любого расширенного атрибута ). Поскольку эти файлы / папки являются общими, пользователь законно копирует некоторые из них на свой компьютер с Win10, а затем копирует обратно, теряя расширенный атрибут.Теперь, после этого копирования туда и обратно, в этой Linux-системе selinux ограничит доступ к указанным файлам, потому что необходимый xattr больше не присутствует, и пользователи/администраторы стучат головой, задаваясь вопросом, почему все только что работало, теперь это не... установить selinux разрешить и распознать проблему потерянных xattrs, появляющихся в журналах аудита, но это не будет прямо указывать, что это было результатом обратной и прямой копии, потерявшей xattr. Также подумайте о резервном копировании и восстановлении данных, а также о потенциальной работе, необходимой для запоминания xattrs в дополнение к uid/gid, если вы хотите обеспечить безопасность на основе правильных xattrs.

1
27.01.2020, 19:45

Теги

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