Chown рекурсивно для папок и файлов. Chown — команда изменения владельца файлов и папок в linux
Помощь по команде chown в linux
Для того, чтобы сменить пользователя и/или группу у файла и/или папки в linux применяется команда chown . Как обычно, первым делом заглянем в подсказку операционной системы по этой команде:
Root@server:~# chown --help
Usage: chown ... [:] FILE...
or: chown ... --reference=RFILE FILE...
Change the owner and/or group of each FILE to OWNER and/or GROUP.
With --reference, change the owner and group of each FILE to those of RFILE.
-c, --changes like verbose but report only when a change is made
-f, --silent, --quiet suppress most error messages
-v, --verbose output a diagnostic for every file processed
--dereference affect the referent of each symbolic link (this is
the default), rather than the symbolic link itself
-h, --no-dereference affect symbolic links instead of any referenced file
(useful only on systems that can change the
ownership of a symlink)
--from=CURRENT_OWNER:CURRENT_GROUP
change the owner and/or group of each file only if
its current owner and/or group match those specified
here. Either may be omitted, in which case a match
is not required for the omitted attribute
--no-preserve-root do not treat "/" specially (the default)
--preserve-root fail to operate recursively on "/"
--reference=RFILE use RFILE"s owner and group rather than
specifying OWNER:GROUP values
-R, --recursive operate on files and directories recursively
The following options modify how a hierarchy is traversed when the -R
option is also specified. If more than one is specified, only the final
one takes effect.
-H if a command line argument is a symbolic link
to a directory, traverse it
-L traverse every symbolic link to a directory
encountered
-P do not traverse any symbolic links (default)
--help display this help and exit
--version output version information and exit
Owner is unchanged if missing. Group is unchanged if missing, but changed
to login group if implied by a ":" following a symbolic OWNER.
OWNER and GROUP may be numeric as well as symbolic.
Examples:
chown root /u Change the owner of /u to "root".
chown root:staff /u Likewise, but also change its group to "staff".
chown -hR root /u Change the owner of /u and subfiles to "root".
GNU coreutils online help:
Как быстро поменять пользователя файла и/или папки в linux
Чтобы сократить время на ознакомление с той командой, сразу дам готовый рецепт того, как быстро поменять пользователя файла и/или папки в linux. Формат этой команды такой:
Chown user:group /patch/filename chown -R user:group /patch/foldername
В первой строчке произойдёт смена пользователя на user , группы на group у файла /patch/filename .
Во второй строчке в примере выше использована дополнительная опция -R , которая означает рекурсивную обработку. То есть у папки /patch/foldername произойдёт смена владельца и группы, но этим дело не закончится, все папки и файлы, лежащие в этой директории также будут подвергнуты процессу смены владельца и группы. Рекурсия бывает очень удобна при глобальных изменениях в группой политики в системе.
Остальные опции команды chown не так часто востребованы и используются, поэтому пока не буду с ними разбираться.
Изменить владельца и права доступа на файлы и папки в Linux и *BSD системах
Представленная ниже информация будет полезная начинающим Linux и *BSD системным администраторам. По большому счету, в любой операционной системе, будь то Linux, Windows или FreeBSD, корректная работа приложений, сервисов и безопасность системы в целом напрямую зависит от прав доступа на файлы и папки. Используя ниже приведённые средства, можно решить практически 90% проблем, возникающих при настройке прав доступа.
Сменить владельца для всех папок и файлов . Для этих целей в Unix используется команда chown . Она обладает рядом параметров:
- Опции. Например, для того, чтобы изменения коснулись не только данной директории, но и всех поддиректорий, нужно применить команду рекурсивно, т.е. с параметром «-R».
- Владелец или группа владельцев («user:group» или «user»).
- Пути до папок / файлов, к которым нужно применить команду. Например, «/mnt/pool1/dts1/backup».
Таким образом, команда для смены смены владельца (и группы владельцев) для директорий и всех вложенных папок и фалов будет выглядеть так:
sudo chown -R user:group /home/user/dir/
Изменить права доступа на файл или папку в Linux и *BDS системах можно командой chmod . Стоит отметить, что в Unix имеются свои особенности в работе данной команды и принципа разделения прав. Так, кроме владельца файла или папки, можно настроить, какие операции может выполнять этот самый владелец и группа, а также все остальные пользователи. В Unix идёт разделение возможностей следующим способом — владелец, группа владельцев и другие. Также присутствует следующее разделение прав:
- Право на запуск файла (для папок — проход по директории).
- Право на изменение файла (создание и удаление файлов и папок в директории)
- Право на чтение файла (для папок — это право на просмотр содержимого директории)
Для удобства использования и запоминания, используется следующая кодировка:
- запуск — 1
- изменение — 2
- чтение — 4
Складывая данные цифровые обозначения мы получим набор прав, предоставляемый владельцу/группе/другим. Разберем данную информацию на примере:
Изменять файл имеет право только владелец, группа владельце может читать, остальные — ничего не могут, соответственно команда будет такой:
chmod 640 /media/fileshare/file.txt
Создавать файлы в папке могут все, но видит их только владелец:
chmod 622 /media/fileshare/messages/
Чтобы все могли запускать какую-либо программу, но никто, кроме владельца, не мог её редактировать:
chmod 711 /media/share/exec
Для изменения прав на все вложенные файлы и папки (т.е. рекурсивно) используется опять же ключ «-R».
Выполняя данные операции, стоит понимать — изменять права на файлы и директории могут только администраторы и владелец этих папок и файлов.
Изменение прав только на файлы или только на папки — команда find . При этом файлы обозначаются как file (f), а директории, соответственно — d. Например:
Каждый файл или папка в 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 имеют свои права доступа.
Есть 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 и chmod.
CHOWN
Chown — от английского change own. И так, как вы знаете в Linux есть пользователи и группы. У каждого пользователя есть свои файлы, созданные или загруженные. Каждый пользователь находится в собственной группе и может быть объеден c другими пользователями в другие группы.
Для того чтобы узнать кто владелец файла и в какой группе он находится, используйте команду:
Если вы хотите поменять или сменить владельца (пользователя) файла тогда вам поможет команда:
Sudo chown userName text.txt
В данном примере мы присвоили файл text.txt пользователю userName.
Если вы хотите поменять только группу, то можно воспользоваться командой chgrp:
Sudo chgrp groupName text.txt
Для того чтобы не вводить 2 разные команды делают так:
Sudo chown userName:groupName text.txt
Вначале указывается владелец файла, а после группа:
sudo chown имя_владельца : имя_группы text.txtЕсли вам нужно поменять в директории владельца и группу, а там множество файлов и папок тогда используйте ключ -R:
Sudo chown -R userName:groupName /var/www/site/
CHMOD
И так мы знаем, что существуют пользователи, группы. Теперь поговорим о правах доступа. Для чего этого необходимо? Например у вас есть директория в которой находятся личные файлы. Чтобы вы, владелец , например могли редактировать, просматривать файлы, группа , только видеть данные, файлы, а остальные пользователи которые не входят ни в одну из групп и не являются владельцами, вообще не могли ничего сделать, вот поэтому и необходимы права доступа.
Права на файл могут обозначаться цифрами и буквами:
Значения прав в цифрах суммируются:
- полные права (rwx) 7 = 4 + 2 +1
- чтение и запись (rw-) 6 = 4 + 2 + 0
- чтение и выполнение (r-x) 5 = 4 + 0 + 1
- только чтение 4 (r—) = 4 + 0 + 0
- только запись 2 (-w-) = 0 + 2 + 0
- права отсутствуют (—) 0 = 0 + 0 + 0
Для каждого файла и директории назначаются отдельно права для владельца, группы и остальных пользователей.
Владелец Группа Остальные u g o права доступа буквы права доступа цифры rwxrwxrwx 777 читают, записывают, выполняют все rwxr-xr-x 755 читает, записывает, выполняет читать и запускать rw-r—r— 644 чтение и запись только четние r——— 400 читает только владец — — Изменять права доступа на файл или директорию командой chmod можно как числами, так буквами.
Назначение прав доступа цифрами
Для того чтобы изменить права файлу или директорию командой chmod используя цифры, введите команду:
Sudo chmod 755 text.txt
Для директорий необходимо после chmod добавить ключ -R .
Чуть ниже полезная команда, как массово поменять права во всех папках и под папках.
Для папок:
Find /ваш_путь -type d -exec chmod 755 {} \;
Для файлов:
Find /ваш_путь -type f -exec chmod 644 {} \;
Назначение прав доступа буквами
Для новичков изменять права доступа буквами будет слегка сложней, но данные знания пригодятся.
Как вы знаете что есть владелец, группа, остальные пользователи, они обозначаются следующим образом:
u user Владелец g group