Linux – Основные права доступа к файлам и каталогам |

Linux – Основные права доступа к файлам и каталогам

Скрипты

Что такое базовые права для файлов Linux?

Linux, как и UNIX, является многопользовательской системой, и права доступа к файлам являются одним из способов защиты системы от вредоносного вмешательства.

Один из способов получить доступ, когда вам отказано в разрешении, состоит в том, чтобы получить права root.

Имейте в виду, что тот, кто знает пароль root, имеет полный доступ.

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

Все файлы и каталоги «принадлежат» человеку, который их создал.

Например, в листинге:

-rw-rw-r--    1 john   sap      150 Mar 19 08:08 file1.txt

Файл file1.txt принадлежит пользователю john.

Это означает, что вы можете указать, кому разрешено читать файл, писать в файл или (если это приложение, а не текстовый файл), кто может выполнять файл.

Вы также можете контролировать доступ к каталогам аналогичным образом.

Чтение, запись и выполнение [ r,w и x ] – три основных параметра в разрешениях.

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

Используя приведенный выше пример file1.txt, вы можете увидеть, что здесь представлено много деталей.

Вы можете видеть, кто может читать (r) и записывать (w) файл, а также кто создал файл (john) и к какой группе принадлежит владелец (sap).

Однако помните, что по умолчанию имя вашей группы совпадает с вашим логином.

Другая информация справа от группы включает размер файла, дату и время создания файла и имя файла.

Первый столбец показывает текущие права; у него есть десять слотов.

Первый слот представляет тип файла.

Оставшиеся девять слотов фактически представляют собой три набора прав для трех разных категорий пользователей.

Например:

-rw-rw-r--

Эти три набора являются владельцем файла, группой, к которой принадлежит файл, и «другими», то есть всеми остальными пользователями.

 -    (rw-)   (rw-)   (r--) 1 john sap
|      |       |       |
type  owner  group   others

Первый элемент, который указывает тип файла, обычно показывает одно из следующего:

  • d – каталог
  • – (тире) – обычный файл (а не каталог или ссылка)
  • l – символическая ссылка на другую программу или файл в другом месте системы

Помимо первого элемента, в каждом из следующих трех наборов вы увидите одно из следующего:

  • r – файл можно прочитать
  • w – файл может быть изменен
  • x – файл может быть выполнен (если это программа)

Когда вы видите черту в владельце, группе или других лицах, это означает, что конкретные права не были предоставлены.

Посмотрите еще раз на первый столбец file1.txt и определите его права.

# ls -l file1.txt
-rw-rw-r--    1 john sap     150 Mar 19 08:08 file1.txt

В результате пользователь john владеет файлом.

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

Как  стики биты прав доступа к файлам соответствуют значениям, предоставленным chmod?

Стикибиты, применяемые к объекту файловой системы, напрямую соответствуют значениям, которые могут быть указаны в четырехзначном виде, предоставленном утилите chmod в следующей команде:

chmod abcd [file system object]

Каждое значение в наборе цифр abcd состоит из суммы значений 1, 2 и 4.

Сложив эти значения вместе для каждой цифры, можно сгенерировать значение, чтобы установить все атрибуты файлового объекта:

a – Эта цифра управляет настройками специальных атрибутов.

Значение 1 устанавливает бит setuid, значение 2 устанавливает бит setgid, а значение 4 устанавливает бит привязки объекта
b, c и d – эти цифры управляют разрешениями на чтение и запись для владельца файла, основной группы владельцев файлов и всех других пользователей.

Значение 4 включает разрешение на чтение, значение 2 включает разрешение на запись, а значение 1 включает разрешение на выполнение.

Примеры

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

# chmod 4610 filename

Чтобы дать все права всем в системе:

# chmod 0777 filename

Для получения дополнительной информации о chmod см. Справочную страницу chmod.

Как установить права доступа к файлам и каталогам, используя chown и chmod?

Используйте команду chown, чтобы изменить владельца и / или группу для файла.

Синтаксис прост.

Просто введите chown, за которым следует пользователь, которому принадлежит файл, а затем, необязательно, двоеточие («:») и имя группы.

Обратите внимание, что имена пользователей и / или групп должны существовать в системе.

Например:

# chown john:sap file1.txt
# ls -l file1.txt
-rw-rw-r--    1 john sap     150 Mar 19 08:08 file1.txt

в результате пользователь john владеет файлом.

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

Используйте команду chmod для изменения прав доступа.

В этом примере показано, как изменить права для file1.txt с помощью команды chmod.

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

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

Любой, кто находится за пределами группы, может только прочитать файл (r–).

ВНИМАНИЕ: Помните, что права доступа к файлам являются функцией безопасности. Всякий раз, когда вы позволяете кому-либо еще читать, записывать и выполнять файлы, вы увеличиваете риск подделки, изменения или удаления файлов. Как правило, вы должны предоставлять разрешения на чтение и запись только тем, кто действительно в них нуждается.

Как изменить права доступа к файлам / каталогам с помощью сокращенных обозначений?

В следующем примере вы хотите разрешить всем писать в файл, чтобы они могли читать его, записывать в него заметки и сохранять его.

Это означает, что вам придется изменить раздел «другие» прав доступа к файлу.

Сначала посмотрите на файл.

В командной строке введите:

# ls -l file1.txt
-rw-rw-r--    1 john sap     150 Mar 19 08:08 file1.txt

Теперь вы должны ввести следующее:

# chmod o+w file1.txt

Приведенная выше команда сообщает системе, что вы хотите дать другим разрешение на запись в файл file1.txt.

Чтобы проверить результаты, перечислите детали файла снова.

Теперь файл выглядит так:

-rw-rw-rw-    1 john sap     150 Mar 19 08:08 file1.txt

Теперь каждый может читать и писать в файл.

Чтобы удалить разрешения на чтение и запись из file1.txt, используйте команду chmod, чтобы убрать разрешения на чтение и запись.

# chmod go-rw file1.txt

Набрав go-rw, вы сообщаете системе об удалении прав на чтение и запись для группы и других пользователей из файла file1.txt.

Результат будет выглядеть так:

-rw-------    1 john sap    150 Mar 19 08:08 file1.txt

Считайте эти настройки своего рода сокращением, когда вы хотите изменить разрешения с помощью chmod, потому что все, что вам действительно нужно сделать, – это запомнить несколько символов и букв с помощью команды chmod.

Вот список того, что представляет сокращение:

Тождества

  • u – пользователь, которому принадлежит файл (то есть владелец)
  • g – группа, к которой принадлежит пользователь
  • o – другие (не владелец или группа владельца)
  • a – все или все (u, g и o)

Права доступа

  • r – доступ для чтения
  • w – доступ для записи
  • x – выполнить доступ

Действия

  • + – добавляет разрешение
  • – удаляет разрешение
  • = – делает это единственным разрешением

Вот несколько общих примеров настроек, которые можно использовать с chmod:

  • g + w – добавляет доступ на запись для группы
  • o-rwx – удаляет все разрешения для других
  • u + x – позволяет владельцу файла выполнить файл
  • + RW – позволяет всем читать и писать в файл
  • ug + r – позволяет владельцу и группе читать файл
  • g = rx – позволяет только группе читать и выполнять (не писать)

Как удалить все права для всех пользователей, используя сокращенные обозначения?

Хотите проверить свои навыки разрешений?

Удалите все разрешения из file1.txt – для всех.

# chmod a-rwx file1.txt

Теперь посмотрим, можете ли вы прочитать файл командой cat file1.txt, которая должна вернуть следующее:

cat: file1.txt: Permission denied

Удаление всех прав, включая ваши собственные, успешно заблокировало файл.

Но так как файл принадлежит вам, вы всегда можете изменить его разрешения обратно с помощью следующей команды:

# chmod u+rw file1.txt

Как вывести список прав доступа к файлам в восьмеричном формате?

Чтобы просмотреть разрешения для файлов в восьмеричном формате, используйте команду stat, предоставляемую пакетом coreutils.

Чтобы получить восьмеричные разрешения для всех файлов и каталогов в текущем рабочем каталоге, выполните команду ниже:

$ stat -c "%a %n" *

Чтобы получить восьмеричные разрешения для содержимого в определенном каталоге, скажем /usr/share, выполните следующую команду:

$ stat -c "%a %n" /usr/share/*
755 /usr/share/aclocal
755 /usr/share/alsa
755 /usr/share/anaconda
755 /usr/share/appdata
...

Чтобы получить восьмеричные разрешения только для каталога, скажем, /usr/share, а не для содержимого внутри него, выполните команду ниже:

$ stat -c "%a %n" /usr/share/
755 /usr/share/

Как сбросить все системные разрешения на файлы по умолчанию, если все разрешения для файлов изменены на 777?

Вы случайно выполнили следующую команду.

# chmod -R 777 /

Есть ли способ вернуться к исходным правам?

Выполните следующую команду, чтобы вернуться к исходным разрешениям.

# rpm -a --setperms

Это действие покажет некоторые ошибки, но можно пренебречь ими.

Как скопировать файлы с определенным разрешением по сети?

Для копирования файлов с определенными разрешениями можно использовать утилиту rsync:

# rsync --chmod=u+rwx,g+rx,o+rx  testfile user@192.168.0.1:/tmp/

Это скопирует тестовый файл в домашний каталог пользователя, а права доступа к скопированному файлу будут 755.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий