Linux Основные атрибуты файлов

Система Linux — типичная многопользовательская система; разные пользователи имеют разные статусы и разные права доступа.

Для защиты безопасности системы в Linux действуют разные правила прав доступа разных пользователей к одному и тому же файлу (включая файлы каталогов).

В Linux мы обычно используем следующие две команды для изменения пользователя-владельца и прав доступа к файлу или каталогу:

  • chown (change owner): изменение пользователя-владельца и группы.
  • chmod (change mode): изменение прав пользователя.

На рисунке ниже chown используется для авторизации пользователя, а chmod — для установки разрешения пользователю открыть дверь.

В Linux мы можем использоватьllилиls –lкоманду для отображения атрибутов файла, а также пользователя и группы, которым принадлежит файл, например:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……

В примере,binПервый атрибут файла обозначаетсяd, что указывает.dВ Linux это означает, что файл является каталогом.

В Linux первый символ обозначает, является ли файл каталогом, файлом или файлом-ссылкой и т. д.

  • Когда этоd, то это каталог
  • Когда это-, то это файл;
  • Если этоl, то это обозначает файл-ссылку;
  • Если этоb, то это обозначает устройство интерфейса хранения (устройство с произвольным доступом) среди файлов устройств;
  • Если этоc, то это обозначает устройство последовательного порта среди файлов устройств, например клавиатуру или мышь (устройство однократного чтения).

В следующих символах используются группы по три, и все они являютсяrwxкомбинациями этих трёх параметров. Среди них,rобозначает доступный для чтения (read),wобозначает доступный для записи (write),xобозначает исполняемый (execute). Обратите внимание, что позиции этих трёх прав не изменятся. Если права нет, знак минус-только.

Атрибуты каждого файла определяются первыми 10 символами в левой части (как показано ниже).

363003_1227493859FdXT

Слева направо используйте0-9эти числа для обозначения.

№0Цифра определяет тип файла, а1-3цифры определяют права, которые владелец (владелец файла) имеет на файл.

Биты 4-6 определяют разрешения, которые группа (пользователи в той же группе, что и владелец) имеет на файл, а биты 7-9 определяют разрешения, которые имеют другие пользователи на файл.

Среди них1、4、7цифра обозначает разрешение на чтение. Если с помощью символаrуказано, то разрешение на чтение есть; если с помощью символа-указано, то разрешения на чтение нет;

Цифра №2、5、8обозначает разрешение на запись. Если с помощью символаwуказано, то разрешение на запись есть; если с помощью символа-указано, то разрешения на запись нет;3、6、9цифра обозначает разрешение на выполнение. Если с помощью символаxуказано, то разрешение на выполнение есть; если с помощью символа-указано, то разрешения на выполнение нет.


Владелец файла и группа в Linux

[root@www /]# ls -l
total 64
drwxr-xr-x 2 root  root  4096 Feb 15 14:46 cron
drwxr-xr-x 3 mysql mysql 4096 Apr 21  2014 mysql
……

У файла всегда есть определённый владелец, то есть пользователь, который владеет файлом.

В то же время в системе Linux пользователи классифицируются по группам, и пользователь принадлежит одной или нескольким группам.

Пользователей, не являющихся владельцем файла, можно дополнительно разделить на пользователей группы, входящих в ту же группу, что и группа файла, и других пользователей.

Поэтому в системе Linux определяются разные права доступа к файлам в зависимости от владельца файла, пользователей из той же группы, что и владелец файла, и других пользователей.

В приведённом выше примере файл mysql является каталогом, и владелец, и группа — mysql. Владелец имеет разрешения на чтение, запись и выполнение; другие пользователи из той же группы, что и владелец, имеют разрешения на чтение и выполнение; другие пользователи также имеют разрешения на чтение и выполнение.

Для пользователя root права доступа к файлам, как правило, не применяются.


Изменение атрибутов файла

1. chgrp: изменить группу файла

Синтаксис:

chgrp [-R] 属组名 文件名

Параметры

  • -R: рекурсивно изменить группу файла. То есть при изменении группы каталога, если добавить-Rпараметр, группа всех файлов в этом каталоге также будет изменена.

2. chown: изменить владельца файла (owner), а также можно одновременно изменить группу файла.

Синтаксис:

chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名

Перейдите в каталог /root (~) и измените владельца install.log на учётную запись bin:

[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

Измените владельца и группу install.log обратно на root:

[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

3. chmod: изменить 9 атрибутов файла

Существует два способа установки атрибутов файлов Linux: один — числовой, другой — символьный.

У файла Linux есть девять базовых прав, а именновладелец/группа/остальныеКаждая из трёх категорий имеет своичтение/запись/выполнениеправа.

Сначала рассмотрим данные, только что упомянутые выше: символы прав файла:-rwxrwxrwxЭти девять прав сгруппированы по три! Среди них мы можем использовать числа для представления каждого права. Таблица сравнения баллов для каждого права выглядит следующим образом:

  • r:4
  • w:2
  • x:1

Баллы трёх прав (r/w/x) для каждой категории (владелец/группа/остальные) нужно сложить. Например, когда права:-rwxrwx---Балл равен:

  • владелец = rwx = 4+2+1 = 7
  • группа = rwx = 4+2+1 = 7
  • остальные = --- = 0+0+0 = 0

Итак, когда мы позже задаём изменения прав доступа, числовое значение прав файла равно770. Синтаксис команды chmod для изменения прав доступа выглядит так:

 chmod [-R] xyz 文件或目录

Опции и параметры:

  • xyz: Это числовой атрибут прав доступа, только что упомянутый, который являетсяrwxсуммой значений атрибутов.
  • -R: Выполнять непрерывное рекурсивное изменение, при этом все файлы в подкаталогах также будут изменены.

Например, если вы хотите.bashrcвключить все права доступа этого файла, команда выглядит так:

[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

Что если вы хотите изменить права доступа на-rwxr-xr--? Тогда числовое значение прав становится [4+2+1][4+0+1][4+0+0]=754.

Символьный способ изменения прав доступа к файлу

Существует другой способ изменения прав доступа. Из предыдущего введения можно понять, что существует в основном девять прав доступа, а именно:

  • пользователь: пользователь
  • группа: группа
  • остальные: остальные

Затем мы можем использоватьu, g, oдля представления прав трёх категорий пользователей.

Кроме того,aпредставляетвсе, то есть все категории пользователей. Права на чтение и запись можно записать какr, w, x, что можно посмотреть в таблице ниже:

chmodu
g
o
a
+ (добавить)
- (удалить)
= (установить)
r
w
x
Файл или каталог

Если нам нужно установить права доступа к файлу как-rwxr-xr--, мы можем использоватьchmod u=rwx,g=rx,o=r filenameчтобы установить:

#  touch test1    // 创建 test1 文件
# ls -al test1    // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

Что если вы хотите удалить права, не изменяя другие существующие права? Например, чтобы удалить право на выполнение для всех, тогда:

#  chmod  a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

Дополнительные справочные материалы

Другие расширения