Права доступа к файлам и директориям в UNIX

Одной из сложных задач для начинающего веб-разработчика является правильное использование chmod для установки прав доступа к файлам на UNIX и Linux веб-серверах. Вы должны установить правильные права на CGI скрипты, чтобы не появлялись эти ужасные сообщения «500 Server Error». В этом руководстве, мы собираемся объяснить концепцию прав, и показать вам как устанавливать права используя FTP утилиты или при помощи Telnet.

[Disclaimer: Данная статья была переведена в рамках «Конкурса на лучший перевод статьи» на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Что такое права?

На веб-сервере UNIX, каждый отдельный файл и папка, хранящиеся на жестком диске имеет ряд прав, связанных с ним, в котором говорится, кто и что может делать с файлом. У каждого файла (и папки) также есть «владелец» и «группа» связанная с ним. Если вы создали файл, то как правило владельцем файла являетесь вы и ваша группа, или группе связанной с директорией в которой вы создали файл.

Кто может изменять права?

Есть три типа пользователей которые имеют доступ к файлам — Владелец файла, члены Группы, владеющей файлом и Остальные (все прочие). В UNIX эти 3 типа пользователей обозначаются буквами U (для Владельца, или Юзер), G (для Группы), и O (для Остальных).

Какие права можно устанавливать?

Есть три основных прав доступа котороые могут быть применены к файлам и директориям:

  1. Вы можете читать содержимое файлов. Для каталогов — просматривать перечень имен файлов в каталоге.
  2. Вы можете писать (или изменять) файл. Для каталогов — создание и удаление файлов из директории.
  3. Вы можете исполнять (запускать) файлы, если это бинарные программы или скрпты. Для каталогов — иметь доступ к файлам в директории.

Что означают все эти буквы и цифры?!

Здесь мы рассмотрим основы. Как вы можете заметить их не так уж и много на самом деле!

Путаница часто происходит, когда Вам надо сделать установку прав на сервере. Для CGI скриптов необходимо устанавливать права что-то вроде «Chmod 755» или «Убедитесь, что файл является исполняемым». Кроме того, при использовании FTP или SSH, вы увидите множество забавных букв рядом с файлами (например, rwxrw-rw). Сейчас мы объясним, что означают эти иероглифы!

Когда вы подключаетесь по FTP на ваш веб-сервер, вы вероятно увидите что-то типа этого возле каждого файла и папки:

drwxrwxrwx

Эта последовательность букв drwxrwxrwx означает права, установленные для этой папки (заметим, что их часто называют атрибутами FTP программы). Давайте разберем, что каждая из этих букв означает:

d         r    w     x       r    w     x       r    w     x
Owner Group Other
Directory Read Write Execute Read Write Execute Read Write Execute

Как вы можете видеть, последовательность букв разделяется на 3 колонки по 3 буквы каждая, обозначающие каждый из типов пользователей (владелец, члены группы, и все остальные).

Существует также и буква «d» атрибут слева, который говорит нам о том, что данный объект является директорией.

Если любая из этих букв заменена на дефис (-), то это означает, что разрешение не установлено. Например:

drwxr-x--x 

Директория, у которой есть права на чтение, запись и исполнение для владельца, чтение и выполнение для группы и только выполнение для всех остальных.

-rw-rw-rw-

Файл, который может быть прочитан и изменён всеми, но не исполняем ни для кого.

-rw-r--r-- 

Файл который может прочитать и изменить пользователь, а прочитать только пользователи группы и остальные пользователи.

Использование чисел вместо букв

Как мы уже раньше говорили, вас будут часто просить установить права с помощью чисел таких, как «set 755 permissions». Что означают эти цифры?

Каждое из трех чисел соответствует каждой букве (r w x) о которых мы говорили ранее. Иными словами, первое число определяет права для владельца, второе число определяет права для группы, а третье число определяет права для всех остальных.

Каждое число может принимать одно из восьми значений в диапазоне от 0 до 7. Каждое значение соответствует определенным правам на чтение, запись и выполнение «, как указано в этой таблице:

Number     Read(R)     Write(W)     Execute(X)
0 No No No
1 No No Yes
2 No Yes No
3 No Yes Yes
4 Yes No No
5 Yes No Yes
6 Yes Yes No
7 Yes Yes Yes

Для примера:

777 =  rwxrwxrwx
755 = rwxr-xr-x
666 = rw-rw-rw-
744 = rwxr--r--

Настройка разрешений

Два самых распространённых способа установить разрешения на файлы и папки это с помощью FTP или SSH. Давайте рассмотрим первым FTP.

Установка разрешений с помощью FTP

С помощью FTP вы сможете установить права на ваши файлы, выбрав файл (в отдельном окне) и правой кнопкой мыши выбрать необходимые вм опции, такие как CHMOD или Set permissions или же выбрав в меню пункт CHMOD / Set permissions.

Как видите, довольно легко установить или убрать права на чтение, запись и выполнение для владельца, группы и других, используя флажки. Кроме того, вы можете ввести в эквиваленте 3-значный номер, если вы уже знаете как (см. предыдущий раздел). Все очень просто!

Установка разрешений с помощью SSH

Другой распространенный способ установить разрешения на файлы с помощью SSH (или консоли). Это в целом быстрее, если вы хотите изменить права на большое количество файлов одновременно (например, изменение всех. CGI файлов в папке только на вполнение).

После того, как вы подключитесь по SSH к вашему серверу, и залогинетесь в систему, перейдите в папку, содержащую файлы, которые вы хотите изменить, например:

cd mysite/cgi-bin 

Использование буквенного способа

Вы можете использовать буквы u (владелец / пользователь), g (группы) и o (другие), чтобы установить разрешение для каждого из типов пользователей, а также r (чтение), w (запись) и x (выполнение) для установки прав.

Вы также можете использовать «a» вместо u, g и o, что является синонимом для всех пользователей (u, g, o).

Вы можете назначить разрешения, используя либо знак плюс (+), которое означает «добавить эти права», знак минус (-), что означает «удалить эти разрешения», или знак равенства (=), что означает «изменить разрешения для конкретного случая «. Например:

chmod a+x formmail.cgi добавляет разрешение на выполнение для всех пользователей в файле formmail.cgi (другими словами, делает исполняемый файл).

chmod u=rwx formmail.cgi чтение, запсь и выполнение для владельца (разрешений для группы и для других остаются без изменений).

chmod go-w formmail.cgi удаляет запись для группы и для других, в результате чего разрешения владельца остаются неизменными.

Проверка разрешений

Вы можете проверить разрешения на все файлы и папки в текущей директории с помощью команды:

ls -l

Это покажет Вам разрешение для каждого файла и папки, так же, как и FTP программы.

Happy CHMOD’ing!

———-
Оригинальный текст статьи: Understanding Permissions (UNIX)

Как стать программистом приложений на Android

Может показаться, что написаны уже все приложения, какие-только возможно, и особо ничего нового больше не нужно. Но это не так, на самом деле новые приложения появляются каждый день, ведь 70-80% процентов всех устройств работают на Андроиде: смартфоны, планшеты, бытовые приборы и роботы.

Существующие приложения нуждаются в обновлениях, т.к. выходят новые устройства, обновляется ОС Android, улучшается функционал. Основные категории: мессенджеры, кошельки, онлайн-банки, заказ такси, еда онлайн и игры (треть от всего). Нет такого вопроса, стоит ли становиться Android разработчиком, есть только определённые шаги, которые нужно пройти, чтобы стать им.

Как стать программистом приложений на Android, изображение №1

Что делает Андроид-разработчик

Здесь нет такого, что если ты стал разработчиком, то должен уметь делать всё. Конечно, есть мастера на все руки, но чаще происходит разделение обязанностей. Не стоит также впадать в уныние, если всё кажется слишком сложным, и вам не хватит пол жизни чтобы всё постигнуть. Всё сразу не нужно, работа есть как для профессионалов, так и для новичков (черновая работа, правда, но с чего-то нужно начинать ;)).

Как разработчик, вы можете выбрать работу, наиболее близкую к сердцу:

  • Продумывание пользовательского интерфейса, внутренней логики и структуры приложения, удобная навигация – всё это называется UI (User Interface)
  • Написание кода по прописанным алгоритмам (блок-схеме)
  • Оптимизация кода уже рабочего продукта, для мобильных устройств важно минимальное потребление энергии
  • Для онлайн-банков и кошельков особенно важна тема безопасности, нужно найти потенциально уязвимые места и переписать код на безопасный
  • Тестировщик, нужно тестировать приложение на разных версиях ОС, устройствах, в нестандартных условиях
  • На финальном этапе нужно написать документацию для пользователя, загрузить приложение в Google Play и другие магазины приложений
  • Дальше идёт по кругу изучение статистики пользователей, отзывов и доработка

Как всему этому обучаться

Есть два варианта:

  • Самостоятельно с помощью книг, документации, инструкций, которых полно, тематических форумов, видеоуроков на ютубе, статей в блогах
  • Приобрести курс по разработке на андроиде
  • Записаться на групповое или индивидуальное обучение

Все варианты рабочие, разница во времени, которое придётся потратить, и от ваших способностей. В статье про работу программистом я уже упоминал, что здесь нужно обладать математическим, аналитическим складом ума. Гуманитарии смогут разобраться, но будет ли работа доставлять удовольствие – другой вопрос.

Самостоятельное обучение методом проб и ошибок может подзатянуться во времени, к тому же нужно обладать талантом самоорганизации и не бросить всё это дело. Ведь на первичную подготовку уйдёт от 3-х месяцев до года. В любом случае лучше начинать хоть с какого-нибудь курса со структурированной подачей. Это станет отправной точкой для дальнейшего погружения в тему разработки.

Самый быстрый результат получается в групповых или индивидуальных занятиях, например, в школе разработчиков ITEA https://itea.ua/courses-itea/mobile-development/android-advanced/. В этом случае не уходят сотни часов на поиск недостающих элементов мозаики в интернете. Как говорят программисты, 80% времени уходит на гугление вопросов почему что-то работает не так, как ожидается :).

Что нужно знать программисту приложений

Никогда не получится выучить всё, т.к. это тоже самое что знать состав всех товаров в гипермаркете :). К тому же, постоянно выходят обновления инструментов программиста. Вот с чего нужно начинать новичку:

  • Основа – язык программирования Java, именно на нём написано большинство приложений, лучше подходит для приложений, где нужно взаимодействовать с аппаратной частью смартфона
  • Язык программирования Kotlin – это рекомендованный Гуглом язык (Android – это разработка гугла, если что). Постепенно переходят на него, но Java нужно знать обязательно, потом всё-равно придётся с ним столкнуться, поэтому лучше выучить его сразу, а не потом, обрывочно
  • Среда разработки Android Studio – та самая программа с эмулятором андроида, в которой создаётся приложение
  • Общие принципы разработки: объектно-ориентированное программирование (ООП), правильное оформление кода (чтобы не было «говнокода»), удобное именование функций переменных и др.
  • Языки разметки HTML и XML, стили CSS – эти знания также позволят верстать сайты
  • Базовые принципы дизайна от Google – Material Design
  • Принципы работы и структура ОС Android
  • Изучение популярных библиотек и фреймворков (готовые функции для решения типовых задач, которые упрощают разработку)
  • Распределённая система управления версиями Git и GitHub – необходимо для работы команде и создания своего портфолио, позволяет вносить изменения в проект без хаоса
  • UI- и unit-тестирование, чтобы протестировать работу приложение во всевозможных ситуациях, обучиться автоматизации тестирования можно здесь https://itea.ua/courses-itea/qa/automated-testing/
  • Основы алгоритмизации – научит с нуля проектировать приложение на Android
  • Английский язык практически «Must Have», придётся читать документацию и форумы на английском языке, и вообще языки Java и Kotlin становятся более понятными, если знаешь английский

Карьера на Андроиде

После 3-х месяцев обучения вы можете претендовать на должность интерна или Junior (юниор – младший специалист). Далее, по мере развития скилов, станете Middle (средним, стандартным) специалистом. И если всё пойдёт по плану, то есть шансы стать Senior’ом, они получают приличные зарплаты. После сеньора можно пойти на тимлида (лидера команды). Вообще, зарплата программиста варьируется от 500 до 5000$ и выше. Зависит от профессионализма, опыта, портфолио и страны работодателя.

Небольшая ремарка, некоторые люди боятся, что Google перейдёт на другую ОС, и тогда они останутся не у дел. Как в 2016 году шли разговоры о новой ОС Fuchsia. Это всё неважно, ведь людям по-прежнему нужны будут приложения, просто у разработчиков добавится работы, нужно портировать свои приложения на другую ОС. К слову, языки программирования не сильно отличаются друг от друга. Когда знаешь Java, то чтобы перейти на другой язык понадобится всего месяц. Структуры операционных систем также не меняются на 100% в другую сторону.

Вот вы прошли через бессонные ночи и решили, что пора явиться в мир. Где работают андроид-разработчики? Конечно, это студии мобильной разработки, которые ведут сразу несколько проектов. Работа в такой студии обеспечит быстрый профессиональный рост и достойный заработок.

Во-вторую очередь разработчиков нанимают бизнесы, которым нужно своё приложение. Нужно быть готовым, что здесь вы станете тем самым специалистом на все руки, может даже винду кому-то переустановите :).

В-третьих, вы можете стать вольным программистом, т.е. фрилансером. Поначалу понадобится расширить портфолио на биржах фриланса и завоевать авторитет. Выполняйте простые задания за символическую плату, пока заявок ни станет больше, чем вы можете выполнить.

Можно пропустить все три варианта и начать с разработки своих приложений, изучить вопрос и маркетинг продвижения приложений. Вполне возможно, это самый перспективный путь развития, но нужно запастить терпением и финансовой подушкой безопасности.

По материалам IT-LIKE.