<Предыдущая | Содержание: | Следующая>
3.4.2. Инструменты
3.4.2.1. Команда chmod
Нормальным следствием применения строгих разрешений к файлам, а иногда и неприятностями, является то, что права доступа необходимо будет изменить по разным причинам. Мы используем CHMOD команда для этого, и в конечном итоге chmod стал почти приемлемым английским глаголом, означающим изменение режима доступа к файлу. В CHMOD Команда может использоваться с буквенно-цифровыми или числовыми параметрами, как вам больше нравится.
В приведенном ниже примере используются буквенно-цифровые параметры для решения проблемы, которая обычно возникает у новых пользователей:
asim: ~> ./Привет
bash: ./hello: плохой интерпретатор: отказано в разрешении
asim: ~> кот привет
#! / Bin / Баш
эхо "Привет, мир"
asim: ~> ls -l привет
-rw-rw-r-- 1 asim asim 32 15 января, 16:29 привет asim: ~> chmod u + x привет
asim: ~> ./Привет
Привет мир
asim: ~> ls -l привет
-rwxrw-r-- 1 asim asim 32 15 января 16:29 привет *
asim: ~> ./Привет
bash: ./hello: плохой интерпретатор: отказано в разрешении
asim: ~> кот привет
#! / Bin / Баш
эхо "Привет, мир"
asim: ~> ls -l привет
-rw-rw-r-- 1 asim asim 32 15 января, 16:29 привет asim: ~> chmod u + x привет
asim: ~> ./Привет
Привет мир
asim: ~> ls -l привет
-rwxrw-r-- 1 asim asim 32 15 января 16:29 привет *
Команда + и - операторы используются для предоставления или отказа в праве данной группе. Допускаются комбинации через запятую. На страницах Info и man есть полезные примеры. Вот еще один, который делает файл из предыдущего примера личным файлом для пользователя. Асим:
asim: ~> chmod u + rwx, go-rwx привет
asim: ~> ls -l | Здравствуйте | ||
-rwx ------ | 1 асим | Асим | 32 Янв 15 16:29 привет * |
Тип проблемы, приводящий к сообщению об ошибке, в котором говорится, что где-то отказано в разрешении, обычно в большинстве случаев является проблемой с правами доступа. Кроме того, такие комментарии, как «Он работал вчера» и «Когда я запускаю это как root, он работает», скорее всего, вызваны неправильными правами доступа к файлу.
Когда используешь CHMOD с числовыми аргументами значения для каждого предоставленного права доступа должны подсчитываться вместе для каждой группы. Таким образом мы получаем 3-значное число, которое является символическим значением для настроек. CHMOD должен сделать. В следующей таблице перечислены наиболее распространенные комбинации:
Таблица 3-9. Защита файлов с помощью chmod
Command | Смысл |
CHMOD 400 файл | Для защиты файла от случайной перезаписи. |
CHMOD 500 каталог | Чтобы защитить себя от случайного удаления, переименования или перемещения файлов из этого каталога. |
CHMOD 600 файл | Личный файл может быть изменен только пользователем, который ввел эту команду. |
CHMOD 644 файл | Общедоступный файл, который может быть изменен только пользователем, выпустившим его. |
CHMOD 660 файл | Пользователи, принадлежащие к вашей группе, могут изменять этот файл, другие вообще не имеют к нему доступа. |
CHMOD 700 файл | Защищает файл от любого доступа со стороны других пользователей, в то время как выпускающий пользователь по-прежнему имеет полный доступ. |
CHMOD 755 каталог | Для файлов, которые должны быть доступны для чтения и выполнения другим пользователям, но могут изменяться только пользователем, выпустившим их. |
CHMOD 775 файл | Стандартный режим обмена файлами для группы. |
CHMOD 777 файл | Каждый может делать с этим файлом все. |
Если вы вводите число, состоящее менее чем из трех цифр, в качестве аргумента CHMOD, пропущенные символы заменяются нулями, начиная слева. На самом деле в системах Linux есть четвертая цифра, которая предшествует первым трем и устанавливает специальные режимы доступа. Все об этом и многом другом находится на информационных страницах.
3.4.2.2. Вход в другую группу
Когда вы печатаете id в командной строке вы получаете список всех групп, к которым вы можете принадлежать, которому предшествуют ваше имя пользователя и идентификатор, а также имя и идентификатор группы, с которой вы в настоящее время связаны. Однако во многих системах Linux вы можете одновременно войти только в одну группу. По умолчанию это активный или основная группа это тот, который вам назначается из / И т.д. / пароль файл. Четвертое поле этого файла содержит идентификатор основной группы пользователей, который ищется в / etc / group файл. Пример:
asim: ~> id
uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)
asim: ~> GREP Асим / И т.д. / пароль
asim: x: 501: 501: Асим Эль Барака: / home / asim: / bin / bash
asim: ~> GREP 501 / etc / group
asim: x: 501:
asim: ~> id
uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)
asim: ~> GREP Асим / И т.д. / пароль
asim: x: 501: 501: Асим Эль Барака: / home / asim: / bin / bash
asim: ~> GREP 501 / etc / group
asim: x: 501:
Четвертое поле в строке от / И т.д. / пароль содержит значение «501», которое представляет группу Асим в приведенном выше примере. Из / etc / group мы можем получить имя, соответствующее этому идентификатору группы. При первоначальном подключении к системе это группа, которая Асим будет принадлежать.
Схема частной группы пользователей
Чтобы обеспечить большую гибкость, большинство систем Linux следуют так называемому схема частной группы пользователей, который присваивает каждому пользователю в первую очередь его или ее собственную группу. Эта группа - это группа, в которую входит только этот конкретный пользователь, отсюда и название «частная группа». Обычно эта группа имеет то же имя, что и логин пользователя, что может немного сбивать с толку.
Помимо собственной частной группы, пользователь Асим также может быть в группах пользователей и Web. Поскольку это второстепенные группы для этого пользователя, ему нужно будет использовать новая группа для входа в любую из этих групп (используйте gpasswd для установки группового пароля в первую очередь). В этом примере Асим необходимо создать файлы, принадлежащие группе Web.
asim: / var / www / html> новая группа Web
asim: / var / www / html> id
uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)
asim: / var / www / html> новая группа Web
asim: / var / www / html> id
uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)
После появления Асим теперь создает новые файлы, они будут принадлежать группе Web вместо того, чтобы принадлежать группе Асим:
asim: / var / www / html> сенсорный тест
asim: / var / www / html> ls -l тест
-rw-rw-r-- 1 asim web 0 10 июня, 15:38 тест
asim: / var / www / html> сенсорный тест
asim: / var / www / html> ls -l тест
-rw-rw-r-- 1 asim web 0 10 июня, 15:38 тест
Вход в новую группу избавляет вас от необходимости использовать Чаун (см. Раздел 3.4.2.4) или позвонив вашему системному администратору, чтобы сменить владельца за вас.
См. Справочную страницу для новая группа чтобы получить больше информации.
3.4.2.3. Маска файла
Когда где-то сохраняется новый файл, он сначала подвергается стандартной процедуре безопасности. Файлы без разрешений не существуют в Linux. Стандартное разрешение файла определяется маска для создания нового файла. Значение этой маски можно отобразить с помощью Umask команда:
bert: ~> Umask
0002
bert: ~> Umask
0002
Вместо того, чтобы складывать символьные значения друг с другом, как с CHMOD, для расчета прав доступа к новому файлу их необходимо вычесть из всех возможных прав доступа. Однако в приведенном выше примере мы видим 4 отображаемых значения, но есть только 3 категории разрешений: пользователь, группы и другими. Первый ноль является частью настроек специальных атрибутов файла, которые мы обсудим в Разделах 3.4.2.4 и Разделе 4.1.6. С таким же успехом может оказаться, что этот первый ноль не отображается в вашей системе при вводе Umask и вы видите только 3 числа, представляющих маску создания файла по умолчанию.
Каждая UNIX-подобная система имеет системную функцию для создания новых файлов, которая вызывается каждый раз, когда пользователь использует программу, создающую новые файлы, например, при загрузке файла из Интернета, при сохранении нового текстового документа и так далее. Эта функция создает как новые файлы, так и новые каталоги. Полное разрешение на чтение, запись и выполнение предоставляется всем при создании нового каталога. При создании нового файла эта функция предоставит разрешения на чтение и запись для всех, но установит разрешения на выполнение на none для всех категорий пользователей. Это, прежде чем маска будет применена, каталог имеет разрешения 777 or rwxrwxrwx, простой файл 666 or рв-рв-рв-.
Команда Umask значение вычитается из этих разрешений по умолчанию после того, как функция создала новый файл или каталог. Таким образом, каталог будет иметь разрешения 775 по умолчанию файл 664, если значение маски (0) 002. Это показано в следующем примере:
bert: ~> новый каталог
bert: ~> ls -ld новый каталог
drwxrwxr-x 2-х местный причал
4096 28 февраля 13:45 newdir /
bert: ~> новый каталог
bert: ~> ls -ld новый каталог
drwxrwxr-x 2-х местный причал
bert: ~> коснуться нового файла
bert: ~> ls -l новый файл
-rw-rw-r - 1 причал
0 28 фев 13:52 newfile
bert: ~> коснуться нового файла
bert: ~> ls -l новый файл
-rw-rw-r - 1 причал
Файлы против каталогов
По умолчанию каталог получает больше разрешений: он всегда имеет выполнять разрешение. Если бы этого не было, он был бы недоступен. Попробуйте это, изменив каталог 644 с помощью chmodding!
Если вы войдете в другую группу с помощью новая группа команда, маска остается неизменной. Таким образом, если он установлен на 002файлы и каталоги, которые вы создаете, находясь в новой группе, также будут доступны другим членам этой группы; вам не нужно использовать CHMOD.
Команда корень Пользователь обычно имеет более строгие права на создание файлов по умолчанию:
[root @ estoban root] # umask 022
[root @ estoban root] # umask 022
Эти значения по умолчанию устанавливаются для всей системы в файлах конфигурации ресурсов оболочки, например / Etc / Bashrc or
/ etc / profile. Вы можете изменить их в своем собственном файле конфигурации оболочки, см. Главу 7 о настройке среды оболочки.
3.4.2.4. Смена владельца пользователя и группы
Если файл принадлежит не тому пользователю или группе, ошибку можно исправить с помощью Чаун (сменить владельца) и команда chgrp (изменить группу) команды. Смена владельца файла - частая задача системного администратора в средах, где файлы должны совместно использоваться в группе. Обе команды очень гибкие, в чем вы можете убедиться, используя --Помогите опцию.
Команда Чаун команда может применяться для изменения права собственности на файл как пользователя, так и группы, в то время как команда chgrp меняет только право собственности на группу. Конечно, система проверит, есть ли у пользователя, вводящего одну из этих команд, достаточные права доступа к файлам, которые он хочет изменить.
Чтобы изменить только право собственности пользователя на файл, используйте следующий синтаксис:
Чаун новый_пользователь файл
Если вы используете двоеточие после имени пользователя (см. Информационные страницы), права собственности группы также будут изменены на основную группу пользователя, вводящего команду. В системе Linux у каждого пользователя есть своя группа, поэтому эту форму можно использовать для приватности файлов:
Джеки: ~> id
uid = 1304 (jacky) gid = (1304) groups = 1304 (jacky), 2034 (pproject)
Джеки: ~> ls -l мой_отчет
-rw-rw-r-- 1 проект Джеки 29387 15 января 09:34 my_report jacky: ~> Чаун Джеки: my_report
Джеки: ~> chmod или my_report
Джеки: ~> ls -l мой_отчет
-rw-rw ---- 1 Джеки Джеки 29387 15 января, 09:34 my_report
Джеки: ~> id
uid = 1304 (jacky) gid = (1304) groups = 1304 (jacky), 2034 (pproject)
Джеки: ~> ls -l мой_отчет
-rw-rw-r-- 1 проект Джеки 29387 15 января 09:34 my_report jacky: ~> Чаун Джеки: my_report
Джеки: ~> chmod или my_report
Джеки: ~> ls -l мой_отчет
-rw-rw ---- 1 Джеки Джеки 29387 15 января, 09:34 my_report
If Jacky хотел бы поделиться этим файлом, не давая всем разрешения на его запись, он может использовать
команда chgrp:
Джеки: ~> ls -l отчет-20020115.xls
-rw-rw ---- 1 Джеки Джеки 45635 15 января 09:35 report-20020115.xls jacky: ~> Отчет проекта chgrp-20020115.xls
Джеки: ~> chmod o = report-20020115.xls
Джеки: ~> ls -l отчет-20020115.xls
-rw-rw ---- 1 проект Джеки 45635 15 января 09:35 report-20020115.xls
Джеки: ~> ls -l отчет-20020115.xls
-rw-rw ---- 1 Джеки Джеки 45635 15 января 09:35 report-20020115.xls jacky: ~> Отчет проекта chgrp-20020115.xls
Джеки: ~> chmod o = report-20020115.xls
Джеки: ~> ls -l отчет-20020115.xls
-rw-rw ---- 1 проект Джеки 45635 15 января 09:35 report-20020115.xls
Таким образом, пользователи в группе Проект сможет работать с этим файлом. Пользователи, не входящие в эту группу, не имеют к этому никакого отношения.
Оба формата Чаун и команда chgrp может использоваться для рекурсивной смены владельца, используя -R вариант. В этом случае все базовые файлы и подкаталоги данного каталога будут принадлежать данному пользователю и / или группе.
ограничения
В большинстве систем использование Чаун и команда chgrp команды ограничены для непривилегированных пользователей. Если вы не являетесь администратором системы, вы не можете изменять права собственности пользователя или группы по соображениям безопасности. Если использование этих команд не будет ограничено, злоумышленники могут передать права собственности на файлы другим пользователям и / или группам и изменить поведение среды этих пользователей и даже причинить ущерб файлам других пользователей.
3.4.2.5. Специальные режимы
Чтобы системный администратор не беспокоился о постоянном решении проблем с разрешениями, можно предоставить специальные права доступа для целых каталогов или отдельных программ. Есть три специальных режима:
• Режим липкого бита: после выполнения задания команда сохраняется в системной памяти. Первоначально эта функция часто использовалась для экономии памяти: большие задания загружались в память только один раз. Но в наши дни память стоит недорого, и есть более эффективные методы управления ею, поэтому она больше не используется для оптимизации отдельных файлов. Однако применительно ко всему каталогу липкий бит имеет другое значение. В этом случае пользователь может изменять файлы в этом каталоге только тогда, когда он является пользователем-владельцем файла или когда файл имеет соответствующие разрешения. Эта функция используется в таких каталогах, как
/ Вар / TMP, которые должны быть доступны для всех, но пользователи не могут изменять или удалять данные друг друга. Липкий бит обозначается значком t в конце поля разрешения файла:
отметка: ~> ls -ld / var / tmp
drwxrwxrwt 19 корень корень
8192 16 янв, 10:37 / var / tmp /
отметка: ~> ls -ld / var / tmp
drwxrwxrwt 19 корень корень
Бит залипания устанавливается с помощью команды CHMOD о + т каталог. Историческое происхождение буквы "t" находится в UNIX. сохранить доступ к тексту функцию.
• SUID (установить идентификатор пользователя) и SGID (установить идентификатор группы): представлены символом s в поле разрешения пользователя или группы. Когда этот режим установлен для исполняемого файла, он будет работать с разрешениями пользователя и группы для файла, а не с правами пользователя, вводящего команду, тем самым предоставляя доступ к системным ресурсам. Мы обсудим это далее в главе 4.
• SGID (установить идентификатор группы) в каталоге: в этом особом случае каждый файл, созданный в каталоге, будет иметь того же владельца группы, что и сам каталог (в то время как нормальное поведение будет заключаться в том, что новые файлы принадлежат пользователям, которые их создают). Таким образом, пользователям не нужно беспокоиться о праве собственности на файлы при совместном использовании каталогов:
мими: ~> ls -ld / opt / docs
drwxrws --- 4 пользователя root
4096 25 июля 2001 г. docs /
мими: ~> ls -ld / opt / docs
drwxrws --- 4 пользователя root
мими: ~> ls -l / opt / docs
-rw-rw ---- 1 пользователей mimi
345672 30 августа 2001-Council.doc
мими: ~> ls -l / opt / docs
-rw-rw ---- 1 пользователей mimi
Это стандартный способ обмена файлами в UNIX.
Существующие файлы остаются без изменений!
Файлы, которые перемещаются в каталог SGID, но были созданы в другом месте, сохраняют своего первоначального пользователя и владельца группы. Это может сбивать с толку.