Терминал Linux. 6 статья - права доступа к каталогам и файлам в Linux, команды chmod и chown
В данной статье хочу разобрать права доступа к каталогам и файлам в Linux. А также расскажу о том, как можно изменить права и владельца на файлы и директории в Linux.
Первое, что я хотел бы рассмотреть, это каким образом можно просмотреть права доступа на файлы и каталоги.
1. Просмотр прав доступа на файлы и каталоги в Linux.
Прежде чем читать далее, советую прочитать первую статью (если Вы этого не сделали конечно) данного цикла про навигацию в терминале.
Для статьи я создал несколько файлов и каталогов в домашней папке.
Для того, чтобы просмотреть права доступа на файлы и каталоги в нужной директории, переходим в неё и выполняем команду: ls -l У нас будет выведено следующее сообщение в терминале:
Как видно, для наших файлов и каталогов вывелась подробная информация.
Слева отображены права доступа на файл и директорию вида:
drwxrwxr-x
Чуть ниже подробно разберу это непонятную надпись, а пока двигаемся дальше.
Для того, чтобы просмотреть права доступа на определенный файл, нужно ввести следующую команду: ls -l имя_нужного_файла Вот как это выглядит:
Для того, чтобы просмотреть права доступа на определенный каталог, вводим следующую команду: ls -l имя_нужной_директории Выглядит это следующим образом:
Для того, чтобы просмотреть права доступа на директории и файлы рекурсивно внутри каталога, нужно ввести следующую команду, перейдя в нужный каталог: ls -Rl либо ввести каталог: ls -Rl имя_нужной_директории Выглядит это следующим образом:
2. Расшифровка "символьной формы" прав доступа на каталоги и файлы в Linux.
После выполнений команд из первого пункта у нас выдавалось сообщение вида:
drwxrwxr-x
Будем использовать в качестве примера в этом пункте.
Это символьная форма прав доступа в Linux. Давайте разберем её подробно.
Данное сообщение состоит из 10 символов:
Первый символ обозначает тип данных.
Данный символ может быть следующим:
В большинстве случаев это будет:
- = обычный файл;
d = каталог (directory);
l = символическая ссылка (link);
Но кроме этого, еще может быть следующим:
b = файл блочного устройства (block);
c = файл символьного устройства;
s = доменное гнездо (socket);
p = именованный канал (pipe).
Следовательно, в нашем случае это директория (каталог, папка).
Затем идут следующие 9 символов, которые и обозначают права доступа:
rwxrwxr-x
Данные 9 символов состоят из трех групп:
rwx rwx r-x
Первая группа из трех символов обозначает права доступа владельца файла или директории (u - user).
Вторая группа из трех символов обозначает права доступа на файл или директорию для системной группы (g - group).
Третья группы из трех символов обозначает права доступа на файл или директорию для всех остальных (o - other)
У этих трех групп одинаковая комбинация символов, то есть
rwx
Что же они обозначают?
Очень легко запомнить:
r - read, то есть право доступа на чтение файла или директории.
w - write, то есть право на изменение и удаление файла или директории.
x - eXecute, то есть право на запуск файла как программы или вход в директорию.
Они идут обязательно в таком порядке:
rwx
Если, вместо какого то символа идет тире, к примеру
r-x
то это значит, что отсутствуют права на изменение и удаление файла или директорию
Или к примеру:
r--
то это обозначает, что отсутствуют права на изменение и запуск файла или директории. Доступен только просмотр.
Таким образом, из нашего примера:
drwxrwxr-x
это сообщение обозначает, что это является директорией, у владельца и у группы есть полные права доступа - на чтение, изменение, удаление, запуск, у всех остальных есть только права на чтение и запуск.
Как видите, ничего сложного нет.
Но у Вас может возникнуть вопрос о том, а как же узнать, кто именно является владельцем файла и какая группа?
Теже самые команды
ls -l
из первого пункта:
Как видно на скриншоте:
в третей колонке идет имя владельца файла,
в четвертой колонке идет название группы.
Следовательно, если пользователь не владелец файла, но входит в группу, то у него будут права на файл или директорию этой самой группы.
Небольшое отсупление.
В Наутилусе (файловом менеджере Ubuntu), можно нажать правой кнопкой мыши на файле и открыть свойства, перейти на вкладку Права, можно увидеть:
Здесь видны в графическом режиме права доступа, владелец и группа.
Если Вы являетесь владельцем файла или директории, то Вы можете изменять права доступа.
Подробно разобрали просмотр прав доступа на файлы и каталоги Linux.
Теперь приступим к их изменению в терминале.
3.1. Изменение прав доступа на файлы и каталоги в Linux в символьном режиме.
Для того, чтобы изменить права доступа, воспользуйтесь следующим шаблоном:
chmod personOperatorRights имя_файла
вместо person нужно использовать один из следующих символов:
u - user, пользователь, владелец файла или директории.
g - group, группа файла или директории.
o - other, все другие.
a - all, то есть все вместе взятые, и владелей и группа, и все остальные.
Этот символ обозначает субъект, которому будут назначены или изменены права.
вместо Operator, может быть один из следующих символов:
+ - "плюс" добавляем нужные права
- - "минус" удаляем нужные права
= - "равно" устанавливаем нужные права
Этот символ обозначает оператор, от которого зависит будут ли добавлены, удалены или установлены нужные права, которые последуют за оператором
вместо Rights перечисляем символы прав доступа:
r -read - чтение
w - write - запись
x - eXecute - выполнение
Важно замечание. Здесь идет перечисление из трех перечисленных символов.
Но в определенном порядке rwx, но не нужно указывать тире, то есть просто пропускаем символ. Примеры: rw, wx, rx, r, w, x.
имя_файла - это путь к файлу или директории.
Кроме того, нужный параметр -R, который обозначает рекурсивность.
То есть если нужно изменить права всех файлов и директорий внутри нужной нам директории, нужно после chmod установить параметр -R. Выглядит это следующим образом:
chmod -R personOperatorRights имя_файла
Важное замечание!
Если Вы не являетесь владельцем файла или директории, или у вас нет прав на изменение файла, то нужно будет использовать права суперпользователя: sudo chmod
Приступим к практике. Разберем примеры.
1). Убираем права для группы на изменение файла: chmod g-w file1 Выглядит это следующим образом:
2). Убираем права на чтение у группы и всех остальных: chmod go-r file1
3). Добавим для группы права на чтение и изменение: chmod g+rw file1
Вот таким образом можно менять права на файлы.
4). Вы, наверное, зачастую видели команду: chmod +x имя_файла.sh Это значит, что мы даём права на выполнение всем для данного файла.
Эта команда аналогична командам: chmod ugo+x имя_файла.sh
chmod a+x имя_файла.sh То есть, если мы хотим добавить или установить права для всех на данный файл или директорию, мы можем не писать кому. Просто оператор и права.
5). Изменим рекурсивно права на файлы и директории внутри нужно директории, отменим к примеру все права у остальных пользователей и групп: chmod -R o-rwx ~/linuxrussia.com/
3.2. Изменение прав доступа на файлы и каталоги в абсолютном режиме.
Есть более простой способ изменение прав доступа на файлы и каталоги в Linux.
Это изменение прав доступа в числовом представлении.
Думаю, что многие из Вас видели на форумах или сайтах о Linux советы по изменению прав, вида:
chmod 755 имя_файла
Вы их выполняли и многие из Вас думали, что это магические цифры.
Но на самом деле это не так.
Давайте разберем, что же значат эти цифры.
Итак, у нас есть комбинация прав доступа на директорию:
rwxrwxr-x
А теперь, делим на группы:
rwx rwx r-x
Теперь преобразуем в двоичном виде наши права доступа:
- если есть символ, то это 1.
- если прочерк или тире, то это 0.
Следовательно, наша комбинация будет выглядеть следующим образом:
111 111 101
А теперь переведем эти цифры в восьмеричную систему исчисления:
7 7 5
Вот и получили наша магическое число:
775
Более проще запомнить:
r - это 4,
w - это 2,
x - это 1.
Каждая цифра обозначает определенную группу:
Первая цифра - права для владельца,
вторая цифра - права для группы,
третья цифра - права для остальных.
Просто прибавляем цифры:
чтение r и изменение w нужно?
Прибавляем 4+2, то получаем 6.
Следовательно если хотим выдать права только владельцу файла полные права, а остальным убрать все: chmod 700 имя_файла
Вот так меняются права.
4. Изменение владельца и группы файла или каталога.
Для изменения владельца или группы у файла или каталога есть команда chown.
Используется следующий шаблон выполнения данной команды: sudo chown имя_нового_владельца:имя_новой_группы имя_файла_или_директории Стоит заметить, что если хотим изменить только группу, то шаблон следующий: sudo chown :имя_новой_группы имя_файла_или_директории Если хотим изменить только владельца, то шаблон следущий: sudo chown имя_нового_владельца имя_файла_или_директории Ну и соответственно рекурсивно: sudo chown -R имя_нового_владельца:имя_новой_группы имя_файла_или_директории В принципе ничего сложного.
Чтобы узнать имя текущего пользователя, используется команда: whoami Чтобы узнать в каких группах состоит текущий пользователь: groups
Давайте сменим владельца у файла на root: sudo chown root file1
Вот таким образом меняются владельцы и группы.
Вот и всё, что я хотел рассказать в данной статье.
http://www.linuxrussia.com/2014/09/linux-chmod-chown.html
|