Каждый файл или папка в Linux имеют свои права доступа.
Есть 3 типа прав:
чтение(r),запись(w),выполнение(x)
Права определяются для 3-х типов пользователей:
владельца(u), группы(g), всех других (o)
Итак права каждого файла, это 9 бит информации (3 типа прав * 3 типа пользователей), соответственно каждый бит может быть установлен (=1) доступ разрешен, или сброшен(=0) доступ запрещен.
При назначении прав принято использовать восьмеричную(octal) систему счисления.
Текстовое представление прав(10 символов):
- rwxr- - r - -
0123456789
Символ в позиции 0:
"-" - обычный файл, "d" - папка, "l" - ссылка
Символы в позиции 1-3:
"rwx" - права владельца
Символы в позиции 4-6:
"r - -" - права для группы
Символы в позиции 7-9:
"r - -" - права для всех остальных
Таблица для определения прав:
Как видно из таблицы, права легко вычисляются
простым суммированием. 1=выполнение, 2=запись, 4=чтение.
например требуется выполнение(1) и чтение(4), получаем 1+4=5
Пример 644:
- владелец(u) чтение и запись
- группа(g) только чтение
- другие(o) только чтение
Пример 755:
- владелец(u) все права
- группа(g) чтение и выполнение
- другие(o) чтение и выполнение
В языках программирования например таких как C,
к правам добавляют 0 в начале каждого числа, что означает, что число восьмеричное, т.е. пишут 0644 вместо 644. При изменении прав с коммандной строки как правило этого не требуется.
Четырехзначное представление прав(4755), дополнительные права
биты SUID, SGID, sticky:
- SUID или setuid: изменить "User ID" во время выполнения
- SGID или setgid: изменить "Group ID" во время выполнения
- sticky бит: запрещает удаление для всех пользователей кроме владельца. Ранее бит означал "держаться" в памяти после завершения процесса
Текстовое представление дополнительных бит:
дополнительные биты обозначаются следующими символами:
"S","s" - SUID, SGID
"T","t" - sticky бит
позиция этих бит, совпадает с позициями (3,6,9) прав выполнения "x"
впри этом, если прав на выполнение нет используется "верхний регистр" т.е. большие символы. Если права на выполнение установлены используются "нижний регистр" т.е. маленькие символы.
примеры:
Установлен SUID:
- r w s - - - - - - установлены биты SUID и выполнение для владельца
- r - S - - - - - - установлен бит SUID, не установлен бит выполнения
Установлен SGID:
- r w x r w s - - - установлены биты SGID и выполнение для группы
- r w x r - S - - - установлен бит SGID, не уст. выполнение для группы
Установлен sticky бит:
- r w x r w x r w t установлены биты sticky и выполнение для других
- r w x r w x r - T установлен sticky бит, но не уст. выполнение для других
отличия действия прав, при установке на файлы и папки:
права | файлы | папки |
---|---|---|
чтение | чтение содержимого | получение списка файлов |
запись | запись содержимого | изменение списка файлов (создание,удаление,переименование) |
выполнение | файл можно выполнить | пользователь или процесс, может сделать папку "текущей/рабочей" |
SUID | Установить "User ID" при выполнении | Перекрыть идентификатор пользователя при создании файла/папки (использовать идентификатор владельца корневой папки) |
SGID | Установить "Group ID" при выполнении | Перекрыть идентификатор группы при создании файла/папки (использовать идентификатор группы корневой папки) |
sticky | запретить удаление всем, кроме владельца |
команда изменеия прав chmod:
chmod [-R] права файл/папка
"-R" применить права рекурсивно ко всем файлам и подпапкам
Примеры:
chmod -R 755 folder/
chmod 644 file
и т.д.
Есть возможность менять права не целиком, а лишь добавлять или отменять права только определенным группам пользователей
используя символы вместо восьмеричных чисел.
"u" - пользователь/владелец
"g" - группа пользователей
"o" - остальные пользователи
"a" - все группы пользователей
Формат прав [[+-=], ...
Примеры:
chmod -R a+x folder/ выполнение для всех групп рекурсивно
chmod a+rx file чтение и выполнение для всех
chmod u+rx,g-rx file добавить чтение и выполнение для владельца, и
отозвать права для группы
chmod a+r,o= file добавить чтение для всех типов групп и отозвать
все права у всех других пользователей
команда изменения владельца chown:
Chown [-R] владелец:группа файл/папка
Примеры:
chown -R 0:0 folder/ установить владельца/группу = root рекурсивно
chown myuser:mygroup file установить myuser/mygroup для файла
Основа философии Linux - все объекты операционной системы - это файлы, для предоставления доступа к тем или иным возможностям системы мы просто даем доступ пользователю к нужным файлам или убираем. Я более подробно рассказывал обо всех правах в статье , здесь же скажу только что у каждого файла есть три группы прав: для владельца, группы и всех остальных.
При создании файла ему тот пользователь, от имени которого он был создан становится его владельцем, а группой устанавливается основная группа владельца. Но владельца файла и группу можно менять, для этого используются команды chown и chgrp. В этой статье будет рассмотрена команда chown linux, а также основные примеры её использования.
1. Синтаксис и опции
Синтаксис chown, как и других подобных команд linux очень прост:
$ chown пользователь опции /путь/к/файлу
В поле пользователь надо указать пользователя, которому мы хотим передать файл. Также можно указать через двоеточие группу, например, пользователь:группа . Тогда изменится не только пользователь, но и группа. Вот основные опции, которые могут вам понадобиться:
- -c, --changes - подробный вывод всех выполняемых изменений;
- -f, --silent, --quiet - минимум информации, скрыть сообщения об ошибках;
- --dereference - изменять права для файла к которому ведет символическая ссылка вместо самой ссылки (поведение по умолчанию);
- -h, --no-dereference - изменять права символических ссылок и не трогать файлы, к которым они ведут;
- --from - изменять пользователя только для тех файлов, владельцем которых является указанный пользователь и группа;
- -R, --recursive - рекурсивная обработка всех подкаталогов;
- -H - если передана символическая ссылка на директорию - перейти по ней;
- -L - переходить по всем символическим ссылкам на директории;
- -P - не переходить по символическим ссылкам на директории (по умолчанию).
Утилита имеет ещё несколько опций, но это самые основные и то большинство из них вам не понадобится. А теперь давайте посмотрим как пользоваться chown.
2. Использование chown
Например, у нас есть несколько папок dir и их владелец пользователь sergiy:
Давайте изменим владельца папки dir1 на root:
chown root ./dir1
Если вы хотите поменять сразу владельца и группу каталога или файла запишите их через двоеточие, например, изменим пользователя и группу для каталога dir2 на root:
chown root:root ./dir2
Если вы хотите чтобы изменения применялись не только к этому каталогу, но и ко всем его подкаталогам, добавьте опцию -R:
chown -R root:root ./dir3
chown --from=root:root www-data:www-data -cR ./
Основатель и администратор сайта сайт, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.
Иногда на хостинге по тем или иным причинам может возникнуть потребность в смене прав на папки и файлы. Например, если их владельцем оказался Apache при распаковке архива непосредственно на сервере. Ниже мы привели список команд для изменения прав и владельца на папки и файлы.
1. Как изменить права для таких файлов и папок
Командой chmod с помощью SSH-доступа. Например, следующей командой UNIX shell:
chmod -R 755 /var/www/isbircom/data/temp
будут установлены рекурсивно права 755 на все поддиректории и файлы директории /var/www/sitenamecom/data/temp
Если нужно изменить права только файлам, но не трогать папки, или наоборот, можно это реализовать следующими Unix командами:
find /www/ -type f -exec chmod 644 {} \; – изменяет только файлы
find /www/ -type d -exec chmod 755 {} \; – изменяет только папки
2. Как изменить владельца у файлов и папок
Командой chown в UNIX shell. Например командой:
chown -R admin:adminweb /var/www/sitenamecom/data/www/
будут установлены рекурсивно владельцем файлов и директорий пользователь admin и группа adminweb на все поддиректории и файлы директории /var/www/sitenamecom /data/www/
Если нужно изменить владельца только файлам, но не трогать папки, или наоборот, можно это реализовать следующими Unix командами:
find /www/ -type f -exec chown user:group {} \; – изменяет только файлы
find /www/ -type d -exec chown user:group {} \; – изменяет только папки
3. Есть ли возможность изменения приоритета прав у пользователя и apache
Нет так как стандартно web-сервер Apache запускается в Plesk из под пользователя и одноименной группы apache, по этому изменить этого нельзя. Для временого изменения прав на необходимые вам директории можно составить Cron-задание с той же командой UNIX shell.
В Linux все файлы связаны с владельцем и группой. Команда chown используется для изменения права пользователя и группы на определенный файл, каталог или ссылку.
В этой статье мы покажем вам, как использовать команду chown с помощью простых примеров.
Синтаксис команды Chown
Прежде чем перейти к использованию команды chown, давайте начнем с рассмотрения базового синтаксиса.
Выражения команд chown имеют следующий вид:
Chown USER[:GROUP] FILE(s)
- USER это имя пользователя или идентификатор пользователя (UID) нового владельца,
- GROUP имя новой группы или идентификатор группы (GID) и
- FILE(s) имя одного или нескольких файлов, каталогов или ссылок.
Используйте команду ls -l, чтобы узнать, кому принадлежит файл или какая группа.
Чтобы иметь возможность изменять права собственности на файл, пользователь, выполняющий команду chown, должен иметь .
Как изменить владельца файла
Чтобы изменить владельца файла, используйте команду chown, за которой следует имя пользователя нового владельца и целевой файл.
Chown USER FILE
Например, следующая команда изменит право собственности на файл с именем file1 нового владельца с именем andreyex:
Chown andreyex file1
Чтобы изменить право собственности на несколько файлов или каталогов, укажите их как список, разделенный пробелами. Например, приведенная ниже команда изменяет право собственности на файл с именем file1 и каталогом dir1 на нового владельца с именем andreyex:
Chown andreyex file1 dir1
Вместо имени пользователя можно использовать числовой идентификатор пользователя (UID). Следующий пример изменит право собственности на файл с именем file2 нового владельца с UID 1000:
Chown 1000 file2
Если числовой владелец существует как имя пользователя, то право собственности будет передано на имя пользователя.
Как изменить владельца и группу файла
Чтобы изменить владельца и группу файла, используйте команду chown, за которой следуют новый владелец и группа, разделенные двоеточием ( без промежуточных пробелов и целевого файла.
Chown USER:GROUP FILE
Следующая команда изменит право собственности на файл с именем file1 на нового владельца с именем andreyex и группой users:
Chown andreyex:users file1
Если вы опустите имя группы после двоеточия (, группа файла будет изменена на указанную группу пользователя.
Chown andreyex: file1
Как изменить группу файла
Команда chown может выполнять ту же функцию, что и , т. е. Она может изменять группу файлов.
Чтобы изменить только группу файла, используйте команду chown, за которой следует двоеточие (, и новое имя группы и целевой файл.
Chown:GROUP FILE
Следующая команда изменит владеющую группу файла с именем, file1 чтобы www-data:
Chown:www-data file1
Как рекурсивно изменить владельца файла
Чтобы рекурсивно работать со всеми файлами и каталогами в каталоге ввода, используйте параметр -r (–recursive):
Chown -R USER:GROUP DIRECTORY
Например, следующая команда изменит права собственности на все файлы и каталоги в подкаталогах /var/www на нового владельца и группу с именем www-data:
Chown www-data: /var/www
Заключение
К настоящему моменту вы должны хорошо понимать, как использовать команду chown в Linux. Если вы хотите узнать больше о команде chown, посетите страницу chown man.