Установка прав на файлы в 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
1
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)
1
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)
1
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)
1
2
3
4

Есть способ задать все три вида прав одновременно. Для этого применяется число из трех цифр от 0 до 7. Первая цифра означает права владельца, вторая группы, а третья для остальных пользователей. Эти цифры в двоичном виде представляют набор флагов, для трех видов прав: rwx.

  • 0000---
  • 1001--x
  • 2010-w-
  • 3011-wx
  • 4100r--
  • 5101r-x
  • 6110rw-
  • 7111rwx
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)
1
2
3
4

Параметр -R команды chmod позволяет рекурсивно изменить права у содержимого каталога.

Последниее изменение: 11.11.2023, 08:48:13