Каждый современный человек владеет ноутбуком, но как самому убрать возникающие...
![Пропал звук на ноутбуке — что делать?](https://i0.wp.com/sovets.net/photos/uploads/120/8110495-2razrabotanyi-spetsialnyie-programmyi-kotoryie-testiruyut-audio-drayveryi-soundcheck.jpg)
Основа философии Linux - все объекты операционной системы - это файлы, для предоставления доступа к тем или иным возможностям системы мы просто даем доступ пользователю к нужным файлам или убираем. Я более подробно рассказывал обо всех правах в статье , здесь же скажу только что у каждого файла есть три группы прав: для владельца, группы и всех остальных.
При создании файла ему тот пользователь, от имени которого он был создан становится его владельцем, а группой устанавливается основная группа владельца. Но владельца файла и группу можно менять, для этого используются команды chown и chgrp. В этой статье будет рассмотрена команда chown linux, а также основные примеры её использования.
Синтаксис chown, как и других подобных команд linux очень прост:
$ chown пользователь опции /путь/к/файлу
В поле пользователь надо указать пользователя, которому мы хотим передать файл. Также можно указать через двоеточие группу, например, пользователь:группа . Тогда изменится не только пользователь, но и группа. Вот основные опции, которые могут вам понадобиться:
Утилита имеет ещё несколько опций, но это самые основные и то большинство из них вам не понадобится. А теперь давайте посмотрим как пользоваться 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 интересуюсь всем, что связано с информационными технологиями и современной наукой.
В этом руководстве вы научитесь изменять права доступа в Linux / Unix и устанавливать нового владельца файла/папки через командную строку . Существует 2 базовые команды, которые могут быть использованы для данных целей: chmod и chown .
Перед тем, как вы начнете это руководство, вам понадобится следующее:
chmod – эта команда используется для изменения прав доступа к файлу или папке. Каждый файл имеет типы пользователей, которые могут с ним взаимодействовать:
Команда ls -l , может быть использована для отображения прав доступа и владельца. К примеру, команда ls -l file1.txt отобразит:
Хорошо, теперь давайте вернемся к команде chmod . Это команда позволяет нам изменить права доступа к файлу или папке. Мы научим вас, как это сделать просто складывая номера . Каждое из прав доступа имеет свой собственный номер :
К примеру, если мы хотим изменить права доступа к файлу file1.txt на эти:
Мы должны написать следующую команду:
Chmod 746 file1.txt
Каждый номер в этой команде представляет собой права для одного из типов пользователей (владелец, группа и другие). Первый номер 7. Теперь, используя объяснение числовых значений выше, единственный вариант для получения числа 7 – сложение чисел 4, 2 и 1, получаем 4+2+1=7. Проще говоря, это означает ВСЕ права доступа (чтение, запись, выполнение – rwx). Первый номер устанавливает права доступа для владельца файла. Второй номер 4, который означает права доступа -r (чтение), устанавливает права доступа для группы владельца . Третий номер 6, используя тот же способ, что и с первым номером, 4+2=6, дает группе другие, права на чтение (4) и запись (2) файла. Третья часть в команде (file1.txt ) – это имя файла для которого мы изменяем права доступа.
Еще один пример:
Chmod 777 file2.txt
эта команда даст все права для каждого типа пользователей (владелец, группа и другие ).
Вот список самых наиболее распространённых прав доступа для файлов:
Значение | Цифровое значение | Объяснение |
---|---|---|
-rw--- | 600 | Владелец может читать и записывать файл. |
-rw-r–r– | 644 | Владелец может читать и записывать файл, группа и другие могут только читать. |
-rw-rw-rw- | 666 | Владелец, группа и другие могут читать и записывать. |
-rwx-- | 700 | Владелец может читать, записывать и выполнять, группа и другие не имеют никаких прав доступа. |
-rwx–x–x | 711 | Владелец может читать, записывать и выполнять, группа и другие могут только выполнять. |
-rwxr-xr-x | 755 | Владелец может читать, записывать и выполнять, группа и другие могут читать и выполнять. |
-rwxrwxrwx | 777 | Все типы пользователей могут читать, записывать и выполнять. |
Наиболее распространенные права доступа для каталогов:
Существуют и другие способы изменения прав доступа в Linux, используя команду chmod . Но нашей персональной рекомендацией станет, изучение одной из этих команд и её использование (в этом случае способ с номерами). Если вы хотите узнать больше о других путях изменения прав доступа, вы можете прочитать об этом .
chown – команда используется для смены владельца файла или папки. Самый стандартный синтаксис для этой команды:
Chown [владелец/группа владельца] [имя файла]
К примеру, если у нас есть файл “demo.txt ” и мы хотим изменить владельца на “jerry ” и группу владельца на “clients ”, нам необходима эта команда:
Chown jerry:clients demo.txt
Как вы видите, мы отделили владельца и группу владельца символом “: ” (двоеточие). Если мы хотим поменять только владельца файла, используем этот код:
Chown jerry demo.txt
Мы просто убрали группу владельца и вписали нового владельца файла, в таком случае группа владельца останется без изменений.
Другой схожий пример, если мы хотим поменять только группу владельца:
Chown:clients demo.txt
В этом случае, группа владельца изменится на clients (владелец останется прежним).
Одна из основных опций работающая с обеими командами это -R, которая означает рекурсивный. Эта опция позволяет вам менять права доступа и владельца файла, заданной папки и ВСЕХ других файлов внутри нее.
ВАЖНО! Будьте очень осторожны с этой опцией, если вы используете ее неправильно, вы можете изменить права доступа и владельца ВСЕХ файлов в вашей системе, что приведет к ошибкам в работе и трате огромного количества времени на откат изменений.
Другие опции для “chmod” и “chown”:
Каждый файл или папка в 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:
- 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 | запретить удаление всем, кроме владельца |
"-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 . Как обычно, первым делом заглянем в подсказку операционной системы по этой команде:
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. Формат этой команды такой:
Chown user:group /patch/filename chown -R user:group /patch/foldername
В первой строчке произойдёт смена пользователя на user , группы на group у файла /patch/filename .
Во второй строчке в примере выше использована дополнительная опция -R , которая означает рекурсивную обработку. То есть у папки /patch/foldername произойдёт смена владельца и группы, но этим дело не закончится, все папки и файлы, лежащие в этой директории также будут подвергнуты процессу смены владельца и группы. Рекурсия бывает очень удобна при глобальных изменениях в группой политики в системе.
Остальные опции команды chown не так часто востребованы и используются, поэтому пока не буду с ними разбираться.
chown [-fhv] [-R [-H | -L | -P]] владелец [:группа ] файл ... chown [-fhv] [-R [-H | -L | -P]] :группа файл ... Программа изменяет владельца и/или группу файла или директории, то есть UserID и GroupID для указанного файла. Если не указана опция -h , символические ссылки переданные в качестве аргументов, не изменяютсяВозможно использование следующих опций: -H Если установлена опция -R , следовать по ссылкам из командной строки. (Ссылки найденные при обходе дерева каталогов не прослеживаются) -L Если опция -R установлена, следовать по всем символическим ссылкам. -P Если опция -R установлена, не следовать по ссылкам. Поведение по-умолчанию. -R Рекурсия. Изменить UserID и/или GroupID для всего дерева директорий и файлов начиная с указанной. Остерегайтесь совпадения с жесткой ссылкой на родительский каталог "..", при использовании шаблона ".*". -f Не сообщать о неудачной попытке изменить владельци и группу не менять код завершения операции, для сигнализирования о неудаче. -h Если файл является символической ссылкой, изменить UserID и/или GroupID только на саму ссылку. -v Режим вывода сообщений о ходе выполнения программы. Если опция указана более одного раза, chown выведет имя файла вслед за старыми и новыми UserID/GroupID . Опции -H , -L и -P , будут проигнорированы, если опция -R не установлена. Кроме того, все эти опции, переопределяет друг друга, и поведение команды chown , будет определятся опцией которая указана последней. Опции владелец и группа не являются обязательными, но должна быть указана хотя-бы одна из них. Если указывается только группа , перед ней ставится знак : (двоеточие). Параметр владелец файла, может быть представлен как в виде числового выражения UserID, так и в виде символического имени. Если имя пользователя совпадает с его UserID, операнд используется как "имя пользователя". То же самое относится к параметру группа . Принадлежность файла может быть изменена только суперпользователем, по соображениям безопасности. Программа chown возвращает 0 при удачном завершении и >0 в случае возникновения ошибки. СМОТРИТЕ ТАКЖЕ chgrp(1), find(1), chown(2), fts(3), symlink(7)