Операционные системы семейства Unix, такие как Linux, отличаются от большинства остальных тем, что они не только многозадачные, но и многопользовательские.
Если вы немного продвинуты в Windows, то можете мне возразить. Ведь в десктопных версиях Windows тоже можно создать учетные записи разных пользователей. Но это не делает Windows многопользовательской. Только серверные версии Windows являются многопользотельскими.
Так что же тогда означает термин многопользовательская операционная систему? Несколько разных пользователей могут работать с компьютером в одно и то же время. Компьютер обычно имеет только один набор клавиатуры и мыши, тем не менее это не мешает использовать его разными людьми в один и тот же момент времени.
Например, если компьютер подключен к локальной сети или к интернету, разные люди могут с помощью ssh получить доступ к консоли операционной системы и работать с компьютером. Но и это не предел. Удаленный доступ можно получить и к графической среде Linux и работать с приложения, которые будут отображаться на мониторе удаленного компьютера. Несколько людей могут одновременно работать с одним и тем же компьютером. Графическая оболочка X Window в Linux поддерживает такой режим работы.
Инструкции Linux — #15 урок. Запуск исполняемых файлов
Возможность многопользовательской работы глубоко интегрирована в архитектуру операционной системы Linux. Дело в том, что Linux является подобной Unix. А теперь имеет смысл представить окружение, в котором был разработан Unix. За годы до того, как компьютеры стали «персональными», они были огромными, дорогими и «общими».
Типичная компьютерная система университета состояла из огромной вычислительной машины, расположенной в одном из зданий, и множества терминалов, расположенных по всей территории университета. Каждый терминал был соединен с огромной вычислительной машиной, которая поддерживала работу многих пользователей в одно и тоже время.
Чтобы сделать подобное реальным был разработан метод защиты пользователей друг от друга. Ведь нельзя было допустить, чтобы действия одного пользователя привели к остановке всех вычислений и «крушению» вычислительной системы. Также нельзя было позволять разным людям вмешиваться в файлы, которые им не принадлежат.
Чтобы разобраться в основах разделения прав доступа и разрешений различных пользователей, познакомимся с командами:
- chmod — смена разрешений доступа к файлу
- su — временно стать «суперпользователем» root
- sudo — выполнить команду с правами «суперпользователя»
- chown — изменить владельца файла
- chgrp — изменить группу владельца файла
Разрешения файлов
В операционной системе Linux каждому файлу и директории заданы разрешения доступа для владельца файла, членов группы владельца файла и всех остальных пользователей. Права могут быть заданы на чтение, запись и выполнение (запуск файла, содержащего программный код) файла.
Для просмотра настроек разрешений для файла можно воспользоваться командой ls с ключом -l. На примере показан фрагмент детального вывода списка файлов из директории /etc.
Управление доступом к файлам в Linux, назначение владельцев, права по умолчанию
На примере мы видим, что файл tcsd.conf:
- имеет владельца tss
- пользователь tss может осуществлять чтение и запись файла
- имеет группу владельца tss
- члены группы tss не имеют доступа к файлу
- все остальные не имеют доступа к файлу
А теперь рассмотрим как представляется информация о разрешениях в выводе прав доступа. Она содержит символ, определяющий тип файла. Далее идет три набора из трех символов, которые представляют права доступа. Первый символ указывает право чтения, второй записи, третий выполнения или входа. Первый набор из трех символов указывает права доступа владельца файла, второй — права группы файла, а последний указывает права доступа файла для всех остальных пользователей.
chmod
Сменить разрешения доступа к файлу или директории можно с помощью команды chmod. Для этого нужно указать желаемые настройки прав доступа для файла, файлов или директории, которые нужно изменить. Есть два способа указать разрешения доступа. Сейчас мы рассмотрим только один из них, основанный на указании разрешений всех типов, записанных в восьмеричной нотации.
Можно представить настройки прав как последовательность бит. Именно так их представляет операционная система. Вот как это работает.
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx — — = 111 000 000
rwx = 111 в двоичной нотации = 7 в восьмеричной и десятичной
rw- = 110 в двоичной нотации = 6 в восьмеричной и десятичной
r— = 101 в двоичной нотации = 5 в восьмеричной и десятичной
r— = 100 в двоичной нотации = 4 в восьмеричной и десятичной
-wx = 011 в двоичной нотации = 3 в восьмеричной и десятичной
-w- = 010 в двоичной нотации = 2 в восьмеричной и десятичной
—x = 001 в двоичной нотации = 1 в восьмеричной и десятичной
— = 000 в двоичной нотации = 0 в восьмеричной и десятичной
Теперь, если мы представим каждую из трех групп прав доступа (владелец, группа, остальные) как отдельную цифру, у нас появится достаточно простой и удобный вид записи всех возможных разрешений. Например, если мы желаем задать файлу file разрешения на чтение и запись владельцу и сделать его недоступным для всех остальных (включая членов группы), мы можем выполнить команду:
[[email protected] test]$ chmod 600 some_file
Рассмотрим наиболее применимые разрешения доступа для файлов. Те, что начинаются с цифры 7 используются для программ (они разрешают выполнение), а остальные для других видов файлов.
- 777 — rwxrwxrwx — отсутствуют любые ограничения, каждый может выполнять с файлом любые действия. Обычно это нежелательный вариант.
- 755 — rwxr-xr-x — владелец имеет полный доступ, все остальные могут только читать и выполнять файл. Такие права устанавливаются на программы, используемые всеми пользователями.
- 700 — rwx—— — только владелец имеет полный доступ к файлу. Никто другой не имеет никакого доступа к файлу. Это разрешение используется для программ, которые используются только владельцем и должны быть недоступны остальным пользователям.
- 666 — rw-rw-rw- —все пользователи имеют права на чтение и запись файла.
- 644 — rwxr—r— —владелец имеет разрешения чтения и записи файла. Все остальные пользователи могут лишь читать файл. Используется для файлов с данными, к которым нужно открыть доступ на чтение для всех пользователей, но изменять данные может только владелец.
- 600 — rw——- —только владелец может читать и записывать файл. Никто другой не имеет доступа к файлу. Используется для частных файлов.
Разрешения директорий
При помощи команды chmod также можно изменять разрешения доступа к директориям. Также возможно использование восьмеричной нотации для задания прав доступа, но значения атрибутов r, w и x отличаются:
- r — позволяет просматривать содержимое директории (при условии что также задан атрибут x)
- w — позволяет создавать, удалять и переименовывать файлы и директории внутри директории (при условии что также задан атрибут x)
- x — позволяет войти в директорию (например, с помощью команды cd)
Для директорий наиболее часто используются следующие разрешения доступа:
- 777 — rwxrwxrwx — отсутствуют любые ограничения, каждый может создавать и удалять файлы и директории внутри директории. Нежелательный вариант.
- 755 — rwxr-xr-x — владелец имеет полный доступ, все остальные могут входить в директорию и просматривать ее содержимое. Такие права устанавливаются на директории, к которым нужно открыть общий доступ к другим пользователям.
- 700 — rwx—— — только владелец имеет полный доступ к директории. Никто другой не имеет никакого доступа к ней и не может даже войти в нее. Используется для частных директорий, когда нужно запретить к ним любой доступ любых других пользователей.
Становимся суперпользователем
Для выполнения важных задач по администрированию системы очень часто требуются права суперпользователя root. Но постоянная работа с такими правами может негативно повлиять на нервную систему. Ведь суперпользователь имеет неограниченный доступ, а следовательно ошибок допускать нельзя. Чем больше привилегий, тем больше ответственность. Поэтому намного проще и безопаснее работать в учетной записи обычного пользователя и получать права root только, когда они необходимы. Мы ведь не хотим по ошибке разрушить свой дом имея «суперсилы»
Во многих дистрибутивах Linux существуют программы, которые могут дать временный доступ к «божественным» привилегиям root, после чего вновь можно продолжить работу в роли простого смертного не беспокоясь о последствиях.
Одна из таких программ su. Она позволяет заменить свои права на права выбранного пользователя для выполнения необходимых задач, а затем вернуть свои права обратно. Сейчас мы рассмотрим только замену своих прав, на права суперпользователя root. Чтобы получить права суперпользователя root нужно ввести команду su, после чего пароль от учетной записи root.
Если пароль введен верно, то произойдет переключения прав и в конце приглашения Linux Shell знак доллара ($) изменится на «решетку» (#), которая обозначает работу под правами суперпользователя. После этого можно выполнить необходимые команды. Для завершения сеанса работы с правами root нужно набрать команду exit. Будет осуществлен возврат к привилегиям собственной учетной записи, а знак «решетки» (#) изменится на знак доллара ($).
В некоторых дистрибутивах Linux, в основном Ubuntu, используется другой подход. Вместо переключения в режим суперпользователя с помощью команды su, используется команда sudo. С помощью команды sudo обычные пользователи могут с правами суперпользователя выполнять необходимые им команды, введя перед sudo перед командой. После этого будет запрошен пароль, но не суперпользователя, а от текущей учетной записи. Кроме того, с помощью sudo можно дать возможность отдельным пользователям выполнять с привилегиями root только определенные команды (например дать возможность перезапускать компьютер), там самым ограничив их действия.
На тестовой виртуальной машине, которую мы создали в самом начале, мы не сможем поэкспериментировать с sudo Так как для этого вначале нужно произвести необходимые настройки и дать нашему пользователю право на использование sudo. О том как это сделать можно прочитать в справочном материале к программе sudo.
Если же все же попытаться выполнить команду sudo с привилегиями обычного пользователя, мы получим сообщение, что наш пользователь не указан в списке пользователей, которым это разрешено, а о нашей попытке будет доложено в «рапорте». В Linux безопасность находится на высоком приоритете и все попытки неудачного доступа журналируются в логах.
Смена владельца файла
Сменить владельца файла или директории можно с помощью команды chown. Чтобы сменить владельца файла нужны привилегии суперпользователя, которые можно получить с помощью команд su или sudo. Используя su, после выполнения команды chown важно не забыть выполнить команду exit, чтобы «вернуть» права суперпользователя root и продолжить работу под своими правами.
Например, мы хотим сменить владельца файла test.txt c mikhail на root. Для этого выполним следующие команды:
Источник: linuxcommand.ru
VS Web School
Давайте рассмотрим запуск shell скрипта в графической оболочке на примере Android Studio. На Ubuntu исполняемый файл выполнен в виде shell скрипта studio.sh и находится он в папке android-studio/bin.
На Ubuntu 12 он запускался без каких-либо проблем, но вот в Ubuntu 14, когда вы запустите исполняемый файл, то запустится текстовый редактор. Это происходит потому, что shell скрипт это просто текстовый файл с командами для системы Linux, которые выполняются поочередно.
Для того чтобы наш скрипт запускался в графической оболочке нужно сделать следующие вещи:
1. Нажимаем правой кнопкой мыши по нашему studio.sh файлу и в Свойствах (Properties) → Права (Permissions) проверяем чтобы стояла галочка «Разрешить выполнение файла как программы» (Allow executing file as program).
2. Затем в файловом менеджере “Files” выбираем меню Правка (Edit) → Параметры (Preferences) → Поведение (Behavior) и отмечаем “Каждый раз спрашивать” (Ask each time).
Теперь при запуске файла у вас будут спрашивать как вы хотите запустить скрипт в графическом виде или в терминале.
Если же вам нужно сразу запускать скрипты, то поставьте галочку на “Запускать исполняемые текстовые файлы при открытии”.
Источник: vswebschool.blogspot.com
Команда Chmod в Linux (права доступа к файлам)
В Linux управление доступом к файлам осуществляется с помощью разрешений, атрибутов и владельцев файлов. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к файлам и каталогам.
В этом руководстве рассказывается, как использовать команду chmod для изменения прав доступа к файлам и каталогам.
Разрешения для файлов Linux
Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и имеет права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Остальные (все остальные).
Владение файлом можно изменить с помощью команд chown и chgrp .
К каждому классу применяются три типа прав доступа к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Права доступа к файлам можно просмотреть с помощью команды ls :
ls -l filename.txt
-rw-r—r— 12 linuxize users 12.0K Apr 8 20:51 filename.txt |[-][-][-]- [——] [—] | | | | | | | | | | | | | +————> 7. Group | | | | | +——————-> 6. Owner | | | | +—————————> 5. Alternate Access Method | | | +—————————-> 4. Others Permissions | | +——————————-> 3. Group Permissions | +———————————-> 2. Owner Permissions +————————————> 1. File Type
Первый символ показывает тип файла. Это может быть обычный файл ( — ), каталог ( d ), символическая ссылка ( l ) или любой другой специальный тип файла.
Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных. Разрешения могут иметь разное значение в зависимости от типа файла.
В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет разрешения на чтение и запись ( rw- ), а группа и другие пользователи имеют разрешения только на чтение ( r— ).
Каждый из трех троек разрешений может состоять из следующих символов и иметь различные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
Читать | — | Файл не читается. Вы не можете просмотреть содержимое файла. |
r | Файл доступен для чтения. | |
Написать | — | Файл нельзя изменить или модифицировать. |
w | Файл можно изменить или модифицировать. | |
Выполнить | — | Файл не может быть выполнен. |
x | Файл можно запустить. | |
s | Если он найден в user триплете, он устанавливает бит setuid . Если он находится в тройке group , он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для исполняемого файла setgid флаги setuid или setgid , файл выполняется с правами владельца и / или группы. |
|
S | То же, что и s но флаг x не установлен. Этот флаг редко используется для файлов. | |
t | Если он обнаружен в others триплетах, он устанавливает бит sticky . Это также означает, что установлен флаг x . Этот флаг бесполезен для файлов. |
|
T | То же, что и t но флаг x не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
В Linux каталоги — это особые типы файлов, которые содержат другие файлы и каталоги.
Читать | — | Содержимое каталога не отображается. |
r | Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью ls .) |
|
Написать | — | Содержимое каталога нельзя изменить. |
w | Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) |
|
Выполнить | — | Каталог не может быть изменен на. |
x | По каталогу можно перемещаться с помощью cd . | |
s | Если он находится в тройке user , он устанавливает бит setuid . Если он находится в group триплете, он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для каталога setgid флаг setgid новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. setuid не влияет на каталоги. |
|
S | То же, что и s но флаг x не установлен. Этот флаг бесполезен для каталогов. | |
t | Если он обнаружен в others триплетах, он устанавливает бит sticky . Это также означает, что установлен флаг x . Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь может удалять или переименовывать файлы в каталоге. |
|
T | То же, что и t но флаг x не установлен. Этот флаг бесполезен для каталогов. |
Использование chmod
Команда chmod имеет следующую общую форму:
chmod [OPTIONS] MODE FILE.
Команда chmod позволяет вам изменять права доступа к файлу, используя символьный или числовой режим или справочный файл. Мы объясним режимы более подробно позже в этой статье. Команда может принимать в качестве аргументов один или несколько файлов и / или каталогов, разделенных пробелом.
Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod , особенно при рекурсивном изменении разрешений.
Символьный (текстовый) метод
Синтаксис команды chmod при использовании символьного режима имеет следующий формат:
chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE.
Первый набор флагов ( [ugoa…] ), флаги пользователей, определяет, какие классы пользователей изменяют права доступа к файлу.
- u — владелец файла.
- g — Пользователи, входящие в группу.
- o — Все остальные пользователи.
- a — Все пользователи, идентичные ugo .
Если флаг пользователей опущен, по умолчанию используется значение a и разрешения, установленные с помощью umask , не затрагиваются.
Второй набор флагов ( [-+=] ), флаги операции, определяет, следует ли удалить, добавить или установить разрешения:
- — Удаляет указанные разрешения.
- + Добавляет указанные разрешения.
- = Изменяет текущие разрешения на указанные разрешения. Если после символа = не указаны разрешения, все разрешения из указанного класса пользователей удаляются.
Разрешения ( perms. ) могут быть явно установлены с использованием нуля или одной или нескольких следующих букв: r , w , x , X , s и t . Используйте одну букву из набора u , g и o при копировании разрешений из одного класса пользователей в другой.
При настройке разрешений для более чем одного пользовательского класса ( [,…] ) используйте запятые (без пробелов) для разделения символьных режимов.
Ниже приведены несколько примеров использования команды chmod в символьном режиме:
-
Дайте членам группы разрешение на чтение файла, но не на его запись и выполнение:
chmod g=r filename
chmod ax filename
chmod -R ow dirname
chmod og-rwx filename
То же самое можно сделать, используя следующую форму:
chmod og= filename
chmod u=rwx,g=r,o= filename
chmod g+u filename
chmod o+t dirname
Числовой метод
Синтаксис команды chmod при использовании числового метода имеет следующий формат:
chmod [OPTIONS] NUMBER FILE.
При использовании числового режима вы можете установить разрешения для всех трех классов пользователей (владельца, группы и всех остальных) одновременно.
NUMBER может быть 3- или 4-значным числом.
Когда используется трехзначный номер, первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
- 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 :
stat -c «%a» filename
Вот несколько примеров того, как использовать команду chmod в числовом режиме:
-
Предоставьте владельцу файла разрешения на чтение и запись и только на чтение членам группы и всем другим пользователям:
chmod 644 dirname
chmod 750 dirname
chmod 1777 dirname
chmod -R 700 dirname
Использование справочного файла
Параметр —reference=ref_file позволяет вам установить права доступа к файлу такими же, как у указанного справочного файла ( ref_file ).
chmod —reference=REF_FILE FILE
Например, следующая команда назначит права доступа file1 к file2
chmod —reference=file1 file2
Рекурсивно изменить права доступа к файлу
Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( —recursive ):
chmod -R MODE DIRECTORY
Например, чтобы изменить права доступа для всех файлов и подкаталогов в каталоге /var/www на 755 вы должны использовать:
chmod -R 755 /var/www
Работа с символическими ссылками
Символические ссылки всегда имеют 777 разрешений.
По умолчанию, при изменении разрешений символической ссылки, chmod изменяет права доступа к файлу, на который указывает ссылка.
chmod 755 symlink
Скорее всего, вместо смены целевого владельца вы получите ошибку «Нет доступа к ‘символической ссылке’: в разрешении отказано».
Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks . 1 означает включен, а 0 отключен. Рекомендуется не отключать защиту символических ссылок.
Массовое изменение прав доступа к файлам
Иногда возникают ситуации, когда вам нужно массово изменить права доступа к файлам и каталогам.
Наиболее распространенный сценарий — рекурсивное изменение разрешений файла веб-сайта на 644 и разрешений каталога на 755 .
find /var/www/my_website -type d -exec chmod 755 <> ;find /var/www/my_website -type f -exec chmod 644 <> ;
find /var/www/my_website -type d -exec chmod u=rwx,go=rx <> ;find /var/www/my_website -type f -exec chmod u=rw,go=r <> ;
Команда find будет искать файлы и каталоги в /var/www/my_website и передавать каждый найденный файл и каталог команде chmod для установки разрешений.
Выводы
Команда chmod изменяет права доступа к файлу. Разрешения можно установить с помощью символьного или числового режима.
Чтобы узнать больше о chmod посетите страницу руководства chmod .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник: routerus.com