Не могли бы вы вкратце объяснить основные концепции и инструменты командной строки, используемые для управления правами доступа к файлам?
Не могли бы вы вкратце объяснить основные концепции и инструменты командной строки, используемые для управления правами доступа к файлам?
Ответы:
Каждый файл имеет права для трех разных категорий:
Права означают право на чтение файла, право на запись в файл или право на выполнение файла в случае сценария или программы.
На CLI вы можете
chown
, напримерchown guillermooo
chgrp
, например,chgrp root
chmod
, например, chmod u+w filename.ext
(добавляет разрешение на запись для владельца файла filename.ext
)Если вы хотите узнать больше о каждом из этих инструментов, откройте терминал и введите man [tool]
, например man chmod
.
chown guillermooo
не должно ли это быть chown guillermooo filename
?
Предупреждение: изменение прав доступа к файлам и каталогам потенциально опасно и может сделать вашу систему непригодной для использования. При рекурсивном запуске от имени пользователя root по неправильному пути мы можем прийти к точке, откуда нам придется переустанавливать Ubuntu. Поэтому хорошей идеей является не изменять права доступа вне каталогов HOME, и при возможности следует избегать рекурсивного выполнения команд от имени root.
Ubuntu унаследовал концепцию разрешений от Unix, когда для файлов или каталогов существует три задачи, которые мы можем разрешить или запретить:
( Обход каталога по сути означает использование его как части имени пути. Дополнительные пояснения см. В https://unix.stackexchange.com/a/13891 или https://unix.stackexchange.com/questions/21251 .)
Кроме того, у нас есть три случая, которым мы даем разрешение:
Теперь, чтобы получить комбинацию этих отсортированных, мы используем двоичную систему, где каждый бит определяет разрешение. Это может быть лучше всего показано в следующей таблице
Permission | Binary | Octal | User | Group | Other |
======================================================
r | 100 | 4 | | | |
w | 010 | 2 | | | |
x | 001 | 1 | | | |
=======================================================
Number
Теперь, если мы хотим, например,
а) владелец файла (= пользователь) имеет г EAD, ш обряда и е х ecute разрешения,
б) к файлу группа предоставлена г Свинец и е х ecute разрешение, и
в) все остальные должны иметь только г доступ EAD.
Тогда полученное разрешение файла будет:
u g o
rwx r-x r--
Чтобы получить это в восьмеричных числах, например. для chmod
команды или когда нам нужно понять сообщение об ошибке, нам нужно заполнить таблицу выше, как показано ниже:
Permission | Binary | Octal | User | Group | Other |
======================================================
r | 100 | 4 | 4 | 4 | 4 |
w | 010 | 2 | 2 | 0 | 0 |
x | 001 | 1 | 1 | 1 | 0 |
======================================================
Numbers add to 7 5 4
Каждый номер разрешения необходимо добавить для суммирования для пользователя (4 + 2 + 1 = 7), группы (4 + 0 + 1 = 5) и других (4 + 0 + 0 = 4). Полученное число тогда:
u g o
7 5 4
Теперь у нас есть две опции для изменения битов разрешения chmod
:
chmod u+rwx g+rx o+r filename
или намного проще с
chmod 751 filename
Обе команды будут делать то же самое.
Разрешение по умолчанию для вновь созданного файла в нашем доме будет 664 (-rw-rw-r--).
Если мы хотим, чтобы файлы были исполняемыми как программы, нам придется изменить это разрешение.
Обратите внимание, что нам также придется изменить разрешение каталога, в котором может находиться этот исполняемый файл. Только если установлены оба бита файла и исполняемый файл каталога, нам будет разрешено запускать этот файл как программу.
При копировании файла в наш дом он теряет свои разрешения, которые будут заменены нашими собственными разрешениями по умолчанию (если мы не копируем с использованием расширенных параметров, например, параметра архива).
Также обратите внимание, что файл может наследовать свое разрешение от точки монтирования, соответственно. варианты монтирования. Это важно при монтировании дисков в формате Windows, которые не поддерживают разрешения Unix.
Вскоре мы понимаем, что это была только половина истории. Нам также нужно разобраться с вещами. Для этого у каждого файла или папки есть определенный владелец и определенное членство в группе.
Каждый раз, когда мы создаем файл, мы будем его владельцем, и также будет использоваться его группа. С помощью ls -l
мы можем видеть разрешения, владельца и группу, как видно из следующего примера вывода:
-rw-rw-r-- 1 takkat takkat 4096 Sep 12 20:25 test
- Нам разрешено изменять только разрешения, группы или владельца файла, который принадлежит нам.
Если мы не являемся владельцем файла, мы получим Permission denied
ошибку. Только root может изменить это для всех файлов. Вот почему мы должны использовать sudo
при редактировании разрешения файлов, которые не являются нашими. Для этого есть две встроенные команды chown
для пользователей и chgrp
групп.
Чтобы изменить владельца файла с любого на кого-либо, takkat
мы можем выполнить эту команду:
sudo chown takkat testfile
Чтобы изменить группу файла на takkat
мы выпускаем
sudo chgrp takkat testfile
Прочитайте man-страницы команд для более подробной информации и опций. Есть также это хорошее более сложное руководство, рекомендованное для дальнейшего чтения:
Также найдите несколько связанных вопросов здесь: