Понимание полномочий UNIX и типов файлов

lltconfig -a list | awk 'BEGIN{n=0}/e1000g0/{n=NR}n&&NR>n&&NR<n+3{print}'

72
23.07.2019, 19:17
6 ответов

Я отвечу на ваши вопросы в трех частях: типы файлов, разрешения и варианты использования для различных форм chmod .

Типы файлов

Первый символ в выводе ls -l представляет тип файла; d означает, что это каталог. Его нельзя установить или сбросить, это зависит от того, как был создан файл. Вы можете найти полный список типов файлов в документации ls ; те, с которыми вы, вероятно, столкнетесь, это

  • - : «обычный» файл, созданный любой программой, которая может записывать файл
  • b : специальный файл блока, обычно диск или устройства разделов, может может быть создан с помощью mknod
  • c : специальный файл символов, также может быть создан с помощью mknod (примеры см. в / dev )
  • d : каталог, может быть создан с помощью mkdir
  • l : символическая ссылка, может быть создана с помощью ln -s
  • p : именованный канал, может быть создан с помощью ] mkfifo
  • s : socket, может быть создан с помощью nc -U
  • D : door , созданного некоторыми серверными процессами в Solaris / openindiana.

Permissions

chmod 0777 используется для установки всех разрешений за одно выполнение chmod , а не для объединения изменений с u + и т. Д.Каждая из четырех цифр представляет собой восьмеричное значение, представляющее набор разрешений:

  • suid , sgid и «липкий» (см. Ниже)
  • разрешения пользователя
  • разрешения группы
  • «Прочие» разрешения

Восьмеричное значение рассчитывается как сумма разрешений:

  • «чтение» - 4
  • «запись» - 2
  • «выполнение» - 1

Для первого цифра:

  • suid - 4; двоичные файлы с этим установленным битом запускаются как их пользователь-владелец (обычно root )
  • sgid равен 2; двоичные файлы с этим установленным битом запускаются как группа их владельцев (это использовалось для игр, чтобы можно было совместно использовать высокие баллы, но это часто представляет угрозу безопасности в сочетании с уязвимостями в играх), а файлы, созданные в каталогах с этим набором битов, принадлежат к группе группа владельцев каталога по умолчанию (это удобно для создания общих папок)
  • «липкая» (или «ограниченное удаление») - 1; файлы в каталогах с этим установленным битом могут быть удалены только их владельцем, владельцем каталога или root (общий пример см. в / tmp ).

См. справочную страницу chmod для получения подробной информации. Обратите внимание, что во всем этом я игнорирую другие функции безопасности, которые могут изменять права пользователей на файлы (SELinux, списки управления доступом к файлам ...).

Специальные биты обрабатываются по-разному в зависимости от типа файла (обычный файл или каталог) и базовой системы. (Это упоминается в справочной странице chmod .) В системе, которую я использовал для тестирования (с coreutils 8.23, в файловой системе ext4 , работающей под управлением ядра Linux 3.16. 7-ckt2) поведение выглядит следующим образом.Для файла специальные биты всегда очищаются, если явно не установлены, поэтому chmod 0777 эквивалентно chmod 777 , и обе команды очищают специальные биты и предоставляют всем полные права доступа к файлу. . Для каталога специальные биты никогда не очищаются полностью с использованием четырехзначной числовой формы, поэтому в действительности chmod 0777 также эквивалентен chmod 777 , но это вводит в заблуждение, поскольку некоторые из специальных биты останутся как есть. (В предыдущей версии этого ответа это было неверно.) Чтобы очистить специальные биты в каталогах, вам необходимо явно использовать us , gs и / или ot или указать отрицательное числовое значение, поэтому chmod -7000 очистит все специальные биты в каталоге.

В выводе ls -l , suid , sgid и «липкий» появляются вместо записи x : ] suid будет s или S вместо пользователя x , sgid будет s или S вместо x группы, а «липкий» - t или T вместо x других. Буква в нижнем регистре указывает, что установлены как специальный бит, так и исполняемый бит; заглавная буква означает, что установлен только специальный бит.

Различные формы chmod

Из-за поведения, описанного выше, использование полных четырех цифр в chmod может сбивать с толку (по крайней мере, оказывается, я был сбит с толку).Это полезно, когда вы хотите установить специальные биты, а также биты разрешений; в противном случае биты сбрасываются, если вы манипулируете файлом, и сохраняются, если вы манипулируете каталогом. Таким образом, chmod 2750 гарантирует, что вы получите не менее sgid и ровно u = rwx, g = rx, o = ; но chmod 0750 не обязательно очищает специальные биты.

Использование числовых режимов вместо текстовых команд ( [ugo] [= + -] [rwxXst] )Вероятно, это скорее дело привычки и цель команды. Если вы привыкли использовать числовые режимы, часто проще просто указать таким образом полный режим; и полезно иметь возможность думать о разрешениях с использованием числовых режимов, поскольку многие другие команды могут их использовать ( install , mknod ...).

Некоторые варианты текста могут пригодиться: если вы просто хотите убедиться, что файл может быть запущен кем угодно, chmod a + x сделает это, независимо от других разрешений. Аналогично, + X добавляет разрешение на выполнение, только если одно из разрешений на выполнение уже установлено или файл является каталогом; это может быть удобно для восстановления разрешений в глобальном масштабе без необходимости создавать особые файлы v. каталогов. Таким образом, chmod -R ug = rX, u + w, o = эквивалентно применению chmod -R 750 ко всем каталогам и исполняемым файлам и chmod -R 640 во все остальные файлы.

120
27.01.2020, 19:31

Итак, разрешения в Linux очень важны. Я постараюсь дать короткое объяснение.

Для кусков в файловом режиме

Каждый Unix-файл имеет набор разрешений, которые определяют, можно ли читать, записывать или запускать этот файл. Запуск ls -l отображает разрешения. Вот пример такого отображения:

-rw-r--r-- 1 user somegroup 7041 Mar 26 19:34 somefile

Я прикрепляю изображение кусков файлового режима:

enter image description here

Тип может быть разным. Например:

  • d (каталог)
  • c (символьное устройство)
  • l (симлинк)
  • p (именованный канал)
  • s (сокет)
  • b (блочное устройство)
  • D (дверь, не распространенная в системах Linux, но перенесенная)

Если вы хотите установить некоторые разрешения для всей директории, вы можете использовать, например, атрибут R:

chmod -R 777 /some/directory/

Для chmod 777 против 0777

Команда chmod обычно ожидает, что вход будет восьмеричным числом, ведущий ноль ссылается на значение триплета sticky/sgid/suid bit. В команде C, однако, это имело бы значение, так как 777 было бы переведено в 01411 (восьмеричное), таким образом, устанавливая липкий бит (см. страницу руководства chmod(2)), разрешение на чтение для владельца и исполняемый бит для группы и другие (что является довольно странной комбинацией).

EDIT 1

Я нашел другую картинку о разрешениях для Linux и прикреплю ее, чтобы было проще понять: UNIX file permissions

41
27.01.2020, 19:31

Для вопросов d

Это говорит вам тип файла UNIX. По умолчанию UNIX имеет только 3 типа файлов. Они:

  • - - обычный файл
  • D - файл каталогов
  • Специальный файл (с 5 суб-типы):
    • b - блок-файл
    • C - файл устройства символов
    • P - названный файл трубы или просто файл трубы
    • l - символический файл ссылки
    • s - файл сокета

Подробнее здесь: Типы файлов в Linux / Unix подробно описаны

0777 VS 777

Sticky Bit указан или нет. Когда устанавливается липкий бит каталога, файловая система рассматривает файлы в таких каталогах специальным образом, поэтому только владелец файла, владелец каталога или пользователь root может переименовать или удалять файл. Без липкого набора битов любой пользователь с помощью разрешений для записи и выполнения для каталога может переименовать или удалять содержащиеся файлы, независимо от владельца файла.

0777 устанавливает 777 разрешений файлов, а липкий бит до 0 - нет специальных режимов.

777 устанавливает 777 разрешений файлов, не изменяя липкий бит.

Подробнее: Sticky Bit и CHMOD

0
27.01.2020, 19:31

D означает, что это каталог, если у вас есть файл - и если это ссылка, вы найдете L ​​. Это не может быть установлено / unsite.

Если вы используете 0777 в качестве разрешений, которые вы получаете полный контроль (прочитайте + White + Execute) каждому пользователю / группе системы. Это ленивый способ решить проблемы, когда у вас есть пользователи / группы, которые не могут получить доступ к каталогам / файлам.

Например, если вы перечислите содержимое каталога и получите это:

-RW-R - R-- 1 корневой корня 42596 7 июн 2012 PRELOADBABLE_LIBINTL.SO

PRELOADBABLE_LIBINTL.SO Файл, принадлежащий пользовательскому корню и групповым корнем. Владелец получил доступ к чтению и записи, группа имеет только чтение доступа, а любой другой пользователь имеет доступ для чтения. Это может быть переведено как 644.

Если я изменю его на 777, он будет выглядеть так:

-RWXRWXRWX 1 корневой корня 42596 июня 7 2012 Preloadable_Libintl.so

10
27.01.2020, 19:31

Получив здесь ответ на свой вопрос и проведя небольшое исследование результатов, я нашел статью, в которой все это очень хорошо объясняется. Я хотел бы поделиться некоторыми частями этой статьи для будущих ссылок.

Просмотр разрешений

Чтобы использовать chmod для изменения прав доступа к файлу или каталогу, вам сначала нужно знать текущий режим доступа. Вы можете просмотреть содержимое каталога в терминале, выбрав cd в этот каталог, а затем используя:

$ ls -l

Переключатель -l важен, потому что использование ls без него будут отображаться только имена файлов или папок в каталоге.

Ниже приведен пример использования ls -l в моем домашнем каталоге:

total 128
drwxr-xr-x 2 peter users  4096 Jul  5 21:03 Desktop
drwxr-xr-x 6 peter users  4096 Jul  5 17:37 Documents
drwxr-xr-x 2 peter users  4096 Jul  5 13:45 Downloads
drwxr-xr-x 2 peter users  4096 Jun 24 03:36 Movies
drwxr-xr-x 2 peter users  4096 Jun 24 03:38 Music
drwxr-xr-x 2 peter users  4096 Jun 26 00:09 Pictures
-rw-r--r-- 1 peter users   354 Jul  6 17:15 chmodtest

Что означают столбцы

Первый столбец - это тип каждого файла:

  • - обозначает обычный файл.
  • d обозначает каталог, то есть папку, содержащую другие файлы или папки.
  • p обозначает именованный канал (также известный как FIFO).
  • l обозначает символьную ссылку.

Буквы после этого - это разрешения, этот первый столбец - это то, что нас будет больше всего интересовать. Второй - количество ссылок в файле, мы можем спокойно игнорировать его. Третий столбец имеет два значения / имени: первое (в моем примере «peter») - это имя пользователя, которому принадлежит файл.Второе значение (в примере - «пользователи») - это группа, к которой принадлежит владелец (подробнее о группах).

В следующем столбце указан размер файла или каталога в байтах, а информация, после которой - дата и время последнего изменения файла или каталога, и, конечно же, имя файла или каталога.

Что означают разрешения

Первые три буквы после первых - или d - это разрешения, которые есть у владельца. Следующие три буквы - это разрешения, применимые к группе. Последние три буквы - это разрешения, которые применяются ко всем остальным.

Каждый набор из трех букв состоит из r w и x . r всегда находится в первой позиции, w всегда находится во второй позиции, а x всегда находится в третьей позиции. r - это разрешение на чтение, w - это разрешение на запись, и x - это разрешение на выполнение. Если вместо одной из этих букв стоит дефис ( - ), это означает, что разрешение не предоставлено, а если буква присутствует, то оно предоставлено.

Папки

В случае папок биты режима можно интерпретировать следующим образом:

  • r (чтение) означает возможность читать оглавление данного каталога,
  • w (запись) означает возможность записывать оглавление данного каталога (создавать новые файлы, папки; переименовывать, удалять существующие файлы, папки) тогда и только тогда, когда установлен бит выполнения. В противном случае это разрешение бессмысленно.
  • x (выполнить) означает возможность войти в заданный каталог с помощью команды cd и получить доступ к файлам и папкам в этом каталоге.

Изменение разрешений с помощью команды chmod

chmod - это команда в Linux и других Unix-подобных операционных системах. Он позволяет вам изменять права доступа (или режим доступа) к файлу или каталогу.

Вы можете изменить разрешения двумя способами: - на основе текста chmod - на основе чисел chmod

Текстового метода

Чтобы изменить разрешения или режим доступа к файлу, мы используем команду chmod в терминале. Ниже приведена общая структура команды:

chmod who=permissions filename

Где Кто - из диапазона букв, и каждая означает, кому вы собираетесь дать разрешение. Они следующие:

u - The user that owns the file.
g - The group the file belongs to.
o - The other users i.e. everyone else.
a - all of the above - use this instead of having to type ugo.

Разрешения такие же, как уже обсуждалось ( r , w и x ).

Команда chmod позволяет нам добавлять и вычитать разрешения из существующего набора, используя + или - вместо =. Это отличается от приведенных выше команд, которые, по сути, переписывают разрешения (т.е. для изменения разрешения с r - на rw- , вам все равно необходимо включить r , а также w после = в команде chmod . Если вы пропустили r , он уберет r , поскольку они перезаписываются с помощью =. Использование + и - избегайте этого, добавляя или удаляя из текущего набора разрешений).

Числовой метод

chmod также может устанавливать разрешения с помощью чисел.

Использование чисел - это еще один метод, который позволяет редактировать разрешения для всех трех владельцев, групп и других одновременно. Эта базовая структура кода такова:

chmod xxx file/directory

Где xxx - трехзначное число, где каждая цифра может быть от 1 до 7. Первая цифра относится к разрешениям для владельца, вторая цифра относится к разрешениям для группы, а третья цифра относится к разрешениям для всех остальных. .

В этой числовой нотации значения r, w и x имеют собственное числовое значение:

r=4
w=2
x=1

Чтобы получить трехзначное число, вам нужно подумать, какие разрешения вы хотите, чтобы владелец, группа и пользователь имели , а затем суммируют их значения. Например, скажем, я хотел предоставить владельцу каталога разрешения на чтение, запись и выполнение, и я хотел сгруппировать и всех остальных, чтобы они имели права только на чтение и выполнение. Я бы предложил следующие числовые значения:

Owner: rwx = 4+2+1=7
Group: r-x = 4+0+1=5 (or just 4+1=5)
Other: r-x = 4+0+1=5 (or just 4+1=5)

Final number = 755

$ chmod 755 filename

Это эквивалент использования следующего:

chmod u=rwx filename
chmod go=rx filename

Большинство папок / каталогов имеют значение 755, чтобы разрешить чтение, запись и выполнение владельцу, но запретить запись всем else, а файлы обычно имеют размер 644, чтобы разрешить чтение и запись для владельца, но просто чтение для всех остальных, обратитесь к последнему примечанию об отсутствии разрешений x для неисполняемых файлов - здесь то же самое.

7
27.01.2020, 19:31

Две взаимосвязанные вещи, которые всегда сбивали меня с толку и не затрагивались выше, это:


I)что делает ' 1 ':

Вchmod:каждая '1' en дает разрешение, например. chmod 777 en умеет все, но обратите внимание, потому что
вumask:каждая '1' dis дает разрешение, например. umask 777 dis позволяет все.


II)файл «владельцы» против файла «пользователи»:

Другими словами, есть пользователей, которые «владеют» , и пользователей, которые «используют» .

Каждый файл принадлежит одновременно двум организациям:

  • один конкретный пользователь и
  • отдельная конкретная группа(из одного или нескольких пользователей ).

Следовательно, каждый файл может использоваться конкретным пользователем тремя способами:

1 )Напрямую, как пользователь, которому принадлежит файл,
2)в напрямую, как член группы, которой принадлежит файл, и
3 )возможно, как кто-то другой.


В противном случае , приведенные выше ответы отлично справляются со своей задачей! Спасибо тебе за все.

-1
28.03.2020, 05:27

Теги

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