- Понимание прав доступа к файлам в Linux
- Understanding Linux File Permissions
- В Linux права доступа к файлам, атрибуты и владение управляют уровнем доступа, который система обрабатывает, а пользователи имеют к файлам. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к определенным файлам и каталогам.
- Права доступа к файлам в Linux
- Изменение прав доступа к файлу
- Символьный (текстовый) метод
- Числовой метод
- Заключение
- Как редактировать файл только для чтения в /etc?
- 6 ответов
- Очень короткий ответ:
- Короткий ответ:
- Длинный ответ
- Как исправить read only file system в Linux
- Ошибка read only file system в Linux
Понимание прав доступа к файлам в Linux
Understanding Linux File Permissions
В Linux права доступа к файлам, атрибуты и владение управляют уровнем доступа, который система обрабатывает, а пользователи имеют к файлам. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к определенным файлам и каталогам.
Права доступа к файлам в Linux
Базовая модель разрешений Linux работает, связывая каждый системный файл с владельцем и группой и назначая права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Другие (все остальные).
Собственности файла можно изменить с помощью chown и chgrp команды.
К каждому классу пользователей применяются три типа прав доступа к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет вам контролировать, какие пользователи могут читать файл, записывать в файл или выполнять файл.
Чтобы просмотреть права доступа к файлу, используйте ls команду:
Первый символ указывает тип файла. Это может быть обычный файл ( — ), каталог ( d ), символическая ссылка ( l ) или другие специальные типы файлов. Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных.
В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет права на чтение и запись ( rw- ), а группа и другие пользователи имеют только права на чтение ( r— ).
Права доступа к файлам имеют разное значение в зависимости от типа файла.
Каждый из трех триплетов разрешений может состоять из следующих символов и иметь разные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
Разрешение | Метка | Значение в файле |
---|---|---|
Чтение Read | — | Файл не читается. Вы не можете просматривать содержимое файла. |
r | Файл доступен для чтения. | |
Запись Write | — | Файл не может быть изменен или изменен. |
w | Файл можно изменить или модифицировать. | |
Выполнение Execute | — | Файл не может быть выполнен. |
x | Файл можно запустить. | |
s | Если он находится в user триплете, он устанавливает setuid бит. Если он находится в group триплете, он устанавливает setgid бит. Это также означает, что x флаг установлен. Когда для исполняемого файла установлены флаги setuid или setgid , файл выполняется с правами владельца и / или группы. | |
S | То же s , но x флаг не установлен. Этот флаг редко используется для файлов. | |
t | Если он находится в others триплете, он устанавливает sticky бит. Это также означает, что x флаг установлен. Этот флаг бесполезен для файлов. | |
T | То же, t но x флаг не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
Каталоги — это особые типы файлов, которые могут содержать другие файлы и каталоги.
Разрешение | Метка | Значение в каталоге |
---|---|---|
Чтение Read | — | Содержимое каталога не может быть отображено. |
r | Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью ls .) | |
Запись Write | — | Содержимое каталога не может быть изменено. |
w | Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) | |
Выполнение Execute | — | Каталог не может быть изменен на. |
x | По каталогу можно перемещаться с помощью cd . | |
s | Если он находится в user триплете, он устанавливает setuid бит. Если он находится в group триплете, он устанавливает setgid бит. Это также означает, что x флаг установлен. Когда setgid для каталога установлен флаг, новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. setuid не влияет на каталоги. | |
S | То же s , но x флаг не установлен. Этот флаг бесполезен для каталогов. | |
t | Если он находится в others триплете, он устанавливает sticky бит. Это также означает, что x флаг установлен. Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь могут удалять или переименовывать файлы в каталоге. | |
T | То же t , но x флаг не установлен. Этот флаг бесполезен для каталогов. |
Изменение прав доступа к файлу
Права доступа к файлу можно изменить с помощью chmod команды. Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod , особенно при рекурсивном изменении разрешений. Команда может принимать в качестве аргументов один или несколько файлов и / или каталогов, разделенных пробелом.
Разрешения можно указать с помощью символьного режима, числового режима или справочного файла.
Символьный (текстовый) метод
Синтаксис chmod команды при использовании символьного режима имеет следующий формат:
Первый набор flags ( [ugoa…] ), флаги пользователей, определяет классы пользователей, для которых изменяются права доступа к файлу.
- u — Владелец файла.
- g — Пользователи, входящие в группу.
- o — Все остальные пользователи.
- a — Все пользователи, идентичные ugo .
Когда флаг пользователя опущен, по умолчанию используется a .
Второй набор flags ( [-+=] ), флаги операции, определяет, следует ли удалить, добавить или установить разрешения:
- — — Удаляет указанные разрешения.
- + — Добавляет указанные разрешения.
- = — Изменяет текущие разрешения на указанные разрешения. Если после = символа не указаны разрешения, все разрешения указанного класса пользователей удаляются.
Разрешения ( perms. ) явно устанавливается с помощью либо ноль , либо один или несколько из следующих букв: r , w , x , X , s , и t . Используйте одну букву из набора u , g и o при копировании разрешений из одного класса пользователей в другой.
При настройке разрешений для более чем одного пользовательского класса ( [,…] ) используйте запятые (без пробелов) для разделения символьных режимов.
Вот несколько примеров того, как использовать chmod команду в символьном режиме:
Дайте членам группы разрешение на выполнение файла, но не на чтение и запись в него:
Удалите разрешение на запись для всех пользователей:
Отвратительно удалите разрешение на выполнение для других пользователей:
Удалите права на чтение, запись и выполнение для всех пользователей, кроме владельца файла:
То же самое можно сделать с помощью следующей формы:
Предоставьте права на чтение, запись и выполнение владельцу файла, права на чтение для группы файла и запретите права всем другим пользователям:
Числовой метод
Синтаксис команды chmod при использовании символьного режима имеет следующий формат:
При использовании числового режима вы можете установить разрешения для всех трех классов пользователей (владельца, группы и всех остальных) одновременно.
Номер разрешения может быть трех- или четырехзначным. Когда используется трехзначный номер, первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
- r (читать) = 4
- w (написать) = 2
- x (выполнить) = 1
- нет разрешений = 0
Количество разрешений определенного класса пользователей представлено суммой значений разрешений для этой группы.
Чтобы узнать права доступа к файлу в числовом режиме, просто подсчитайте итоговые значения для всех классов пользователей. Например, чтобы предоставить права на чтение, запись и выполнение владельцу файла, права на чтение и выполнение для группы файла и только на чтение для всех остальных пользователей, вы должны сделать следующее:
- Владелец: rwx = 4 + 2 + 1 = 7
- Группа: rx = 4 + 0 + 1 = 5
- Другое: rx = 4 + 0 + 0 = 4
Используя описанный выше метод, мы подходим к числу 754 , которое представляет желаемые разрешения.
Для того, чтобы настроить setuid , setgid и sticky bit флаги, используйте номер четыре цифры.
Когда используется четырехзначный номер, первая цифра имеет следующее значение:
- setuid = 4
- setgid = 2
- липкий = 1
- без изменений = 0
Следующие три цифры имеют то же значение, что и при использовании трехзначного номера.
Если первая цифра равна 0, ее можно не указывать, а режим можно представить тремя цифрами. Числовой режим 0755 такой же, как 755 .
Для вычисления числового режима вы также можете использовать другой метод (двоичный метод), но он немного сложнее. Знания, как рассчитать числовой режим с использованием 4, 2 и 1, достаточно для большинства пользователей.
Вы можете проверить права доступа к файлу в числовом формате с помощью stat команды:
Вот несколько примеров того, как использовать chmod команду в числовом режиме:
Предоставьте владельцу файла разрешения на чтение и запись и только на чтение членам группы и всем остальным пользователям:
Предоставьте владельцу файла права на чтение, запись и выполнение, права на чтение и выполнение для членов группы и никаких разрешений для всех остальных пользователей:
Предоставьте разрешения на чтение, запись и выполнение, а также закрепите бит для данного каталога:
Рекурсивно установить разрешения на чтение, запись и выполнение для владельца файла и отсутствие разрешений для всех других пользователей в данном каталоге:
Заключение
В Linux доступ к файлам ограничен разрешениями, атрибутами и правами собственности на файлы. Чтобы изменить права доступа к файлу, используйте chmod команду.
Источник
Как редактировать файл только для чтения в /etc?
Я совершенно новый пользователь, поэтому я еще не уверен, как обойти систему. Я хочу изменить имя моего компьютера, поэтому я попытался изменить имя в /etc/hostname , но это файл только для чтения. Добавление ! персонаж не помог. я использую vim редактировать файл.
6 ответов
Изменение системных настроек требует прав суперпользователя. Из терминала сделай
где может быть vim, nano или любая другая команда редактора, и это та, которую вам нужно отредактировать.
Вы также можете использовать gksudo gedit ,
В любом случае вам будет предложено ввести пароль пользователя с правами суперпользователя — в обычной установке Ubuntu это будет первый пользователь, созданный во время установки.
Если вы редактируете файл без sudo и вам нужно sudo чтобы сохранить, просто используйте команду vim:
Благодарим доктора Беко. Обратите внимание, что vim заметит изменение файла и спросит вас, хотите ли вы (L) внести изменения, нажмите L.
Очень короткий ответ:
Вы можете изменить файл (даже если он доступен только для чтения), если вы им владеете.
Короткий ответ:
Даже если пользователь, который вы вошли как (в этом случае navid ) имеет права администратора, вы не сможете изменить /etc/hostname , поскольку root Пользователь владеет этим файлом. Следовательно, вы должны войти в систему как пользователь root.
Длинный ответ
Предполагая, что вы хотите изменить имя вашего компьютера с navid-Satellite-C50-D в navid-Satellite-C50-E Вот шаги, которые вы должны выполнить:
Войдите в систему как пользователь root:
Открыть имя хоста:
Ты увидишь navid-Satellite-C50-D , Нажмите i, чтобы перейти в режим вставки, затем измените его на navid-Satellite-C50-E , Затем нажмите Esc + : + w + q + Enter, чтобы сохранить и выйти.
Верхние 2 строки выглядят так:
Аналогично тому, что вы сделали на шаге 3, измените имя компьютера с navid-Satellite-C50-D в navid-Satellite-C50-E , Затем сохраните и выйдите.
Выйдите из корневого пользователя:
Сохраните все ваши несохраненные работы и перезагрузите компьютер:
Откройте свой терминал, и вы увидите, что имя вашего компьютера было успешно изменено!:-)
Примечание. Хотя вы можете достичь желаемого, пропустив шаги 4 и 5, я настоятельно рекомендую также выполнить их, чтобы избежать потенциальных ошибок в будущем.
Источник
Как исправить read only file system в Linux
Ошибка read only file system может возникнуть при загрузке с LiveCD диска или в режиме восстановления вашего дистрибутива. Она означает, что файловая система в которую вы пытаетесь вести запись примонтирована только для чтения. Этому может быть несколько причин. Есть файловые системы, которые доступны только для чтения это файловая система оптических дисков — ISO, а также файловая система образов SquashFS.
С такими файловыми системами вы сделать ничего не сможете. Для изменения данных в них, надо распаковать образ, изменить данные и запаковать его обратно. Но что касается обычных файловых систем, таких как EXT4, BTRFS, XFS, то их можно монтировать и для чтения и для записи.
Ошибка read only file system в Linux
В этой небольшой статье мы рассмотрим как исправить read only file system Linux перемонтировав файловую систему для записи. Первым делом надо определиться с точкой монтирования, для которой надо разрешить запись. Попытаемся создать файл в корневом каталоге:
Ошибка, файловая система корневого каталога доступна только для чтения. Чтобы посмотреть все точки монтирования доступные в системе выполните в терминале:
mount | grep /dev/sd
В данном случае, корневая файловая система и есть точкой монтирования. Но у вас, например, возникнут проблемы с созданием файла в домашней папке, то надо будет уже перемонтировать /home. Смотрите внимательно. Когда точка монтирования выбрана, осталось её примонтировать с правами на запись:
sudo mount -o remount,rw /
sudo mount -o remount,rw /home
После этого вы сможете создать файл без каких-либо проблем. После завершения работы, во избежание повреждения данных при перезагрузке, желательно перемонтировать файловую систему обратно в режим только для чтения:
sudo mount -o remount,ro /
Теперь вы знаете что означает эта ошибка и как с ею справится. Если у вас остались вопросы, спрашивайте в комментариях!
Источник