Управляющие конструкции в скриптах
Создание bash скрипта было бы не настолько полезным без возможности анализировать определенные факторы, и выполнять в ответ на них нужные действия. Это довольно-таки сложная тема, но она очень важна для того, чтобы создать bash скрипт.
В Bash для проверки условий есть команда Синтаксис ее такой:
if команда_условие thenкомандаelse командаfi
Эта команда проверяет код завершения команды условия, и если 0 (успех) то выполняет команду или несколько команд после слова then, если код завершения 1 выполняется блок else, fi означает завершение блока команд.
Но поскольку нам чаще всего нас интересует не код возврата команды, а сравнение строк и чисел, то была введена команда [[, которая позволяет выполнять различные сравнения и выдавать код возврата зависящий от результата сравнения. Ее синтаксис:
]
Для сравнения используются уже привычные нам операторы <,>,=,!= и т д. Если выражение верно, команда вернет 0, если нет — 1. Вы можете немного протестировать ее поведение в терминале. Код возврата последней команды хранится в переменной $?:
Теперь объединением все это и получим скрипт с условным выражением:
Конечно, у этой конструкции более мощные возможности, но это слишком сложно чтобы рассматривать их в этой статье. Возможно, я напишу об этом потом. А пока перейдем к циклам.
Повышение вашего статуса
Обычно команды и программы Linux запускаются с тем же набором разрешений, что и лицо, запускающее программу. Когда root запускает команду passwd изменить пароль, он работает с правами root. Это означает, что команда passwd может свободно обращаться к сохраненным паролям в файле / etc / shadow.
Идеальной была бы схема, в которой любой в системе мог бы запустить программу passwd, но при этом программа passwd сохранила бы повышенные привилегии root. Это дало бы возможность любому изменить свой пароль.
Вышеупомянутый сценарий — это именно то, что делает бит установки идентификатора пользователя (SUID). Это запускает программы и команды с разрешениями владельца файла, а не с разрешениями человека, который запускает программу.
Запуск программ Linux в графическом интерфейсе
Кроме того, вы можете запустить программу из файлового менеджера, двойным кликом мышью, но тогда для нее обязательно должен быть установлен флаг исполняемости.
Точно так же работает запуск скриптов в графическом интерфейсе. Вы можете найти все ярлыки из меню в каталоге /usr/share/applications/. Любую программу можно запустить двойным щелчком отсюда. Но давайте посмотрим что находится внутри ярлыка, для этого откройте его в текстовом редакторе:
Кроме всего прочего, в строке Exec указана команда, которая выполняет запуск программы linux, когда вы делаете двойной клик на ярлыке. Вы можете взять один из существующих ярлыков и сделать на его основе свой. Здесь указано просто имя программы
Но важно заметить, что лучше указывать полный путь в таких местах, как ярлыки, скрипты, cron и так далее это уменьшит количество ошибок, поскольку вы не можете знать проверяет ли система в этом случае PATH или ищет программу только в текущем каталоге. Теперь вы знаете все о том как запустить программу на linux
Основы скриптов
Скрипт или как его еще называют — сценарий, это последовательность команд, которые по очереди считывает и выполняет программа-интерпретатор, в нашем случае это программа командной строки — bash.
Скрипт — это обычный текстовый файл, в котором перечислены обычные команды, которые мы привыкли вводить вручную, а также указанна программа, которая будет их выполнять. Загрузчик, который будет выполнять скрипт не умеет работать с переменными окружения, поэтому ему нужно передать точный путь к программе, которую нужно запустить. А дальше он уже передаст ваш скрипт этой программе и начнется выполнение.
Простейший пример скрипта для командной оболочки Bash:
Утилита echo выводит строку, переданную ей в параметре на экран. Первая строка особая, она задает программу, которая будет выполнять команды. Вообще говоря, мы можем создать скрипт на любом другом языке программирования и указать нужный интерпретатор, например, на python:
Или на PHP:
В первом случае мы прямо указали на программу, которая будет выполнять команды, в двух следующих мы не знаем точный адрес программы, поэтому просим утилиту env найти ее по имени и запустить. Такой подход используется во многих скриптах. Но это еще не все. В системе Linux, чтобы система могла выполнить скрипт, нужно установить на файл с ним флаг исполняемый.
Этот флаг ничего не меняет в самом файле, только говорит системе, что это не просто текстовый файл, а программа и ее нужно выполнять, открыть файл, узнать интерпретатор и выполнить. Если интерпретатор не указан, будет по умолчанию использоваться интерпретатор пользователя. Но поскольку не все используют bash, нужно указывать это явно.
Чтобы сделать файл исполняемым в linux выполните:
Теперь выполняем нашу небольшую первую программу:
Все работает. Вы уже знаете как написать маленький скрипт, скажем для обновления. Как видите, скрипты содержат те же команды, что и выполняются в терминале, их писать очень просто. Но теперь мы немного усложним задачу. Поскольку скрипт, это программа, ему нужно самому принимать некоторые решения, хранить результаты выполнения команд и выполнять циклы. Все это позволяет делать оболочка Bash. Правда, тут все намного сложнее. Начнем с простого.
Настройка разрешений для файлов Mac с помощью терминала
Если вы когда-либо использовали команду chmod в Linux, то вы будете знать о ее силе. С помощью одной команды терминала вы можете установить права на чтение, запись и выполнение для файлов и каталогов.
СВЯЗАННЫЕ С: Как использовать команду chmod в Linux
Однако команда не является командой только для Linux. Как и многие другие команды терминала Linux, восходит к Unix с 1970-х годов — Linux и macOS оба разделяют это наследие, поэтому Команда доступна в macOS сегодня.
Использовать откройте окно терминала. Вы можете сделать это, нажав значок Launchpad на панели Dock и выбрав опцию «Terminal» в папке «Other».
Кроме того, вы можете использовать встроенную функцию поиска Spotlight от Apple, чтобы открыть терминал.
Просмотр текущих прав доступа к файлам
Чтобы просмотреть текущие разрешения для файла, введите:
ls -@l file.txt
Замените «file.txt» своим именем файла. Это покажет все уровни доступа пользователя, а также любые расширенные атрибуты, относящиеся к macOS.
Права доступа к файлу отображаются в первых 11 символах, выводимых команда. Первый символ, ан тире (), показывает, что это файл. Для папок это заменяется буквой () вместо
Следующие девять символов разбиты на группы по три человека.
Первая группа показывает уровни доступа для владельца файла / папки (1), средняя группа показывает разрешения группы (2), а последние три — разрешения для любых других пользователей (3).
Вы также увидите здесь письма, такие как (читать), (написать) и (Выполнить). Эти уровни всегда отображаются в таком порядке, например:
- означало бы отсутствие доступа для чтения или записи, и файл не является исполняемым.
- будет означать, что файл может быть прочитан, но не записан, и файл не является исполняемым.
- будет означать, что файл может быть прочитан и записан, но файл не является исполняемым.
- означает, что файл может быть прочитан и выполнен, но не записан.
- означает, что файл может быть прочитан, записан и выполнен.
Если последний символ является знаком (), то это означает, что файл или папка имеют расширенные атрибуты файла, относящиеся к безопасности, предоставляя определенным приложениям (например, Finder) постоянный доступ к файлу.
Отчасти это связано с новыми функциями безопасности, представленными в macOS Catalina, хотя списки контроля доступа к файлам (ACL) были функцией Mac начиная с macOS X 10.4 Tiger еще в 2005 году.
СВЯЗАННЫЕ С: Как работают новые функции безопасности macOS Catalina
Настройка прав доступа к файлам
Чтобы установить права доступа к файлам, вы будете использовать команда на терминале. Чтобы удалить все существующие разрешения, установите для пользователя права на чтение и запись, а другим пользователям — на чтение, введите:
chmod u=rw,g=r,o=r file.txt
флаг устанавливает права доступа для владельца файла, относится к группе пользователей, в то время как относится ко всем другим пользователям. Использование знака равенства () стирает все предыдущие разрешения для этой категории.
В этом случае владелец файла получает доступ на чтение и запись, а группа пользователей и другие пользователи получают доступ на чтение.
Вы можете использовать знак плюс () добавить доступ на уровень пользователя. Например:
chmod o+rw file.txt
Это предоставит всем другим пользователям доступ к файлу как для чтения, так и для записи.
Вы можете использовать минус () вместо этого, например:
chmod o-rw file.txt
Это исключит доступ для чтения и записи для всех других пользователей из файла.
Чтобы стереть, добавить или удалить разрешения для всех пользователей, используйте флаг вместо. Например:
chmod a+rwx file.txt
Это предоставит всем пользователям и группам пользователей доступ для чтения и записи к вашему файлу, а также позволит всем пользователям выполнять файл.
С большой властью приходит большая ответственность, и нельзя отрицать, что Команда — это обширный и мощный инструмент для изменения прав доступа к файлам на Mac. Вы можете, например, заменить буквы ( ) с комбинацией трех (или четырех) восьмеричных цифр, до 777 (для чтения, записи и выполнения).
Если вы хотите узнать больше об этом, введите на терминале прочитать полный список доступных флагов и настроек.
Просмотры:
903
Запуск программ в терминале
Изначально в операционных системах Unix и Linux не было графического интерфейса, поэтому программы запускались командами из терминала. Сейчас это тоже возможно и достаточно активно используется опытными пользователями. Синтаксис запуска программы выглядит таким образом:
/путь/к/файлу/программы параметры
Параметры указываются только, когда они нужны, но всегда оболочка должна знать полный путь к программе. Все что после имени программы и пробела – это параметры. Вы, наверное, уже заметили, что обычно мы не указываем полный путь при выполнении программ. Это было бы очень долго и неудобно.
Разработчики придумали обходной путь. Была создана переменная PATH, в которой хранятся все пути к папкам где обычно находятся программы – /bin, /sbin, /usr/bin, /usr/sbin и так далее. Вы можете посмотреть ее содержимое командой:
Когда вы набираете имя программы система ищет исполняемый файл с таким именем по всем папкам из PATH и если находит – то выполняет. Если же такого файла нет, то выдается сообщение – command not found. Таким образом, чтобы запустить одну из системных программ достаточно набрать имя ее исполняемого файла, например:
И можно передать параметры после пробела:
Когда программа находится не в этих каталогах, нужно указать к ней полный путь:
Если же вы хотите запустить программу через терминал ubuntu, которая находится в текущей папке, то ситуация будет немного другой. Система выполняет только поиск по папкам из переменной PATH, в текущей директории она не ищет. Поэтому, если вы наберете имя исполняемого файла, то получите ошибку. Нужно указывать полный путь, как вы помните путь к текущей папке будет ./:
Иногда возникает необходимость передать программе, какие-либо особые переменные окружения. Например, переменная EDITOR указывает какой текстовый редактор нужно использовать по умолчанию. Вы можете указать имя переменной и ее значение перед именем команды используя синтаксис:
имя_переменной = значение команда
По умолчанию эта команда открывает настройки утилиты sudo в редакторе Vim, но с этой переменной окружения настройки откроются в редакторе nano.
Запуск программ от имени другого пользователя
Вы уже знаете как запустить программу в терминале linux, а что насчет других пользователей? В Windows достаточно часто используется запуск программ от имени администратора чтобы программа могла получить больше прав доступа в системе. В Linux для этого используется утилита sudo. Ее имя можно расшифровать как switchuserdo – изменить пользователя и выполнить. По умолчанию утилита выполняет команду от имени суперпользователя root:
sudo команда sudo whoami
Но с помощью опции -u можно выполнить программу от имени любого пользователя, зарегистрированного в системе:
sudo -u имя_пользователя команда sudo -u postgres whoami
Команда whoami (кто я) выводит имя текущего пользователя.
Циклы. Цикл while.
Цикл сложнее цикла и используется для повторения команд, пока какое-то выражение истинно( код возврата = 0).
Синтаксис оператора следующий:
Пример работы цикла рассмотрим на следующем примере:
А теперь результат работы скрипта:
Как видим цикл выполняется до тех пор, пока мы не введем что-то отличное от «yes». Между и можно описывать любые структуры, операторы и т.п., все они будут выполнятся в цикле.Но следует быть осторожным с этим циклом, если вы запустите на выполнение в нём какую-либо команду, без изменения переменной выражения, вы можете попасть в бесконечный цикл.
Теперь об условии истинности. После , как и в условном операторе можно вставлять любое выражение или команду, которая возвращает код возврата, и цикл будет исполнятся до тех пор, пока код возврата = 0! Оператор аналог команды , которая проверяет истинность условия, которое ей передали.
Рассмотрим еще один пример, я взял его из книги Advanced Bash Scripting. Уж очень он мне понравился :), но я его немного упростил. В этом примере мы познакомимся с еще одним типом циклов UNTIL-DO. Эта практически полный аналог цикла WHILE-DO, только выполняется пока какое-то выражение ложно.
Вот пример:
Результат выполнения скрипта:
Mac OS
Чтобы открыть папку в файндере, передайте имя папки. Текущая папка — точка:
Если передать имя файла, он откроется в программе по умолчанию. CSS в текстовом редакторе, картинки в превью, PSD в фотошопе:
Если нужно открыть в приложении не по умолчанию, используйте опцию -a . У меня дефолт для JS-файлов это Sublime Text. А в атоме я открою такой командой:
Даже сайт можно открыть:
У команды open есть и другие опции, посмотрите их вот так:
Можно и наоборот папку из файндера открыть в терминале. Просто перетащите папку на иконку терминала в доке. А если перетащить в открытое окно терминала, то в команду подставится путь к этой папке.
Как работают скрипты
В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.
Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа — интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.
Toolchain — библиотеки, компилятор С и различные утилиты
Чтобы компилировать программное обеспечение из сторонних или ваших собственных исходников, вам понадобится по крайней мере минимальный набор утилит, куда войдут Binutils, Glibc, компилятор С, заголовочные файлы ядра Linux и утилита Make. Toolchain также используется разработчиками SliTaz для сборки системы из исходников. Для установки toolchain со всеми зависимостями введите
# tazpkg get-install slitaz-toolchain
Текущая версия toolchain может без проблем компилировать простые программы в режиме командной строки, используя Ash из состава Busybox, но некоторые программы посложнее потребуют наличия Bash для компиляции. GNU Bash доступен в качестве пакета вместе с другими средствами разработки, например, Flex, M4, Bison или Pkg-config. Если вам нужно найти pkg-config, то используйте команду
$ tazpkg search pkg-config
Если вы хотите компилировать программы, использующие библиотеку Ncurses, потребуется установить пакет ncurses-dev. Этот пакет также имеет в своем составе несколько маленьких программ, к примеру, tic и tac.
$ tazpkg search ncurses
ru/handbook/development.txt · Last modified: 2010/09/21 23:13 by lexeii
Что такое исполняемость?
Уже много написано о том, как установить флаг исполняемости. Но что происходит с файлом во время этого, что такое исполянемость и как это работает?
Программа — это набор инструкций, которые по очереди выполняет процессор над данными, чтобы получить определенный результат. Но это вы, наверное, уже знаете.
На самом деле для процессора нет разницы между данными и инструкциями. И те и другие состоят из байт, проще говоря цифр. Когда-то договорились, что определенные сочетания цифр будут означать то или иное действие процессора, а во всем остальном это те же данные. Поэтому для процессора нет никакой разницы что выполнять — исполняемый файл linux или обычный текстовый файл. Оба могут быть успешно выполнены, вот только во втором варианте инструкции не имеют никакого смысла.
Чтобы система могла определить какие файлы нужно выполнять, а какие лучше не надо и был придуман флаг исполняемости. По сути, флаг исполяемости — это несколько байт в файловой системе, которые говорят нужно выполнять файл или нет, само содержимое файла никак не изменяется. Со скриптами все работает точно так же, только команды из файла выполняет не процессор, а интерпретатор, например, в bash скриптах — сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик — это ld-linux.so.2.
Запуск программ Linux в графическом интерфейсе
Кроме того, вы можете запустить программу из файлового менеджера, двойным кликом мышью, но тогда для нее обязательно должен быть установлен флаг исполняемости.
Точно так же работает запуск скриптов в графическом интерфейсе. Вы можете найти все ярлыки из меню в каталоге /usr/share/applications/. Любую программу можно запустить двойным щелчком отсюда. Но давайте посмотрим что находится внутри ярлыка, для этого откройте его в текстовом редакторе:
Кроме всего прочего, в строке Exec указана команда, которая выполняет запуск программы linux, когда вы делаете двойной клик на ярлыке. Вы можете взять один из существующих ярлыков и сделать на его основе свой. Здесь указано просто имя программы
Но важно заметить, что лучше указывать полный путь в таких местах, как ярлыки, скрипты, cron и так далее это уменьшит количество ошибок, поскольку вы не можете знать проверяет ли система в этом случае PATH или ищет программу только в текущем каталоге. Теперь вы знаете все о том как запустить программу на linux
Расширенные права
Очевидно, что использование стандартных прав Unix недостаточно при реализации сложных схем доступа. Они не так гибки как хотелось бы. Даже используя различные биты доступа в сочетании со стандартными правами, желаемого эффекта в большинстве случаев не добиться.
В больших сетях, с многоуровневыми схемами доступа применяется более гибкая реализация назначения прав, именуемая как ACL — Списки контроля доступа.
— Соловьев Алексей aka allexnew upd 07.10.2020 17:56
Нет возможности получить список имен файлов и создать/удалить/переименовать файл в каталоге.
Можно читать/изменять/запускать(если разрешено правами на сам файл), а также создавать/удалять/переименовывать файл, но только если вы знаете его имя
Узнать имена файлов в каталоге — нет никакой возможности
Нет возможности создавать/удалять/переименовывать файлы в каталоге.
При создании файла или каталога его владелец получает полные права на него.
Хотя графические файловые менеджеры могут и отказаться открывать такой подкаталог.
Обратите внимание, что применение прав к объектам в подкаталогах произойдет только в том случае, если сам подкаталог начинает именоваться на z. Т.е
рекурсия будет применяться только и только к тем объектам, которые удовлетворяют регулярному выражению.
О чем сообщает точка после find.
Обратите внимание, в этом примере основная группа пользователя allexserv — это группа root (идентификатор 0) — при создании этого пользователя ему была явно указана принадлежность к группе root.
Обратите внимание, что, если вы устанавливаете биты SGID и SUID посредством восмеричного назначения прав, с их заменой, то регистр символа будет строчный.
В отличии от установки sticky на каталог, на файл такой бит устанавливать уже не имеет смысла. Многие современные ядра попросту игнорируют sticky на файле. На файлах он использовался на старых системах с малой ОЗУ и был очень важен в те времена. Он запрещал выгрузку программ из памяти.
Даже если имеют права 7 (rwx), хотя писать (создавать) файлы в таких каталогах они могут, при условии что имеют права 7 (rwx)
Запуск скрипта sh в Linux
Сначала рассмотрим пример небольшого sh скрипта:
Вторая строка — это действие, которое выполняет скрипт, но нас больше всего интересует первая — это оболочка, с помощью которого его нужно выполнить. Это может быть не только /bin/bash, но и /bin/sh, и даже /usr/bin/python или /usr/bin/php. Также часто встречается ситуация, что путь к исполняемому файлу оболочки получают с помощью утилиты env: /usr/bin/env php и так далее. Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости:
Мы разрешаем выполнять запуск sh linux всем категориям пользователей — владельцу, группе файла и остальным. Следующий важный момент — это то место где находится скрипт, если вы просто наберете script.sh, то поиск будет выполнен только глобально, в каталогах, которые записаны в переменную PATH и даже если вы находитесь сейчас в той папке где находится скрипт, то он не будет найден. К нему нужно указывать полный путь, например, для той же текущей папки. Запуск скрипта sh в linux:
Или полный путь от корня:
Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ — /usr/local/bin.
Теперь вы можете выполнить:
Это был первый способ вызвать скрипт, но есть еще один — мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:
А если нам нужно запустить скрипт на php, то выполните:
Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:
script.sh &
Даже запустить процесс linux не так сложно.
Скрипт «Hello World!»
Для примера можно создать простейший скрипт, выводящий надпись «Hello World!». Вначале создайте файл и сделайте его исполняемым, а затем отредактируйте в Geany. Скрипт в нашем примере имеет название hello.pl, но вы можете дать ему любое другое имя, как с расширением .pl, так и без.
Первая строка скрипта определяет путь к интерпретатору Perl, обычно это /usr/bin/perl. Для вывода на экран текста используется команда print. Нужно отметить, что Perl чувствителен к регистру и что каждая строка кода должна заканчиваться точкой с запятой. Вот сам код (вы можете его скопировать и вставить в редактор):
Чтобы выполнить скрипт, в командной строке наберите
CGI-скрипты и Perl
CGI-скрипты разработаны для отображения динамически изменяющихся веб-страниц. Язык Perl, ассоциированный с веб-сервером LightTPD, позволяет использовать CGI-скрипты в общем адресном пространстве или в виртуальных машинах. Perl вполне приспособлен к Web 2.0 и может генерировать страницы в формате xHTML. Перед тем как использовать CGI-скрипты в SliTaz, вам нужно установить Perl или Microperl и настроить сервер LightTPD. По умолчанию Shell-скрипты (расширение .sh) помещаются в папку /cgi-bin.
Когда сервер настроен должным образом, можно поместить скрипты в папку $HOME/Public/cgi-bin, задав им расширение .pl или .cgi, и просматривать их на локальном или удаленном компьютере. Пример использования скрипта Perl CGI:
Понимание прав доступа к файлам и владения в Linux
Теперь, когда вы знаете основную терминологию прав доступа и владения файлами, пришло время увидеть это в действии.
Вы можете использовать команду stat или команду ls для проверки прав доступа к файлу.
Если вы используете команду ls с опцией -l для файла, вы увидите такой вывод:
Позвольте мне объяснить этот вывод более подробно на примере данного изображения:
Позвольте мне подробнее объяснить весь вывод:
- Тип файла : обозначает тип файла. d означает каталог, — означает обычный файл, l означает символическую ссылку.
- Полномочия . В этом поле отображается набор разрешений для файла. Я объясню это подробно в следующем разделе.
- Жесткие ссылки : показывает, есть ли в файле жесткие ссылки. Количество по умолчанию — один.
- Пользователь : пользователь, которому принадлежат файлы.
- Группа : группа, которая имеет доступ к этому файлу. Только одна группа может быть владельцем файла одновременно.
- Размер файла : Размер файла в байтах.
- Время изменения : дата и время последнего изменения файла.
- Имя файла : Очевидно, имя файла или каталога.
Теперь, когда мы рассмотрели вывод команды ls -l, давайте сосредоточимся на части прав доступа к файлу.
В приведенной выше команде вы видите такое разрешение файла в девятизначном формате :
Каждая буква обозначает конкретное разрешение:
- r: разрешение на чтение
- w: разрешение на запись
- x: разрешение на выполнение файла
- -: разрешение не установлено
Права доступа всегда в порядке чтения, записи и выполнения, т. е. rwx. И затем эти разрешения устанавливаются для всех трех типов владельцев (см. Раздел «Владение») в порядке «Пользователь», «Группа» и «Другое».
Эта картина объяснит немного лучше:
Итак, если вы посмотрите на рисунок выше, вы можете сказать следующее о правах доступа к файлам:
- Файл имеет права на чтение, запись и выполнение для владельца пользователя. Но кто этот владелец использования файла? У вас есть эта информация в выводе ls -l (т.е. пользователь abhi).
- Файл имеет права на чтение и запись для группы, но не для выполнения. Какая это группа? У вас есть информация о группе в выходных данных команды ls -l (то есть группа itsfoss).
- Файл имеет разрешение на чтение только для Других, то есть для всех, кто имеет доступ к системе. Вам не нужно знать, что это за другой, потому что «другой» означает всех пользователей.
Теперь, если вы снова увидите всю команду ls -l, вы можете прочитать права доступа к файлу и владельца вместе.
Файл agatha.txt принадлежит пользователю abhi, и abhi имеет права на чтение, запись и выполнение. Все члены группы istfoss имеют доступ для чтения и записи к этому файлу, в то время как все остальные имеют доступ только для чтения к этому файлу.
Примечание. Корневой пользователь обладает сверхспособностями и обычно имеет разрешения на чтение, запись и выполнение для всех файлов, даже если вы не видите его в разрешениях для файлов.
Один пользователь может быть членом нескольких групп, но только основная группа пользователя является владельцем группы файла, созданного пользователем. Первичную группу пользователя можно найти с помощью команды id -gn <username> . Оставьте имя пользователя пустым, если вы пытаетесь найти свою основную группу.
Теперь, когда вы знаете, как узнать разрешения для файла, давайте посмотрим, как вы можете изменить разрешение и владельца файла.
Выводы
В статье мы уже касались способов установки программного обеспечения в ОС Linux. Напоминаем, что принцип установки ПО в Linux несколько отличается от установки ПО в Windows.
Установка из репозитория — самый простой путь, требующий минимум усилий. Бывает, правда, такая ситуация, что репозитория у какой-то программы нет вообще. Нет её и в репозитории операционной системы, либо там устаревшая версия. Рассмотрим другие способы установки.
deb-пакеты
Файлы .deb
это установочные пакеты проекта Debian, ныне весьма успешно используемые во многих дистрибутивах Linux. Для установки такого пакета необходимо скачать его из сети или получить на каком-то носителе (CD, DVD, флешка).
После чего выполнить в терминале команду вида sudo dpkg -i [путь к файлу/имя файла.deb]
, система попросит пароль супер пользователя и начнет установку.
К примеру, я скачал Teamviewer с официального сайта и хочу установить его в систему. В моем случае команда будет выглядеть так:
Sudo dpkg -i /home/test/Загрузки/teamviewer_10.0.37742_i386.deb
Заметьте, терминал Linux спокойно воспринимать кириллические символы, поэтому путь надо писать как есть.
В принципе, можно не писать весь путь к файлу целиком в одной команде, а сначала зайти в каталог, где находится файл
Cd /home/test/Загрузки
а затем установить программу
Sudo dpkg -i teamviewer_10.0.37742_i386.deb
sh-инсталлятор
Этот способ чем-то похож на установку программ в Windows. По крайней мере здесь вы тоже увидите мастер установки. Правда, для этого нужно запустить его через всё тот же терминал.
Например, я скачал NetBeans и хочу установить его в систему. В данном случае шагов будет несколько, поэтому будет разумнее сразу перейти в каталог с файлом.
Cd /home/test/Загрузки
Затем даем файлу права на установку
Chmod +x netbeans-8.0.2-linux.sh
После чего устанавливаем файл
Sudo ./netbeans-8.0.2-linux.sh
В случае с .sh
файлами есть и другие команды. Например, я мог бы установить NetBeans командой
Sh netbeans-8.0.2-linux.sh
Bash netbeans-8.0.2-linux.sh
Самораспаковывающиеся архивы tar.gz
Такие программы вообще не требуют установки, их достаточно просто распаковать в любое место не компьютере. Общепринятая директория при этом /opt.
Здесь можно провести аналогию с самораспаковывающимися архивами в Windows. Довольно много программ в Windows имеют так называемые Portable версии. Здесь примерно то же самое.
RPM-пакеты
Процедура установки, в общем-то, схожая с deb-пакетами. RPM-пакеты используются в дистрибутивах Red Hat, Fedora, openSUSE, CentOS и других.
Продолжим наш пример с Teamviewer. Для установки RPM-пакета мне нужно сказать файл с расширением .rpm
с сайта программы, после чего выполнить в терминале следующую команду:
Sudo rpm -i /home/test/Загрузки/teamviewer_10.0.37742.i686.rpm
Или, перейдя сначала в каталог,
Cd /home/test/Загрузки
ввести команду
Sudo rpm -i teamviewer_10.0.37742.i686.rpm
Установка из исходников
К этому способу лучше прибегать только в том случае, если нет других вариантов. Он заключается в компилировании (сборке) программы из исходных кодов.
В целом, компиляция в общем виде представляет выполнение команд ./configure
, make
и sudo make install
и достойна отдельной статьи, в которой мы скомпилируем для примера какую-нибудь программу.
Как видим, все методы установки за исключением последнего не представляют особой сложности. В данной статье не был затронут такой совсем уж простой способ установки, как установка через Менеджер программ, в котором вся установка сводится к нажатию одной кнопки.
Успехов вам! И помните, день без Linux — день, прожитый зря.