По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Что такое персональные данные Персональные данные - это любая информация, относящаяся к идентифицированному или идентифицируемому физическому лицу. Различные фрагменты информации, собранные вместе, и приводящие к идентификации конкретного лица, также представляют собой персональные данные. Трудно точно сказать, какая именно информация о человеке входит в такое понятие персональных данных (ПДн). Обращаясь к законодательству разных стран в области хранения и обработки ПДн, нельзя найти точного определения что является персональными данными. Но можно точно сказать, если по совокупности личной информации мы можем определить конкретного человека, мы имеем дело с персональными данными. Под такое определение попадает множество личных данных, которые как по отдельности, так и в совокупности, могут указать на конкретного человека. Таким образом персональными данными являются: Имя, отчество и фамилия Номер стационарного или мобильного телефона Место рождения и дата рождения Домашний адрес Адрес электронной почты (name.surname@company.com) Паспортные данные IP адрес и cookie-файлы Информация о болезнях Фото и видео файлы Аккаунты в социальных сетях ИНН Это лишь малая часть личной информации, по которой можно точно определить нужного человека. Несанкционированная, неосторожная и не имеющая должной зашиты обработка персональных данных может причинить большой вред физическим лицам и компаниям. Целью защиты персональных данных является не просто защита персональных данных человека, а защита основных прав и свобод людей, связанных с этими данными. Надежно защищая персональные данные, можно гарантировать, что права и свободы человека не нарушаются. Например, неправильная обработка персональных данных может привести к ситуации, когда человек упускает возможность трудоустройства или, что еще хуже, теряет текущую работу. Несоблюдение правил защиты персональных данных может привести к еще более жестким ситуациям, когда можно снять все деньги с банковского счета человека или даже создать опасную для жизни ситуацию, манипулируя медицинской информацией. Исходя из этого можно сказать, что любая компания, собирающая подобную информацию, должна обеспечить надежную защиту для хранения и обработки персональных данных. В России законодательной основой защиты ПДн является федеральный закон №152-ФЗ "О персональных данных". В это законе говорится, что любая организация, физическое или юридическое лицо, которое осуществляет обработку персональных данных является оператором персональных данных и несёт уголовную, административную и гражданскую ответственность за нарушение требований хранения и обработки персональных данных. В Европе защита персональных данных регулируется "Общим регламентом по защите персональных данных" (GDPR). За обработку и сохранность данных согласно GDPR отвечает контроллер данных. За нарушение норм GDPR предусмотрены штрафы в размерах до $20 млн. или до 4% оборота компании. Категории персональных данных Для определения методов и способов защиты персональных данных их можно разделить на несколько категорий: Особо охраняемы данные. К этой категории относятся данные, раскрытие которых может повлиять на конфиденциальность личности и в результате привести к дискриминации. Исчерпывающего перечня таких данных не существует, однако, данные, относящиеся к следующей информации, стали широко рассматриваться как конфиденциальные: политические взгляды, религиозные взгляды, физическое и ментальное здоровье, сексуальная ориентация, расовая и этническая принадлежность, генетические данные и т.п. Биометрические данные. К таким данных относят физиологические или поведенческие признаки физического лица. Такие данные позволяют однозначно идентифицировать человека. Можно отнести к таким ПДн отпечатки пальцев, изображение человеческого лица, сетчатку глаза, запись голоса. Общие данные. Все данные, относящиеся к человеку, которые он сам разместил в открытом доступе или же прямо или косвенно к нему относящиеся. К таким данным можно отнести страницу в социальных сетях или список редакции журнала. Обезличенные или не относящиеся к остальным категориям данные. Для разных категорий данных требуется обеспечение разной степени защиты. Особо охраняемы данные требуют максимальной защиты, так как нарушение требований защиты или утечка персональных данных может привести к значительному ущербу для субъекта персональных данных. Обезличенные же данные требуют лишь минимальной защиты, так как это не приведет к негативным последствиям для субъекта ПДн при утечки персональных данных. Способы хранения персональных данных Любая организация, которая хранит или обрабатывает любую персональную информацию пользователей и использует ее в личных целях является оператором ПДн и должен надежно их защищать, чтобы соответствовать законодательству нашей страны. Для работы организации необходимые данные клиентов должны быть доступны для многих сотрудников с нескольких устройств, поэтому должны быть обеспеченна легкая доступность и возможность легкого доступа. Решением этой проблемы может послужить локальное хранилище или различные облачные решения. Для защиты персональных данных согласно закону №152-ФЗ "О персональных данных" выделяется несколько технических мер, например шифрование. Существует три основных подхода для хранения шифрованных совместно используемых персональных данных: Локальное хранение зашифрованных данных. В этом случае данные шифруются и уже зашифрованные данные сохраняются на локальных серверах. Облачное хранилище с шифрованием на стороне сервера и при передаче. Шифрование данных осуществляет поставщик облачного хранилища, который шифрует и хранит персональные данные пользователей, а также соответствующий ключ шифрования и расшифровки в безопасном месте. По вашему запросу провайдер может расшифровать данные по вашему запросу. Такие услуги предлагают практически все облачные провайдеры, такие как Яндекс, Google, Dropbox, Microsoft и другие. Облачное хранилище с сквозным шифрованием. В этом случае данные шифруются на вашей стороне, а хранение осуществляется на облаке. Преимущество такого способа хранения в том, что вы единственный, кто обладает ключом для расшифровки данных и никто другой, даже поставщик облачных услуг. Для того понять преимущества и недостатки каждого решения для хранения и шифрования проведем риск-анализ и выясним актуальности и вероятность успеха некоторых атак, направленных на кражу и повторное использование персональных данных пользователей. Локальное хранение зашифрованных данных Способ локально хранения является достаточно простым и безопасным только в том случае, если сервер, хранящий ПДн и ключ для расшифрования достаточно защищен. Однако реализовать высокий уровень защиты для небольших и средних организаций достаточно проблематично, так как хранение персональных данных не основная их деятельность. Даже наличие достаточной технической защиты и использование безопасных программ обычно недостаточно. Профессиональные целенаправленные атаки могут полностью обойти все средства защиты используя фишинг и социальную инженерию. Это может произойти, например, если сотрудник компании откроет безобидное вложение ил пройдет по ссылке в письме, которая была подделана злоумышленником. Далее вредоносное программное обеспечение, установленное на любую машину, получает доступ к локальной сети и, использовав уязвимости некоторых программных компонентов, получает доступ к конфиденциальным файлам, в которых может храниться ключ для расшифровки базы ПДн. Кроме того, вредоносные программы могут считывать нажатия клавиш, когда вы вводите пароль для расшифровки вашей базы данных. Даже компании, которые вкладывают значительные средства в безопасность данных подвержены таким угрозам. Облачное хранилище с шифрование на стороне сервера Оператор персональных данных доверяет шифрование ПДн клиентов провайдеру облачного хранилища, передавая данные в облако по защищенному каналу. Провайдер шифрует данные и сохраняет их вместе с ключом шифрования и расшифровки в безопасном месте. Всякий раз, когда оператору ПДн необходимы данные, поставщик облачных услуг расшифровывает их и отправляет расшифрованные данные по к оператору ПДн по защищенному каналу. Для внешнего злоумышленника получение доступа к серверу провайдера, на котором хранятся зашифрованные данные, может быть технически более сложным, чем при использовании локального сервера. Это объясняется тем, что хранение данных является их основной деятельностью, поэтому провайдеры облачных хранилищ более подготовлены к таким атакам и используют более комплексную защиту. Тем не менее, вероятность успешной атаки вероятна даже в этом случае. Реальная разница заключается в мотивации злоумышленника. Если он знает, что поставщик хранит ключ дешифровки данных или незашифрованные данные, то злоумышленник может быть гораздо более мотивированным, при нападении на него. Наконец, внутренние злоумышленники включают самого облачного провайдера, а также его сотрудников, которые могут легко получить ключ для расшифровки данных. Хотя у поставщика облачных услуг нет стимула пользоваться файлами и базами данных клиентов из-за потенциальных юридических последствий и потери репутации, однако несправедливо уволенный или финансово мотивированный сотрудник может это осуществить. Облачное хранилище с шифрование на стороне клиента Данный способ хранения ПДн сочетает в себе преимущества локального хранения и облачного хранения с шифрование на стороне провайдера. Только оператор ПДн знает ключ для расшифровки, но данные безопасно хранятся у поставщика. Даже в случае, если злоумышленник каким-то образом получит копию зашифрованной базы данных с ПДн клиентов, то он не извлечет никакой личной информации. Практическую пользу от таких данных злоумышленник получит только в случае их успешного расшифрования, а для этого требуется ключ дешифровки. Если размер ключа равен 256 бит и является полностью случайным, вероятность того, что злоумышленник угадает ключ ничтожно мала. Таким образом, можно с уверенностью сказать, что ни один злоумышленник не имеет шанса угадать ключ. До тех пор, пока данные не могут быть расшифрованы, они не представляют ценности и не принесут ущерба субъектам ПДн. Однако, если ваш ключ расшифровки генерируется не случайно или совпадает с вашим паролем, злоумышленник может подобрать нужный ключ и расшифровать базы с персональными данными. Так же, алгоритм шифрования, используемый оператором ПДн или провайдером облачного хранилища, может быть уязвим для некоторых атак. Например, злоумышленник может использовать конструктивные недостатки схемы шифрования. Этого довольно маловероятно, если используются рекомендуемые и стандартизированные алгоритмы шифрования. Еще однин способ взлома схемы шифрования заключается в использовании недостатков реализации в некоторых программных компонентах, использующихся в схеме шифрования. Недостатки реализации неизбежны до тех пор. Для лучшей реализации защиты персональных данных необходимо оператору ПДн и провайдеру облачных услуг использовать рекомендуемые средства криптографической защиты информации (СКЗИ), а также регулярно обновлять программные компоненты. Таким образом, проанализировав каждый способ хранения можно сделать выводы о возможных угрозах, уязвимостях и путях утечки персональных данных в выбранном способе хранения. В приведенной ниже таблицы приведены в соответствие способы хранения и вероятности утечки ПДн, что позволяет сделать выбор наилучшего способа хранения базы персональных данных. Таблица Актуальность и вероятность успеха атаки на ПДн Угрозы Провайдер (или сотрудники) Злоумышленник Актуальность Вероятность успешной атаки Актуальность Вероятность успешной атаки Локальное хранение Низкая Низкая Умеренная Большая Облачное хранение с шифрованием на сервере Умеренная Значительная Значительная Умеренная Облачное хранение с сквозным шифрование Низкая Низкая Умеренная Умеренная Исходя из данных таблицы, можно сделать вывод о том, что облачное хранилище со сквозным шифрованием обладает наибольшей степенью защиты и наименьшей вероятностью утечки данных. Это происходит главным образом потому, что провайдер не имеет доступа к ключам для расшифрования данных, и поэтому злоумышленник не так сильно замотивирован. Даже если он получит доступ к данным, они не буду иметь ценности в зашифрованном виде. Еще одна причина для использование облачного хранилища вместо локального повышенная безопасность. Поставщик облачных услуг имеет гораздо более защищенную от угроз сервера. Это улучшает доступность и целостность персональных данных, что является главными принципами информационной безопасности. Категории угроз Под угрозой персональных данных можно считать случаи, при которых возникает вероятность потери или раскрытия личной информации субъекта персональных данных. Угрозой является лицо или организация, которые стремятся получить, изменить данные или другие активы ИС (информационной системы) незаконно, без разрешения владельца и часто без ведома владельца. Уязвимостью является возможность для угроз получить доступ к индивидуальным или организационным активам. Например, когда человек покупает что-то в интернете, он предоставляет данные кредитной карты, когда эти данные передаются через Интернет, они уязвимы для угроз. Защитная мера - это некоторая мера, которую отдельные лица или организации принимают для предотвращения угрозы неправомерного получения актива. Наконец, целью угрозы является актив, который желателен для угрозы. Угроза безопасности - это вызов конфиденциальности, целостности и доступности информационных систем, возникающих от одного из трех источников: Человеческих ошибок Компьютерных преступлений Стихийных бедствий Человеческие ошибки включают неумышленные и случайные действия, представляющие угрозу ИСПДн, вызванные работниками организации. Действия сотрудников в выполнении процедур или их отсутствие могут привести к отказу в обслуживании. Например, сотрудники могут непреднамеренно отключить веб-сервер или шлюзовой корпоративный маршрутизатор, запустив интенсивное вычислительное приложение. Неосведомленность или халатность сотрудников организации или компании может поставить под угрозу конфиденциальность данных и безопасность компонентов сети организации. Открыв фишинговое электронное сообщение или заразив корпоративный компьютер, сервер вредоносным программным обеспечением со своего личного телефона, ноутбука или просто скопировав конфиденциальную информацию на свое устройство, чтобы доделать работу дома. Фишинг одна самых популярных атак, от которой практически невозможно защитить пользователей интернета. Так же никто не может быть уверен, что сотрудник не совершит ошибку и не отправит секретную или конфиденциальную информацию по ошибочному адресу. Описанные ситуации представляют серьезную угрозу безопасности данных. К категории компьютерных преступлений относятся действия сотрудников и бывших сотрудников, которые умышленно уничтожают данные или другие компоненты системы. Умышленные же действия сотрудники преднамеренно совершают для получения доступа к секретной информации или нанесения ущерба компании. Злоумышленники или компании-конкуренты могут за материальное вознаграждение получать от сотрудников компании важную и конфиденциальную информацию. В своем большинстве это опытные сотрудники, которые могут легко уничтожить следы своих преступлений. Выявление таких сотрудников очень непростая задача. Также угрозу безопасности данных компании представляют уволенные сотрудники, которые при увольнении могут забрать всю информацию, к которой имеют доступ. В категории компьютерных преступлений угроза безопасности данных обусловлена действиями физических лиц, террористических организаций, иностранных спецслужб и криминальных формирований, реализующие ситуации в которых создаются условия, представляющие угрозу безопасности персональных данных. Также к категории компьютерных преступлений можно отнести действия злоумышленников, которые взламывают систему, авторов вирусов и червей, которые заражают компьютерные системы, а также аппаратные и программные закладки. Атаки типа "отказ в обслуживании" могут быть осуществлены злоумышленниками. Злоумышленник может перегрузить веб-сервер, например, миллионами поддельных запросов, которые перегрузят сервер так, что он не сможет обслуживать реальные запросы. Природные явления и катастрофы включают пожары, наводнения, ураганы, землетрясения, цунами, лавины и другие природные явления. Проблемы этой категории включают в себя не только первоначальную потерю доступности, но и потери, возникающие в результате действий по устранению первоначальной проблемы. Большинство угроз реализуемых с применением программных средств, осуществляются при несанкционированном или случайном доступе, в процессе которого происходит полное нарушение конфиденциальности, целостности и доступности персональных данных, т. е. копирование, изменение, уничтожение или несанкционированное распространение. Такие угрозы включают в себя: Угрозы внедрения вредоносного программного обеспечения. Угрозы такого типа широко распространены. Реализуются при посещении непроверенных ресурсов без подтвержденного сертификата или при подключении по незащищенному протоколу связи, а также в случае использования неофициального (пиратского) программного обеспечения. Угрозы утечки с серверов оператора ПДн. Такие угрозы обусловлены халатностью и нежеланием операторов персональных данных обеспечить необходимые меры по защите доступа к персональным данным хранящихся на серверах, а также каналов передачи. Невыполнение минимальных рекомендаций для защиты персональных данных приводит к утечкам и несанкционированному распространению информации. Осуществляемые методами социальной инженерии угрозы. Актуальный вид угроз от которого нет надежных способов защиты. Действия злоумышленника направлены на получение от пользователей или сотрудников конфиденциальной информации или доступа к интересующим его информационным системам, хранящих персональные данные. Вероятность реализации угроз данного типа увеличивается при недостаточных мерах защиты персональных данных, а также публикации личной информации в открытых источниках. Угрозы проникновения в операционную среду устройства с использованием прикладных программ или средств операционной системы подразделяются на: Угрозы непосредственного доступа. Доступ к серверу или базе данных, оставленному без присмотра и без соответствующей защиты и содержащей персональные данные, злоумышленник может осуществить непосредственно. Угрозы удаленного доступа. Доступ к серверу или базе данных злоумышленник может получить посредством взлома систем защиты, либо используя по умолчанию установленные данные для авторизации. Угрозы нештатных режимов работы программных средств за счет преднамеренных изменений служебных данных, игнорирования, предусмотренных в штатных условиях ограничений на состав и характеристики обрабатываемой информации, модифицирования самих данных. Использования нелицензионного или скомпрометированного программного обеспечения создает риск реализации угроз данного типа.
img
Данная статья посвящена, наверное, самой сложной части начальной части изучения Linux - правам доступа. В данной статье будет рассказано о правах доступа, владельцах файлов, папок. Цели статьи: Просматривать и изменять владельцев объектов. Устанавливать правила доступа к объектам. Понимать право “Execute” Основные команды для работы с правами доступа: chown – установка владельца chgrp – установка группы владельца chmod – установка прав доступа В Windows у нас есть только один владелец файла или папки. Это можно посмотреть в свойствах объекта на вкладке безопасность, дополнительно и там же мы можем сменить владельца. Владелец в Windows по умолчанию обладает полными правами на объект. В Linux все происходит немного по-другому: Любой объект моет иметь своего владельца и группу владельцев, и кроме этого для объекта существуют все остальные пользователи в системе. Это самое существенное различие, что может быть владелец и группа владельцев. И так у меня есть пользователь petya и пользователь siadmin. Теперь посмотрим информацию по этим двум пользователям. Чтобы посмотреть воспользуемся командой id siadmin и id petya. У моего пользователя есть uid, который говорит, что я siadmin и вхожу в группу siadmin. Когда мы создаем нового пользователя группа по умолчанию совпадает с именем пользователя. Т.е каждый пользователь по умолчанию входит в свою собственную группу. Для пользователя petya я создал группу не по его имени. Я создал группу testusers и включил данного пользователя в данную группу и установил данную группу по умолчанию для данного пользователя. Я нахожусь в домашней папке. Набрав команду ls –l мы можем посмотреть список каталогов и файлов, у каждого из них есть владелец и группа владельцев. Эти данные указаны в колонках. Для файла test1.txt владельцем является root и группа владельцев root. Я создал папку Folder и файл test2.txt и назначил владельца и группу владельцев, согласно картинке. Для изменения данных параметров используется команда chown. Данную команду необходимо применять с повышением в привилегиях, через команду sudo. Например, изменим владельца для файла test1.txt. команда будет выглядеть так sudo chown petya test1.txt. Пароль не запросило, т.к я уже его вводил. Как мы видим все успешно отработало. Если раньше был владелец root, то теперь мы видим petya. Для изменения группы мы так же можем воспользоваться командой sudo chgrp testusers test1.txt. Данная команда chgrp используется редко, т.к вполне достаточно знать команду chown. Данная команда умеет менять в том числе и группу. Простой пример изменим группу используя команду chown :testusers file.txt. Просто перед группой ставим знак : который и говорит, что надо заменить группу на указанную. А можно сделать сразу 2 действия chown petya:testusers file1.txt Немного сумбура вносит, что у пользователя группа по умолчанию совпадает с именем пользователя. Но это стандартное поведение Linux, который так заводит группу. Даже суперпользователь root имеет свою группу root. При создании пользователя petya был принудительно включен в группу testusers и она была выставлена по умолчанию для данного пользователя. Еще есть важный момент, который необходимо упомянуть. Это рекурсивное выставление владельцем или группы владельцев на папки или файлы. Т.е если у нас есть папка родительская и в ней дочерние папки и файлы, а то и несколько вложений, а мы хотим изменить владельца или группу владельцев рекурсивно вниз, то команду chown необходимо использовать с ключем –R. Пример: sudo chown –R siadmin:testusers Folder Права доступа Далее вернемся к самой первой картинке. На картинке добавлены подписи на английском языке. Это сделано, для большей наглядности. Потому, что сейчас будем раздавать права на объекты файловой системы файлы, папки и другие объект. Следовательно, права будут присваиваться владельцам, группе владельцев и все остальные. Права для владельцев – это user - (u), права для группы владельцев group - (g), Права для всех остальных other - (o). Для того, чтобы далее разбираться с темой прав, надо запомнить вот такую табличку. В классическом Linux, есть 3 вида доступа к объекту, это право на чтение, право на запись и право на выполнение и различные комбинации из этих прав. Заглавные буквы на верху таблицы отвечают за какое-либо право. Цифрами обозначены значения данных прав. Если мы даем право на чтение, то оно обозначается r--, если чтение и запись то rw-, если даем все права то rwx. Мы можем объединять данные права, как видите в табличке различные комбинации указаны. Всего 8 комбинаций от "нет прав", до "полных прав". Так же данная комбинация может назначаться в виде цифр. Т.е на какой то файл у такого товарища доступ 5, это значить что данный товарищ имеет право читать файл и запускать на выполнение. Посчитать очень просто чтение это - 4 , а выполнение – это 1, а в сумме будет 5 или по другому r-x. Следовательно мы можем назначать, как в цифровом, так и в символьном варианте права. Еще один не маловажный момент мы назначаем права на файл, сразу для всех видов пользователей. Следовательно, указывая права, мы их сразу задаем для владельца, для группы владельца и всех остальных. Права мы можем назначать. Точно так же как на картинке символами rwx или цифрами, согласно табличке. Для лучшего понимания пример: Chmod 750 script - полные права владельцу, чтение и выполнение группе владельца и ничего всем остальным. Когда мы просматриваем права на объекты мы видим символьные обозначения, а там, где нет символа ставится прочерк, который означает, что данное право отсутствует. Право <<rwx rw- r-->> script - полные права владельцу, чтение и запись группе владельца, чтение остальным. Чтобы легче было определять права на объект надо мысленно разделить на блоки по 3 символа. Первый блок — это Владелец, 2-й Блок — это группа владельца и 3-й блок — это другие пользователи. Сhmod u+w script - дать право записи владельцу. Chmod ugo-x script - отобрать у всех право исполнения файла. Посмотреть, какие объекты находятся в директории и их права можно командой ls –la. Так же мы видим владельца и группу владельца. Теперь мы можем понимать первую строчку. Вывод из всего этого, напрашивается следующий. Владелец у объекта файловой системы может быть только один. В группу testusers или другую мы можем добавить кого угодно и они будут следовательно иметь права, как группа владельцев. И, следовательно, все остальные пользователи, т.е не владелец и не входящие в группу, будут относится к категории всех остальных пользователей. Получается Linux нам дает разбить всех на три группы и в соответствии с этим назначить различные права, а Windows ведет себя по-другому и там можно более гибко задавать права. Мы можем создать 100 пользователей и каждому из них дать какие-то свои уникальные права. В Linux тоже это возможно с помощью разных ACL (Access Control List - лист доступа), но это не входит в базовые понятия, которые мы разбираем в рамках данной статьи. Можно заметить ,что для папки спереди появляется символ d. Это d – directory каталог. Может появляться l – link – ссылка и.т.д. Следовательно, можно убирать права указывая у кого, например, забрать выполнение chmod ugo-x test1.txt или мы можем добавить владельцу chmod u+x test1.txt. И третий вариант изменения прав на файл - это полностью перезаписать права на объект chmod 640 test1.txt. Разберемся с правом на execute – выполнение. Понятно становится это права, когда мы имеет дело с каким-то скриптом или бинарником или программой исполняемой. Так же у нас данное право может назначаться на каталог, а каталог мы исполнить не можем. Но тут есть интересный момент, если у вас будет на папку разрешение только на чтение и запись, прочитать папку, переименовать ее т.е поработать с наименованием папки, но в глубь папки вы не сможете зайти. Чтобы зайти во внутрь папки необходимо право execute – т.е выполнение ее. Маска создания файлов и папок В данной части статьи рассмотрим следующий вопрос: Понимание принципов работы и управления масками создания файлов и папок. Основные понятия: umask – маска создания файлов и папок suid – бит запуска от имени владельца sgid – бит запуска от имени группы владельцев sticky – бит защиты содержимого Первое понятие umask - user creation mask - т.е маска с которой создается новая папка или файл, это то с какими правами по умолчанию будут создаваться папки и файлы для данного пользователя. В том случае если не создано каких-то особенных настроек наследования папки. suid – set user id, который позволяет, если установлен на исполняемый файл, то любой пользователь, который запускает, получает права определенные для владельца данного файла. По-другому, позволяет использовать права владельца данного файла, происходит некая подмена вас на владельца этого файла. sgid – set user id, который позволяет, если установлен на исполняемый файл, то любой пользователь, который запускает, получает права определенные для группы владельца данного файла. По-другому, позволяет использовать права группы владельца данного файла, происходит некая подмена вас на пользователя входящего в группу владельца этого файла. Маска это такая интересная штука, которая указывает права по–умолчанию. Она рассчитывается с помощью вычитания из максимальных прав. Примеры вычисления показаны на картинке. Посмотрим, как выглядит это в консоли. Создадим текстовый файл от имени стандартного пользователя touch test10.txt. Мы видим права, которые были выданы по умолчанию 664, соответственно я являюсь владельцем и моя группа. Создадим папку mkdir TestFolder. Выданы права по умолчанию 775. Теперь посмотрим правило действующее. Почему создаются объекты именно с такими правами. Этот параметр находится в профиле в старых версиях, сейчас он перенесен и за данный параметр отвечает утилита pam_umask. Если мы откроем мануал по данной утилите, то мы увидим, что данный параметр находится в /etc/login.defs Видим, что значение umask = 022. – это значение, которое идет по умолчанию во всех дебиан подобных операционных системах. Введем новое значение umask 075. Создадим новый файл touch test20.txt. Получаем права 602. После перезагрузки маска изменится на маску по умолчанию, чтобы маску нужную зафиксировать, необходимо отредактировать файл /etc/login.defs. Следовательно, для нашего пользователя значить маска изменится с 022 на ту маску, которую там пропишем. Нужно обратить внимание, что при создании папки права на выполнение по умолчанию выдаются, а на файл нет. Это связанно с тем, что без данных прав в данную папку невозможно будет зайти, а с файла убираются в целях защиты. Например, если вдруг окажется, что файл – это вредоносный код. Suid, sgid, sticky Рассмотрим оставшийся вопрос. Зачем нужны suid, sgid и sticky, биты и их установка. Suid – устанавливается для файлов. Sgid – устанавливается для файлов и для папок Sticky – устанавливается для папок. У них у всех есть цифровые значения. Их можно назначать точно так же, как и права, можно назначать через rwx или цифирные сочетания, а также т.к есть цифирные обозначения их можно комбинировать. Если мы установили 6 то мы установили suid и sgid. Этот бит через цифры ставится, точно так же, как и права, только ставим дополнительную цифру перед цифрами, означающими права. Так же эти биты можно ставить, через буквы: Chmod u+s script - установка suid Chmod g+s script - установка sgid Chmod o+t script - установка sticky Как мы видим suid добавляется к правам владельца, sguid прибавляется к правам группы владельца. Sticky добавляется к правам всем остальным. Как мы видим создан файл script.run с правами 755 и папка TestFolder 755. Установим suid бит на файл script.run. В настоящее время данный файл может выполнить любой человек. Изменим права на 770 - sudo chmod 770 script.run. Переключимся под пользователя, который не входит в группу siadmin. Например, пользователь su petya. Можно конечно добавить права пользователю petya, но иногда нужно, чтобы файлик запустился из-под Владельца файла. Даже если будут стоять разрешение на запуск данного файла и будет стоять suid, то файл запуститься из под Владельца. Устанавливаем sudo chmod u+s script.run и видим, во-первых, теперь у нас файлик подкрашен красным, данное выделение делает оболочка. Во-вторых, когда мы смотрим права, то видим x заменился на s. И теперь, кто бы не запускал файл, он всегда будет запускать от имени Владельца. Можно подробнее посмотреть через команду stat script.run, которая показывает полную статистику по файлу. Мы можем увидеть, что права стали теперь 4770. Вот эта самая цифра 4 впереди и говорит, что установлен suid бит. Мы аналогично можем убрать suid бит sudo chmod u-s script.run. Все вернулось на свои места. Для чего это нужно, есть некоторые программы которым необходим доступ к аппаратной части. Например ping, который проверяет связь, ему нужен доступ к сетевой карте. По умолчанию права на ping есть только у root, но если мы хотим чтобы все пользователи могли использовать данную утилиту, то мы должны разрешить ее запуск от имени root. Фактически та же самая функция, как и в операционной системе Windows запустить от пользователя. Аналогичным образом работает и sgid, если нам необходимо запускать от группы владельца, то устанавливаем этот бит и можем пользоваться - sudo chmod g+s script.run. Результат наших действий подсвечен желтым. Можно одновременно оба бита установить, следовательно, при выполнении будет и владелец заменен и группа заменена. Это имеет смысл делать, только для исполняемых файлов. Устанавливать на обычный текстовый файл данные биты, смысла конечно же нет. Очень редко, когда применяю оба бита сразу, такое сочетание необходимо если уж сильно кто-то заморачивается с безопасностью или требуется ювелирная настройка прав доступа и запуска. Теперь посмотрим, что с папкой происходит. На папку можно устанавливать sgid и sticky биты. Если мы устанавливаем групповой бит, то он для папок будет менять владельцев всех вложенных файлов на группу владельцев этой папки, т.е это один из вариантов наследования. Создадим файл от пользователя siadmin. Touch file.txt в текущей папки он создается со стандартными правами. Установим sgid на папку TestFolder - Sudo chmod g+s TestFolder. Создадим в ней такой же файл sudo touch TestFolder/file.txt Как мы видим группа осталась прежней. Если пользователю root сказать создать файл в текущем каталоге, то владелец и группа будут root. Теперь про sticky бит. Если установлен sticky бит на папку, то только Владелец данной папки или суперпользователь может удалить из нее файлы. Создадим папку Folder, поставим на нее максимальные права 777. И внутри создадим файл file.txt. Файлик с правами по умолчанию. Поменяем права на данный фал 666. Права на чтение и запись появились теперь у всех. Переключимся на другого пользователя, например, petya. Перейдем в домашний каталог пользователя siadmin - cd /home/siadmin/Folder. Внутри файл txt, который мы создавали. И удаляем rm file.txt. Файл удалился без проблем. Допустим мы хотим защитить от удаления, следовательно, необходимо установить sticky бит - sudo chmod o+t Folder Как видим появилась буква t на месте прав для всех остальных. Создадим еще раз файл touch file1.txt. Даем на данный файл всем права 666. А далее перелогиниваемся под petya. Заходим в папку /home/siadmin/Folder и командой rm file1.txt пытаемся удалить, на что получаем отказ от системы. Несмотря на права 666, система не дает удалить файл. Следовательно, удалить все вложенные объекты может либо root или Владелец папки.
img
В этой статье мы расскажем как интегрировать Python c Excel и Word, чтобы без проблем создавать автоматические отчеты. Microsoft Excel и Microsoft Word – это, без доли сомнений, две наиболее широко используемые программы как в мире бизнеса, так и в некорпоративной сфере. Они практически являются синонимами слову «работа». Как правило, не проходит и недели, чтобы мы тем или иным способом не воспользовались их преимуществами. И хотя для обычных повседневных задач автоматизация не требуется, бывают случаи, когда она может стать необходимостью. А именно, когда у вас есть множество диаграмм, рисунков, таблиц и отчетов, которые необходимо сделать, это может стать очень утомительным занятием, если все это выполнять вручную. А это не должно быть так. На самом деле существует способ создать конвейер в Python, где можно будет легко интегрировать эти программы для создания электронных таблиц в Excel, а затем передавать результаты в Word для создания отчета практически мгновенно. Openpyxl Познакомьтесь с Openpyxl, возможно, одной из самых универсальных привязок в Python, которая превращает взаимодействие с Excel буквально в прогулку по парку. Используя этот пакет, вы сможете читать и записывать все новые и старые форматы Excel, то есть .xlsx и .xls. Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D- и 3D-диаграммы, маркировать оси и заголовки, а также имеет множество других возможностей, которые могут пригодиться. Однако здесь наиболее важно то, что этот пакет позволяет вам перебирать бесконечное количество строк и столбцов Excel, тем самым избавляя вас от всех этих утомительных вычислений и построения графиков, которые вам приходилось делать ранее самим. Python-docx А затем появляется Python-docx – пакет для Word – то же, что Openpyxl для Excel. Если вы все еще не изучили их документацию, то вам все же стоит на нее взглянуть. Python-docx – без преувеличения один из самых простых и понятных наборов инструментов, с которыми я работал с тех пор, как начал работать с Python. Он позволяет автоматизировать создание документов, автоматически вставляя текст, заполняя таблицы и отображая изображения в отчете без каких-либо усилий. Без лишних церемоний давайте создадим наш собственный автоматизированный конвейер. Запустите IDE по вашему выбору и установите следующие пакеты: pip install openpyxlpip install python-docx Автоматизация Microsoft Excel Для начала загрузим уже созданную книгу Excel (как показано ниже): workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] Затем мы пройдемся по всем строкам в нашей электронной таблице для того, чтобы вычислить и вставить значение мощности, которую мы получим, умножив ток на напряжение: for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power Как только мы сделаем это, то мы сможем использовать рассчитанные значения мощности для построения линейной диаграммы, которая будет вставлена в указанную ячейку, как показано ниже: values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') Извлечение диаграммы Теперь, когда мы построили нашу диаграмму, нам нужно ее извлечь в формате изображения для того, чтобы мы могли использовать ее в нашем отчете Word. Для начала объявим точное местоположения нашего файла Excel, а также место, куда мы хотим сохранить изображение получившейся диаграммы: input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" Затем необходимо получить доступ к таблице, используя следующий метод: operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) И далее вы можете перебрать все диаграммы в таблице (если их больше одной) и сохранить их в указанном месте: for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') passworkbook_2.Close(True) operation.Quit() Автоматизация Microsoft Word Теперь, когда у нас есть изображение диаграммы, мы должны создать шаблон документа, который представляет собой обычный документ Microsoft Word (.docx), сформированный именно так, как нам необходимо, чтобы наш отчет имел определенный тип и размер шрифта, нужное форматирование и структуру страницы. Далее, все, что нам необходимо сделать, это создать заполнители для нашего автоматизированного содержимого, то есть значений таблиц и изображений, и объявить их с переменными, как показано ниже. Внутри двойных фигурных скобок {{variable_name}} может быть объявлен любое автоматизированное содержимое, включая текст и изображения. Для таблиц вам необходимо создать таблицу с шаблонной строкой, в которую включены все столбцы, а затем вам необходимо добавить еще одну строку выше и одну строку ниже со следующими обозначениями: Первая строка: {%tr for item in variable_name %} Последняя строка: {%tr endfor %} На рисунке выше указаны следующие имена переменных: table_contents для словаря Python, в котором будут храниться наши табличные данные. Index для ключей словаря (первый столбец). Power, Current и Voltage для значений словаря (второй, третий и четвертый столбцы). Затем мы импортируем наш документ-шаблон в Python и создаем словарь, в котором будут храниться значения нашей таблицы: template = DocxTemplate('template.docx') table_contents = []for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) Далее мы импортируем изображение диаграммы, которое ранее мы создали в Excel, и создаем еще один словарь для создания экземпляров всех переменных-заполнителей, объявленных в документе-шаблоне: image = InlineImage(template,'chart.png',Cm(10))context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } И, наконец, мы отображаем отчет с нашей таблицей значений и изображением диаграммы: template.render(context) template.save('Automated_report.docx') Заключение И вот, мы получили автоматически созданный отчет Microsoft Word с числами и диаграммами, созданными в Microsoft Excel. При этом у вас есть полностью автоматизированный конвейер, который можно использовать для создания любого количества таблиц, диаграмм и документов. Исходный код программы import openpyxl as xl from openpyxl.chart import LineChart, Reference import win32com.client import PIL from PIL import ImageGrab, Image import os import sys from docx.shared import Cm from docxtpl import DocxTemplate, InlineImage from docx.shared import Cm, Inches, Mm, Emu import random import datetime import matplotlib.pyplot as plt ######## Generate automated excel workbook ######## workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') ######## Extract chart image from Excel workbook ######## input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') pass workbook_2.Close(True) operation.Quit() ######## Generating automated word document ######## template = DocxTemplate('template.docx') #Generate list of random values table_contents = [] for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) #Import saved figure image = InlineImage(template,'chart.png',Cm(10)) #Declare template variables context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } #Render automated report template.render(context) template.save('Automated_report.docx')
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59