lltconfig -a list | awk 'BEGIN{n=0}/e1000g0/{n=NR}n&&NR>n&&NR<n+3{print}'
Я отвечу на ваши вопросы в трех частях: типы файлов, разрешения и варианты использования для различных форм 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. chmod 0777
используется для установки всех разрешений за одно выполнение chmod
, а не для объединения изменений с u +
и т. Д.Каждая из четырех цифр представляет собой восьмеричное значение, представляющее набор разрешений:
suid
, sgid
и «липкий» (см. Ниже) Восьмеричное значение рассчитывается как сумма разрешений:
Для первого цифра:
suid
- 4; двоичные файлы с этим установленным битом запускаются как их пользователь-владелец (обычно root
) sgid
равен 2; двоичные файлы с этим установленным битом запускаются как группа их владельцев (это использовалось для игр, чтобы можно было совместно использовать высокие баллы, но это часто представляет угрозу безопасности в сочетании с уязвимостями в играх), а файлы, созданные в каталогах с этим набором битов, принадлежат к группе группа владельцев каталога по умолчанию (это удобно для создания общих папок) 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 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
во все остальные файлы.
Итак, разрешения в Linux очень важны. Я постараюсь дать короткое объяснение.
Для кусков в файловом режиме
Каждый Unix-файл имеет набор разрешений, которые определяют, можно ли читать, записывать или запускать этот файл. Запуск ls -l отображает разрешения. Вот пример такого отображения:
-rw-r--r-- 1 user somegroup 7041 Mar 26 19:34 somefile
Я прикрепляю изображение кусков файлового режима:
Тип может быть разным. Например:
Если вы хотите установить некоторые разрешения для всей директории, вы можете использовать, например, атрибут R:
chmod -R 777 /some/directory/
Для chmod 777 против 0777
Команда chmod
обычно ожидает, что вход будет восьмеричным числом, ведущий ноль ссылается на значение триплета sticky/sgid/suid bit. В команде C, однако, это имело бы значение, так как 777
было бы переведено в 01411
(восьмеричное), таким образом, устанавливая липкий бит (см. страницу руководства chmod(2)
), разрешение на чтение для владельца и исполняемый бит для группы и другие (что является довольно странной комбинацией).
EDIT 1
Я нашел другую картинку о разрешениях для Linux и прикреплю ее, чтобы было проще понять:
Это говорит вам тип файла UNIX. По умолчанию UNIX имеет только 3 типа файлов. Они:
-
- обычный файл D
- файл каталогов b
- блок-файл C
- файл устройства символов P
- названный файл трубы или просто файл трубы l
- символический файл ссылки s
- файл сокета Подробнее здесь: Типы файлов в Linux / Unix подробно описаны
0777
VS 777
Sticky Bit указан или нет. Когда устанавливается липкий бит каталога, файловая система рассматривает файлы в таких каталогах специальным образом, поэтому только владелец файла, владелец каталога или пользователь root может переименовать или удалять файл. Без липкого набора битов любой пользователь с помощью разрешений для записи и выполнения для каталога может переименовать или удалять содержащиеся файлы, независимо от владельца файла.
0777
устанавливает 777 разрешений файлов, а липкий бит до 0 - нет специальных режимов.
777
устанавливает 777 разрешений файлов, не изменяя липкий бит.
Подробнее: Sticky Bit и CHMOD
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
Получив здесь ответ на свой вопрос и проведя небольшое исследование результатов, я нашел статью, в которой все это очень хорошо объясняется. Я хотел бы поделиться некоторыми частями этой статьи для будущих ссылок.
Чтобы использовать 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
- это команда в 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 для неисполняемых файлов - здесь то же самое.
Две взаимосвязанные вещи, которые всегда сбивали меня с толку и не затрагивались выше, это:
Вchmod
:каждая '1' en дает разрешение, например. chmod 777 en умеет все, но обратите внимание, потому что
вumask
:каждая '1' dis дает разрешение, например. umask 777 dis позволяет все.
Другими словами, есть пользователей, которые «владеют» , и пользователей, которые «используют» .
Каждый файл принадлежит одновременно двум организациям:
Следовательно, каждый файл может использоваться конкретным пользователем тремя способами:
1 )Напрямую, как пользователь, которому принадлежит файл,
2)в напрямую, как член группы, которой принадлежит файл, и
3 )возможно, как кто-то другой.
В противном случае , приведенные выше ответы отлично справляются со своей задачей! Спасибо тебе за все.