Эти три набора являются владельцем файла, группой, к которой принадлежит файл, и «другими», то есть всеми остальными пользователями.
- (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 см. Справочную страницу 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.