Команда chmod Linux
Система полномочий в Linux имеет очень важное значение, поскольку благодаря ей можно разделять привилегии между пользователями, ограничить доступ к нежелательным файлам или возможностям, контролировать доступные действия для сервисов и многое другое. В Linux существует всего три вида прав — право на чтение, запись и выполнение, а также три категории пользователей, к которым они могут применяться — владелец файла, группа файла и все остальные.
Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а этой, я хочу остановиться на команде chmod, которая используется для установки прав.
Команда chmod Linux
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmod опции права /путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
Синтаксис настройки прав такой:
группа_пользователей действие в ид_прав
В качестве действий могут использоваться знаки «+» — включить или «-« — отключить. Рассмотрим несколько примеров:
- u+x — разрешить выполнение для владельца;
- ugo+x — разрешить выполнение для всех;
- ug+w — разрешить запись для владельца и группы;
- o-x — запретить выполнение для остальных пользователей;
- ugo+rwx — разрешить все для всех;
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
- 744 — разрешить все для владельца, а остальным только чтение;
- 755 — все для владельца, остальным только чтение и выполнение;
- 764 — все для владельца, чтение и запись для группы, и только чтение для остальных;
- 777 — всем разрешено все.
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
- -c — выводить информацию обо всех изменениях;
- -f — не выводить сообщения об ошибках;
- -v — выводить максимум информации;
- —preserve-root — не выполнять рекурсивные операции для корня «/»;
- —reference — взять маску прав из указанного файла;
- -R — включить поддержку рекурсии;
- —version — вывести версию утилиты;
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Примеры использования chmod
Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай — разрешить выполнения скрипта владельцу:
Или можно воспользоваться цифровой записью:
chmod 766 file
ls — l file
Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux. Например, в первом варианте вы просто добавили флаг выполнения для владельца файла, а все остальные права оставили неизменными. В восьмеричном варианте мы полностью заменили текущие права новыми — все для владельца и чтение/запись для группы и остальных. Как видите, права установлены как и ожидалось. Теперь отключим выполнение владельцем:
Дальше разрешим только чтение всем, кроме владельца:
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права — используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:
chmod -R ug+rw dir
ls -l dir/
Также вы можете смотреть подробную информацию про вносимые изменения, например:
Выводы
В этой небольшой статье была рассмотрена команда chmod linux. Она очень часто используется наряду с такими командами, как chown и umask для управления правами. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Change Permissions Linux Changing Permissions in Linux System
In Absolute mode, we use the Octal Number to represents Permissions for Owner, Group, and Others.
Okay, but what do you mean by Octal Number?
Octal is a number system that is used to represent numbers on a computer.
In Octal, counting is done with numbers from 0 to 7
Octal Number | Type of Permission | Symbol |
---|---|---|
0 | No Permission | — |
1 | Execute Only | —x |
2 | Write Only | -w- |
3 | Write and Execute | -wx |
4 | Read Only | r— |
5 | Read and Execute | r-x |
6 | Read and Write | rw- |
7 | Read, Write and Execute | rwx |
Let’s look at the syntax for chmod
To change the mode of a file/directory we just use chmod along with one of the modes from the above table and files/directories.
In the above example, we used the command ls -l hello.txt to check the current permissions for owner, group, and others and found that the owner had read and write (rw-) permission, group also had read and write (rw-) permission and other had read-only permission (r—)
What if to make it more secure we wanted to change the permission for the group to read-only and keep the rest as is
we used the command chmod 644 hello.txt where
chmod represents the command change mode
644 represents read-write, read-only and read-only permissions
hello.txt represents name of the file we want to change permissions for.
Now that we know how to use chmod command let’s look at what are some most used modes
Mode | File Attributes | Meaning of mode |
---|---|---|
777 | rwxrwxrwx | No restrictions on permissions. Generally, not a good setting as anyone can change and execute your file |
700 | rwx—— | The owner has full access. Nobody else has any rights. This setting is useful if we want to keep our files and directories private. Similarly we can use 600 for non-executable file |
644 | rw-r—r— | The owner may read and write a file, while all others may only read the file. This setting is useful if the owner should be the only one to change the file |
666 | rw-rw-rw- | All users may read and write the file. This setting is useful if you have some common file |
Now, let’s move on the 2nd way we can change mode
Symbolic Notation
The Symbolic notation is divided into three parts
Unlike Absolute mode in Symbolic notation, we can actually specify who should be affected by the change
u represents user(Owner)
g represents group
o represents others
a represents all(i.e. u , g and o )
+ represents an operation to add a permission
— represents an operation to remove a permission
= represents an operation to set permission and replace the previous one
r represents read permission
w represents write permission
x represents execute permission
Let’s take an example of each operation
In the above example, we used the command chmod u+x hello.txt to add executable permission to the Owner where
chmod represents the command to change mode
u represents user(Owner)
+ represents the addition of permission
x represents executable permission
In the above example, we used the command chmod o-r hello.txt to remove the read-only permission from Other where
chmod represents the command to change mode
o represents other
— represents the removal of permission
r represents read permission
In the above example, we used the command chmod g=wr hello.txt to assign the read and write permission to group where
chmod represents the command to change mode
g represents group
= represents the assignment of permission
wr represents read and write permission
Note: If we don’t specify who will be affected, it is by default taken as all
This was all about changing permissions of a file/directory.
Now, let’s look at how to change ownership and group of a file/directory.
chown Command
The chown command is used to change the owner/group of a file.
In the example, we can see that the owner and group of the file hello.txt is «yash».
Let’s try and change the owner of the file to «root».
Since we are changing the ownership of the file this operation will require the root access
In the above example, we first tried changing the ownership without using root privileges and it gave us an error.
Then we used the command sudo chown root hello.txt command where
sudo for executing as a superuser
chown represents the change ownership command
root represents the new owner
hello.txt represents the file to be affected
Let’s take another example where we change our owner back to «yash» but change our group to «root»
In the above example, we used the command sudo chown yash:root hello.txt where
sudo for executing as a superuser
chown represents the change ownership command
yash represents the new owner
root represents the new group
hello.txt represents the file to be affected
What if we just wanted to change our group?
chgrp Command
To change the group using chgrp command we just use chgrp newGroupName fileName
Let’s take an example, we recently changed the group of our file «hello.txt» from «yash» to «root».
In the above example, we used the command chgrp yash hello.txt where
chgrp represents the change group command
yash represents the new group
hello.txt represents the file to be affected
So, this was all about Changing Permissions in Linux System. Hope you understood.
Please let me know if there are any queries and suggestions.
See you in the funny papers 🚀