Команды linux для работы с файлами
Содержание:
- Как определить владельца группы, файла или директории в Линукс
- Transferring Ownership with chown
- Как назначить владельца папки или файла в Линукс
- Как изменить владельца файла
- AÇIKLAMA
- Права доступа
- Что такое права доступа к файлам и папкам
- chown command
- Why change a file’s ownership?
- Права пользователя на папку Linux
- Ownership and Access Rights
- DESCRIPTION
- Как изменить владельца
- Из чего состоят права доступа
- Изменить права доступа к папке Linux в символьном режиме
Как определить владельца группы, файла или директории в Линукс
После просмотра этой информации у человека возникает резонный вопрос: как узнать владельца документа или каталога операционной системы. Для этого необходимо воспользоваться все теми же командами, которые были указаны выше: «ls –l» или «ls –l название каталога». В первом случае необходимо перейти в папку и ввести команду, а во втором ее достаточно указать, находясь в любом другом месте. После выполнения команды будет выведена строка. Первыми ее параметрами будут символьные формы, а затем имя владельца файла и название группы.
Важно! Если человек не является хозяином каталога или файла, но входит в группу, то он будет обладать всеми привилегиями на документ, которые определены для той или иной группы
Вывод символьной формы при проверке привилегий доступа
Transferring Ownership with chown
Files can be transferred between users with chown. The name chown is an abbreviation for “change owner”.
We can change the owner of document.docx by calling:
The document is now owned by Alice:
The owning group of the document is still bob. We only told chown to change the owner, not the group. As a result, by means of group membership, both Alice and Bob now have read and write access to this document.
To change the group to alice, we could do one of three things.
We can change the owner and group to alice:
Because we want to change the owning group to the default group of the user, we could omit the group:
Or alternatively, as we only want to change the owning group, we could call:
And then, the result will be:
In Linux, as a regular user, it’s not possible to give away the ownership of our files to someone else. We either have to be running as root, or have privileges to run chown through sudo:
Как назначить владельца папки или файла в Линукс
Изменить администратора того или иного файла или директории можно с помощью привычной команды «chown». Шаблон ее использования выглядит следующим образом: «sudo chown имя_нового_владельца:имя_новой_группы имя_файла_или_директории». Она требует привилегий админа для ее запуска и выполнения.
То же самое, но для изменения только группы: «sudo chown :имя_новой_группы имя_файла_или_директории». Для определения имени активного пользователя применяют команду «whoami», а для группы – «groups». Вывести список всех пользователей можно по строке «users».
Узнавать полные привилегии можно через специальную команду
В этом материале было рассмотрено, как изменить права доступа к файлу или папке на Linux. Все достаточно просто, так как это базовый функционал операционной системы, и знаком с ним должен быть каждый человек, работающий на Unix-системах. Сменить или проверить привилегии людей на те или иные документы можно с помощью банальных команд.
Как изменить владельца файла
Чтобы изменить владельца файла, используйте команду а затем имя пользователя нового владельца и целевой файл в качестве аргумента:
Например, следующая команда изменит владельца файла с именем на нового владельца с именем :
Чтобы изменить владельца нескольких файлов или каталогов, укажите их в виде списка через пробел. Команда ниже меняет владельца файла с именем и каталогом на нового владельца с именем :
Числовой идентификатор пользователя (UID) можно использовать вместо имени пользователя. Следующий пример изменит владельца файла с именем на нового владельца с UID :
Если в качестве имени пользователя существует числовой владелец, то владение будет перенесено в имя пользователя. Чтобы избежать этого префикса ID с :
AÇIKLAMA
Bu kılavuz, chown komutunun GNU sürümünü anlatmaktadır. chown,
belirtilen her bir dosya için kullanıcı ve/veya grup sahipliğini,
seçenek olmayan ilk argümana göre, değiştirir. Şöyleki: Şayet, sadece
bir kullanıcı adı veya sayısal kullanıcı kimliği belirtilmişse,
kullanıcı belirtilen dosyaların sahibi olur ve dosya grubu değişmez.
Şayet kullanıcı isminden sonra iki nokta üstüste veya bir nokta ile
ayrılmış grup ismi (veya sayısal grup kimliği) varsa, grubun sahipliği
de değişir. Buradaki önemli nokta, kullanıcı ismi ve grup ismi arasında
boşluk olmaması gerektiğidir. Kullanıcı isminden sonra iki nokta
üstüste veya nokta var fakat grup ismi yok ise; kullancı dosyanın
sahibi olur ve dosya grubu, kullanıcının birincil grubu olarak
değiştirilir. Nokta veya iki nokta üstüste ve grup adı belirtilmiş ama
kullanıcı adı belirtilmemişse, sadece dosya grubu değiştirilir. Bu
durumda; chown, chgrp’un yaptığını yapar. Sadece ikinokta imi varsa ya
da sahip:grup terimi hiç verilmemişse, dosya sahipliğinde bir
değişiklik yapılmaz.
Права доступа
Права доступа имеют всего 3 опции − чтение, запись и запуск на выполнение, устанавливаемые для владельца, группы и прочих пользователей. Для папки запуск на выполнение означает просмотр содержимого − списка файлов и вложенных папок.
Права можно задавать либо буквами r (read), w (Write) и x (eXecute), либо в двоичной системе (точнее в восьмеричной с использованием цифр от 0 до 7, но основано на двоичной системе).
Праву на чтение (r) соответствует значение 4, записи (w) − 2 и выполнению/просмотру файлов (x) − 1. Комбинируя эти значения, можно получать разные права. Например:
- 6 (4 + 2) − чтение и запись в файл, либо чтение и запись файлов из папки, но для конкретных файлов права доступа определяются отдельно;
- 5 (4 + 1) − чтение и выполнения файла, либо чтение из папки и просмотр её содержимого. Снова же, это не означает автоматического доступа к для вложенным объектам, а определяется их правами;
- 7 (4 + 2 + 1) − полный доступ, чтение, запись файла или файлов в папку и выполнение файла или просмотр содержимого папки.
Первыми задаются права доступа для владельца, затем для группы и в конце для всех прочих.
Обычно для документов и файлов данных устанавливаются права 644 или 664. Это означает, что владелец может читать и изменять файл (включая удаление), члены группы в первом случае только читать, а во втором изменять, а все прочие − только читать.
Для исполняемых файлов и папок обычно задаются права 755 или 775. Значения те же, что и в предыдущем абзаце плюс присутствует право на выполнение или просмотр списка вложенных объектов.
Если задавать права доступа буквами, то указываются нужные права в виде rwx, а то, что нужно пропустить, заменяется дефисом. То есть, 644 соответствует rw-r—r—, а 755 − rwxr-xr-x.
Использовать цифры или буквы − не имеет значения, это дело привычки. Хотя, при использовании букв можно быстро дать или убрать право на запись, указав «+w» или «-w», что проще, чем вычислять в голове числовые значения. Лично я использую оба способа.
Что такое права доступа к файлам и папкам
Как правило мы размещаем свои сайты на хостингах, работающих под Unix-подобных операционных системах (Linux, например). Эти операционные системы отличаются от привычной рядовому юзеру Windows, в частности тем, что позволяют гибко задавать различные права доступа для разных групп лиц.
CHMOD
(анг. change file mode) — изменение прав доступа к файлам в ОС типа Unix.
Если говорить на простом языке, каждому файлу задаются атрибуты, показывающие что кому разрешено делать с этим файлом (например, владельцу читать и редактировать, а посторонним лицам только читать).
Обычно права доступа записываются в виде трех цифр, каждая из которых относится к определенному виду пользователей:
- Владелец файла
- Члены группы, к которой относится владелец
- Остальные пользователи
Для каждого из этих видов пользователей существует три права: чтение (4), редактирование (2), выполнение (1). Если пользователю нужно задать несколько прав, то цифры в скобках складываются:
Чтение + редактирование = 4 + 2 = 6
Чтение + редактирование + выполнение = 4 + 2 +1 = 7
Если установить права доступа 777
– полный доступ, это будет означать, что абсолютно любой пользователь сможет сделать с вашим файлом абсолютно все. Представьте, к чему может привести установление такого атрибута для важных системных файлов.
Поэтому, если при работе с блогом, у вас возникли проблемы с редактированием какого-то файла, поменяйте атрибут только для своего пользователя (первую цифру замените на 7), не нужно задавать файлу полные права 777.
Права можно записать другим способом – латинскими буквами
- Чтение (Read) — r
- Редактирование (Write) — w
- Запуск на выполнение (Execute) — x
- Отсутствие прав — (0) —
Примеры прав доступа:
Пользователь |
Группа |
Остальные |
||
— | 600 | только владелец имеет право читать и редактировать | ||
r— | 644 | владелец файла, владелец имеет право читать и редактировать, члены группы и остальные только читать | ||
rw- | 666 | любой пользователь имеет право читать и редактировать | ||
— | 700 | только владелец файла имеет право читать, редактировать и запускать на исполнение | ||
—x | 711 | владелец файла имеет право читать, редактировать и запускать на исполнение, члены группы и остальные пользователи имеют право запускать на исполнение, но не могут читать и изменять | ||
r-x | 755 | владелец файла имеет право читать, редактировать и запускать на исполнение, члены группы и остальные имеют право читать и запускать на исполнение, но не могут записывать | ||
rwx | 777 | любой пользователь имеет право читать, редактировать и запускать на исполнение |
По умолчанию для папок выставляются права — 755, а для файлов — 644.
chown command
The chown command changes the user and/or group ownership of for given file. The syntax is:
chown owner-user file chown owner-user:owner-group file chown owner-user:owner-group directory chown options owner-user:owner-group file |
Examples
First, list permissions for demo.txt, enter: Sample outputs:
-rw-r--r-- 1 root root 0 Aug 31 05:48 demo.txt
In this example change file ownership to vivek user and list the permissions, run: Sample outputs:
-rw-r--r-- 1 vivek root 0 Aug 31 05:48 demo.txt
In this next example, the owner is set to vivek followed by a colon and a group onwership is also set to vivek group, run: Sample outputs:
-rw-r--r-- 1 vivek vivek 0 Aug 31 05:48 demo.txt
In this example, change only the group of file. To do so, the colon and following GROUP-name ftp are given, but the owner is omitted, only the group of the files is changed: Sample outputs:
-rw-r--r-- 1 vivek ftp 0 Aug 31 05:48 demo.txt
Please note that if only a colon is given, or if NEW-OWNER is empty, neither the owner nor the group is changed: In this example, change the owner of /foo to “root”, execute: Likewise, but also change its group to “httpd”, enter: Change the owner of /foo and subfiles to “root”, run: Where,
-R – Recursively change ownership of directories and their contents.
Why change a file’s ownership?
You should use chown when you want a file’s user or group permissions to apply to a different user or group.
Hypothetical scenarios
Here are some examples of when you might use chown:
You create a file, myfile.txt, using sudo or while logged in as root, so the file is owned by root. However, you intend the file to be used by your regular user account, myuser.Use chown to change the owner:
sudo chown myuser myfile.txt
You own myfile.txt, but you want to give it to another user on the system named notme. You also want to change the owning group to that user’s group, notmygroup.Use chown to change the owner and group:
sudo chown notme:notmygroup myfile.txt
You just transferred an entire directory of files, otherfiles, from another computer. All the files and directories are owned by your username on the other system, and you want your current user and group to own them all.Change the ownership of the directory and all its contents recursively, with the -R option:
sudo chown -R myuser:mygroup otherfiles
The above command will change the ownership of every file, subdirectory, and subdirectory contents in otherfiles.
Groups in Linux
In Linux, a user can be a member of multiple groups, but it has only one «current group». The user’s current group is the user’s group identity, or GID.
When the user creates a new file, the file’s ownership is set to the user’s UID (user identity) and GID (group identity). So when user carla starts writing a new document, the file is owned by carla, and also by her current group. She can change the file’s group ownership with chown, but only root can use chown to change the owner to someone else.
Also, each user has a configurable login group, which can be any of the user groups. So when carla logs in, her login group is her current group. The login group can be changed with the usermod command, using the -g option.
sudo usermod -g newlogingroup carla
A user can change current group with the newgrp command. The change takes place in a , and persists until the subshell is closed. Even if carla changes her current group with newgrp, it will be reset to her login group the next time she logs in.
You can check your current group using the id command with the -g option:
id -g
1001
This is your numeric GID (the number of your current group). To see the name, specify the -n option:
id -ng
hope
To view all of your group memberships, use a capital G:
id -nG
hope sudo neil libvirtd vboxusers usergroup
By default, every Linux user has a private group, with that user as the only member. So, when the user account jeff is created with the adduser command, a group named jeff is also created. Group jeff is jeff’s default login group, and has only one member (jeff).
Groups in other operating systems
Other operating systems use chown, but their groups may function differently.
In macOS X and BSD, for example, users don’t have private groups. Instead, all regular users belong to a general group called users.
In these operating systems, the options and functionality of chown may be similar, but different. If you’re using chown on a non-Linux operating system, make sure to run man chown to learn what the differences are.
Права пользователя на папку Linux
Как я уже сказал, права делятся на три категории для владельца, для группы и для всех остальных. Таким образом, мы можем дать пользователю доступ к папке несколькими способами:
- Изменить права для всех — тогда все пользователи получат доступ к нашей папке, в том числе и нужный пользователь. Но, обычно, так никто не делает, потому что это небезопасно и в производственных системах важные данные могут попасть в чужие руки;
- Изменить владельца папки на нашего пользователя — по умолчанию владелец имеет полные права на папку, то есть запись и чтение. Если мы сделаем владельцем нашего пользователя, то он автоматически получит все права, а другие пользователи по-прежнему не смогут получить доступ к папке. Но такой вариант тоже не совсем правильный, потому что, обычно, у папки уже есть владелец и изменив владельца мы уберем у него доступ;
- Добавить к папке группу и добавить в нее пользователя — самый верный путь. Файл или папка может принадлежать определенной группе пользователей, но только одной, и мы можем установить для этой группы отличающиеся от владельца права. Но в группу можно добавить несколько пользователей, поэтому мы никого не оставляем без доступа. По умолчанию, для всех файлов устанавливается группа владельца, но это можно очень просто изменить.
Теперь давайте разберем как это реализуется на практике. Допустим, у нас есть папка /storage, владельцем которой является пользователь /root:
ls -l / | grep storage
У папки такие права, что записывать в нее данные может только root, а другие пользователи могут их только смотреть. Нам надо предоставить к ней доступ на запись и чтение пользователю sergiy. Сейчас у него такого доступа нет:
Давайте создадим группу storage и добавим в нее пользователя sergiy:
sudo groupadd storage sudo usermod -aG storage sergiy
Смотрим список групп нашего пользователя:
После добавления пользователя в группу нужно перелогиниться, чтобы система увидела это изменение. Затем меняем группу нашей папки на storage:
sudo chgrp storage /storage
Если нужно дать права на папку в Linux еще какому-нибудь пользователю, то достаточно добавить его в эту группу. Посмотрим список пользователей группы:
Теперь наша папка выглядит вот так:
ls -l / | grep storage
Осталось подправить права для группы, нужно дать разрешение на чтение и запись:
chmod g+rw /storage
Затем пользователь sergiy сможет записывать и читать файлы из этой папки, а все остальные пользователи только читать.
Ownership and Access Rights
As mentioned earlier, the file metadata contains information about the user and group that owns the file. Also, it contains information about who is allowed to read, write and execute it.
We can list this information by using ls:
There are two parts of information that are of particular interest to us:
From left to right, this means that the file document.docx is owned by user bob and its owning group is also called bob. This is possible because, by default, Linux creates a private group for each user with the user’s name.
Next there’s:
These are the access permissions. The first character describes the file type. The remaining characters come in three groups of three characters, respectively describing the access rights of the owner, the owning group and then everyone else.
In each group, the first character is for read access (r), followed by write access (w) and the right to execute (x). A dash means that the permission is turned off.
Therefore, full permissions for everyone on the system would look like:
In Linux, files and directories are treated similarly. The main difference between access rights for files and directories is that the x permission on a file grants permission to execute it, where on a directory, it grants permission to enter it.
DESCRIPTION
If used, NewOwner specifies the new owner and/or group as follows(with no embedded white space):
chown ]
Following are the examples of how the owner/group can be specified:
-
If only an OWNER (a user name or numeric user id) is given, that user is made the owner of each given file, and the files’ group is not changed.
chown OWNER
-
If the OWNER is followed by a colon or dot and a GROUP (a group name or numeric group id), with no spaces between them, the group ownership of the files is changed as well (to GROUP).
chown OWNER.GROUP chown OWNER:GROUP
-
If a colon or dot but no group name follows OWNER, that user is made the owner of the files and the group of the files is changed to OWNER’s login group.
chown OWNER. chown OWNER:
-
If the colon or dot and following GROUP are given, but the owner is omitted, only the group of the files is changed; in this case, ‘chown’ performs the same function as ‘chgrp’.
chown .GROUP chown :GROUP
Как изменить владельца
Изменения владельца и группы можно сделать как из консоли, так и при помощи различных приложений. Например, практически во всех графических окружениях это позволяет диспетчер файлов (в используемом мной Cinnamon это Nemo, в KDE − Dolphin). Также это позволяет файловый менеджер Double Commander и прочие приложения.
Для наглядности будем выполнять операцию из консоли, для этого в Cinnamon/GNOME/MATE нужно нажать Ctrl+Alt+T (если вы не меняли эту комбинацию клавиш). Для изменения владельца используется команда chown, которая так и расшифровывается (англ. «change owner»).
По умолчанию консоль запускается в домашней папке, здесь и будем пробовать. Для начала создадим папку для экспериментов:
mkdir testdir
Если мы выведем список файлов при помощи «ls -l», то увидим следующую строку (вместо «rizado» будет ваше имя пользователя):
drwxr-xr-x 2 rizado rizado 4096 мар 23 19:33 testdir
Теперь попробуем изменить владельца и группу, причём поставить их разными (слэш в конце имени папки необязателен, я использую для удобства − сразу видно, что не файл). Первым указывается владелец, затем через двоеточие группа:
sudo chown root:audio testdir/
Если после этого вывести список файлов, то строка будет иметь следующий вид:
drwxr-xr-x 2 root audio 4096 мар 23 19:33 testdir
Аналогично владельца можно изменить обратно (подставьте своё имя пользователя и группы):
sudo chown rizado:rizado testdir/
Для файлов меняется аналогично. Интересный момент, что при смене владельца и группы для папки эти значения для вложенных файлов и папок не меняются. Для обработки всех вложенных объектов нужно указать ключ «-R» (именно заглавную букву):
sudo chown root:root -R testdir/
Больше информации можно получить, набрав в консоли:
chown --help
или
man chown
Из чего состоят права доступа
Каждый файл в операционной системе Linux имеет права доступа. Права доступа определяются тремя атрибутами:
наборразрешений(rwxrwxrwx)
владелецпользователь(user, owner)
владелецгруппа(group)
Набор разрешений
Для каждого файла в Linux задается набор разрешений. Разрешения могут быть следующими:
- r — read — возможность открытия и чтения файла. Для директории это возможность просматривать содержимое директории.
- w — write — возможность изменения файла. Для директории это возможность добавлять, удалять или переименовывать файлы в директории.
- x — execute — возможность выполнения файла (запуска файла). Если проводить аналогию с Windows, то это что-то вроде .exe-файлов. Если право доступа на запуск файла отключено, то вы по прежнему можете читать или изменять файл (если включены права на чтение и запись), но не можете запускать файл. Для директории запуск означает возможность войти в директорию и получить доступ к файлам и поддиректориям в ней.
Набор разрешений состоит из 3 блоков rwx:
rwxrwxrwx
Если какая-либо возможность отключена, то вместо соответствующего символа в блоке ставится прочерк, например: rw-rw-r—
- Первый блок rwx определяет права доступа для владельца-пользователя.
- Второй блок rwx определяет права доступа для владельца-группы.
- Третий блок rwx определяет права доступа для всех остальных.
Владелец-пользователь
У каждого файла в Linux есть владелец-пользователь (также обозначается как user или owner). По умолчанию, тот, кто создал файл, становится его владельцем.
Первый блок rwx в наборе разрешений файла задет разрешения именно для данного пользователя.
Владелец-группа
У каждого файла в Linux есть владелец-группа (group). Звучит немного странно, но сейчас объясню. Каждая группа в Linux может содержать несколько пользователей. Все пользователи, принадлежащие группе, будут иметь одинаковые права доступа к данному файлу.
Например, у вас есть проект, в котором задействовано несколько работников. Вы можете создать для них группу, например — projectx. Для файлов этого проекта вы устанавливаете группу projectx и запрещаете доступ для всех остальных. Таким образом, только работники проекта (которые входят в группу projectx) смогут иметь доступ к этим файлам, а все остальные нет.
Второй блок rwx в наборе разрешений файла задает разрешения именно для данной группы.
Все остальные
К этой категории относятся все остальные пользователи, имеющие доступ к файлу. Но эти пользователи не относятся к владельцу-пользователю и они не входят в группу, которая владеет файлом (владелец-группа).
Третий блок rwx в наборе разрешений файла задает разрешения для этих пользователей.
Для изменения прав доступа у файлов и директорий служит команда chmod.
Изменить права доступа к папке Linux в символьном режиме
Для того чтобы изменить привилегии доступа к файлам и каталогам в символьном режиме, необходимо выполнить команду «chmod personsOperatorRights имя_файла_или_имя_директории», где вместо слова «persons» вставляют такие ключи:
- «u» – пользователи и владельцы файлов и директорий;
- «g» – группы в которые входит пользователь;
- «o» – остальные люди, пользующиеся компьютером;
- «a» – определение изменений для всех категорий юзеров вместе.
Символ определяет сущность, которой назначаются или с которой снимаются права доступа. Вместо слова «operator» могут быть такие символы: «+» (добавить привилегии), «-» (убрать привилегии) и «=» (установить привилегии). «Rights» могут иметь такие значения: «r» – чтение, «w» – редактирование, «x» – выполнение. Если нужно дать все и сразу, топ прописывают «rwx» без пропусков, типе и пробелов.
Поменять владельца файла Linux не составит большого труда