Установка прав на файлы в Linux с помощью chmod
Посмотреть прав на файл в Linux можно командой stat
.
user@debian-server:~$ mkdir /tmp/test
user@debian-server:~$ cd /tmp/test
user@debian-server:/tmp/test$ touch file.txt
user@debian-server:/tmp/test$ stat file.txt
File: file.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 8,1 Inode: 654091 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2023-11-11 03:26:23.439716105 -0500
Modify: 2023-11-11 03:26:23.439716105 -0500
Change: 2023-11-11 03:26:23.439716105 -0500
Birth: 2023-11-11 03:26:23.439716105 -0500
2
3
4
5
6
7
8
9
10
11
12
В первой строке, которая начинается с Access:
, находится информация про права на файл:
(0644/-rw-r--r--)
— тип файла и праваUid: ( 1000/ user)
— владелец файлаGid: ( 1000/ user)
— группа владельца файла
В строке -rw-r--r--
первый символ означает тип файла, в данном случае -
означает простой файл. Если бы это была директория то символ был бы d
, есть и другие типы файлов. Следующие параметры группируются на три части по три символа:
rw-
— права для владельца файлаr--
— права для группы владельца файлаr--
— права для остальных пользователей
Сами права бывают трех видов:
r
— чтение (read)w
— запись (write)x
— выполнение (execute)
С помощью команды chmod
можно изменить права. Первым параметром нужно передать группу прав:
u
— права владельца (user)g
— права группы (group)o
— права для всех остальных (other)a
— указывается если нужно добавить или убрать право для всех (all)
Затем +
для добавления права и -
для снятия. И последним символом тип права: r
, w
или x
. Например:
user@debian-server:/tmp/test$ chmod o+x file.txt
user@debian-server:/tmp/test$ stat file.txt
...
Access: (0645/-rw-r--r-x) Uid: ( 1000/ user) Gid: ( 1000/ user)
2
3
4
user@debian-server:/tmp/test$ chmod a+w file.txt
user@debian-server:/tmp/test$ stat file.txt
...
Access: (0667/-rw-rw-rwx) Uid: ( 1000/ user) Gid: ( 1000/ user)
2
3
4
user@debian-server:/tmp/test$ chmod g-w file.txt
user@debian-server:/tmp/test$ stat file.txt
...
Access: (0647/-rw-r--rwx) Uid: ( 1000/ user) Gid: ( 1000/ user)
2
3
4
Есть способ задать все три вида прав одновременно. Для этого применяется число из трех цифр от 0 до 7. Первая цифра означает права владельца, вторая группы, а третья для остальных пользователей. Эти цифры в двоичном виде представляют набор флагов, для трех видов прав: rwx
.
0
—000
—---
1
—001
—--x
2
—010
—-w-
3
—011
—-wx
4
—100
—r--
5
—101
—r-x
6
—110
—rw-
7
—111
—rwx
user@debian-server:/tmp/test$ chmod 764 file.txt
user@debian-server:/tmp/test$ stat file.txt
...
Access: (0764/-rwxrw-r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
2
3
4
Параметр -R
команды chmod
позволяет рекурсивно изменить права у содержимого каталога.