Suid
Содержание:
Некоторые примеры и тенденции
Построение СУИД, управляющей неструктурированными данными
На наш взгляд, такой путь наиболее приемлем в крупных проектных организациях, которые характеризуются следующими признаками:
- крупные объекты проектирования,
- большое количество проектных дисциплин;
- отсутствие интегрированных (способных обмениваться инженерными данными) средств разработки (прежде всего САПР) и/или технологий проектирования, позволяющих максимально автоматизировать процессы обмена структурированными данными между проектными дисциплинами;
- большое количество субподрядчиков;
- отсутствие требований со стороны генподрядчика к субподрядчикам и со стороны заказчика проектных работ по предоставлению электронных моделей (структурированные данные которых могут интегрироваться в единую среду);
- большое количество используемых типизированных решений, данные о которых хранятся в бумажном или электронном виде и не структурированы.
Наиболее ярким примером является полномасштабное внедрение подобной системы в ОАО «Гипроспецгаз» — крупнейшем проектном институте газовой отрасли России.
На первом этапе с участием Бюро ESG была разработана и внедрена система электронного архива ПСД, обладающая перечисленным выше функционалом. На последующих этапах были реализованы подсистемы управления технической документацией и управления проектными заданиями (обмена заданиями) между специальностями (отделами) системы технического документооборота. Кроме управления «техническими» документами, в единой среде автоматизировано управление потоками организационнораспорядительной, «административной» документации (ОРД). При этом существует связь между различными потоками, позволяющими, например, осуществлять переход по связям от входящего письма субподрядчика (обрабатывается в потоке ОРД) к комплекту субподрядной документации — приложению к письму (обрабатывается в «техническом» потоке).
Всего в системе работает примерно 700 пользователей. Весь функционал реализован с участием Бюро ESG в среде программного комплекса TDMS.
Построение СУИД, управляющей структурированными данными
На наш взгляд, подобный подход к построению СУИД может быть реализован лишь в условиях, когда инженерные данные поступают в структурированном виде от всех участников жизненного цикла объекта, причем структура данных заранее регламентирована.
Приведем пример, а скорее — опишем некую концепцию, вектор развития
Обратим внимание на то, что речь пойдет не об уже реализованной СУИД, которая, управляя лишь структурированными данными, является полноценной, а о предпосылках и наших прогнозах на ее создание
Примеров использования передовых технологий при проектировании, строительстве, эксплуатации и утилизации объектов атомной энергетики описано немало. Как правило, ГК «Росатом» и является заказчиком проектирования и строительства, и отвечает за эксплуатацию объектов атомной энергетики. Этим объясняется то, что, несмотря на техническую сложность атомной станции, урегулировать вопросы об используемых технологиях и средствах разработки, формате передаваемых инженерных данных между различными участниками процессов на различных стадиях ЖЦ в рамках «одного ведомства» оказывается проще. По нашим оценкам, отрасль лидирует в области автоматизации процессов информационного обеспечения ЖЦ. При существующей динамике развития четко прослеживается перспектива создания СУИД «от структурированных данных».
Построение СУИД «от реалий»
Остановимся на примерах построения СУИД с учетом существующих реалий и вновь акцентируем внимание на наиболее «проблемной», на наш взгляд, нише. Прежде всего, речь пойдет о существующих промышленных предприятиях
Итак, СУИД должна, с одной стороны, управлять оптимально систематизированными неструктурированными данными, а с другой — управлять структурированными данными, получаемыми от средств разработки и прочих источников.
Результаты
- Сокращение сроков строительства в два раза;
- минимизация строительных коллизий;
- визуализация объекта целиком и совершение с ним любых операций в считаные секунды;
- обеспечение принципиально нового качества строительства и эксплуатации;
- эффективное управление инженерными данными в процессе владения объектом;
- повышение безопасности функционирования запущенного в эксплуатацию комплекса — сложного технологического объекта.
«Наш проект можно смело назвать инженерным чудом. Каждый этап строительства мы проводили под строгим контролем на основе BIMмодели.

Комплексная BIM, собранная в InterBridge и «погруженная» в среду НЕОСИНТЕЗ

Визуализация элементов оборудования на BIM с доступом через СУИД НЕОСИНТЕЗ

Визуализация внутренней водопроводной инфраструктуры и канализации

Доступ к характеристикам оборудования
в СУИД НЕОСИНТЕЗ

Построение сечения 5-го этажа
в СУИД НЕОСИНТЕЗ

Визуализация результатов поисковых запросов
в СУИД НЕОСИНТЕЗ
И даже после запуска объекта в эксплуатацию информационная модель продолжает жить. Webпортал НЕОСИНТЕЗ позволяет нам видеть цифровую копию объекта целиком с привязанной к каждому его элементу инженерной документацией. В этом и состоит феномен относительно традиционного пока еще для России бумажного управления», — прокомментировал результат реализации проекта Андрей Геннадьевич Сергеев, главный инженер клиники Grand Medica.
setuid и setgid на файлах
Когда атрибут setuid установлен файлу, обычный пользователь, запускающий этот файл на исполнение, получает повышение прав до пользователя-владельца файла (обычно root) в рамках запущенного процесса. После получения повышенных прав приложение может выполнять задачи, выполнение которых обычному пользователю недоступно. Пользователю будет запрещено системой изменение нового процесса. Из-за возможности состояния гонки многие операционные системы игнорируют установленный атрибут к shell-скриптам[источник не указан 1925 дней].
Хотя атрибут setuid очень удобен во многих случаях, его неправильное использование может представлять угрозу безопасности, когда атрибут присваивается исполняемому файлу, который не тщательно спроектирован. Пользователи могут использовать уязвимости в недоработанных программах, чтобы получить повышенные привилегии или непреднамеренно запустить программу троянского коня.
Установленный setgid атрибут даёт повышение прав группы.
Атрибуты setuid и setgid обычно устанавливаются командой chmod установкой первой пары битов в 4 (setuid) или 2 (setgid). Команда соответственно установит обе пары битов сразу (4+2=6).
Также можно использовать символьные аргументы для установки этих битов командой .
Пример
bob@foo$ cat /etc/passwd
alice:x:1007:1007::/home/alice:/bin/bash
bob:x:1008:1008::/home/bob:/bin/bash
bob@foo$ cat printid.c
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
printf("Real UID\t= %d\n", getuid());
printf("Effective UID\t= %d\n", geteuid());
printf("Real GID\t= %d\n", getgid());
printf("Effective GID\t= %d\n", getegid());
return EXIT_SUCCESS;
}
bob@foo$ gcc -Wall printid.c -o printid
bob@foo$ chmod ug+s printid
bob@foo$ su alice
Password:
alice@foo$ ls -l
-rwsr-sr-x 1 bob bob 6944 2007-11-06 10:22 printid
alice@foo$ ./printid
Real UID = 1007
Effective UID = 1008
Real GID = 1007
Effective GID = 1008
alice@foo$
Ejemplos
Añade permisos SUID a un binario de ejemplo (usuario)
# chmod u+s /home/user/ejecutable
Elimina permisos SUID a un binario (usuario)
# chmod u-s /bin/ping
Añade permisos GUID a un binario de ejemplo (grupo)
# chmod g+s /home/user/ejecutable
Elimina permisos GUID a un binario de ejemplo (grupo)
# chmod g-s /home/user/ejecutable
Visualización de los permisos de un binario con atributos SUID
# ls -al /bin/ping -rwsr-xr-x 1 root root 35712 2011-05-03 12:43 /bin/ping
Buscar todos los ficheros con permisos SUID o SGID
# find / -path /proc -prune -o -type f -perm +6000 -ls
Buscar todos los ficheros con permisos solo SUID
# find / -path /proc -prune -o -type f -perm +4000 -ls
Buscar todos los ficheros con permisos solo SGID
# find / -path /proc -prune -o -type f -perm +2000 -ls
О создании систем управления инженерными данными
Мы уже неоднократно писали о создании систем управления инженерными данными. Нынешняя статья продолжает эту тему и описывает различные подходы в зависимости от конкретных условий и поставленных задач.
По сложившейся традиции в начале изложения остановимся на вопросах терминологии. Что подразумевается под термином «инженерные данные»? Несомненно, речь идет о различных атрибутах, технических, физических параметрах, технических и технологических характеристиках, показателях, которые относятся как к объектам, так и оборудованию, изделиям, материалам, КИПиА — то есть ко всем сущностям, составляющим объект или используемым на всех стадиях его жизненного цикла. Постараемся перечислить «источники», содержащие инженерные данные:
- проектносметная документация;
- технологические принципиальные схемы (PFD) и монтажные схемы с приборами КИПиА (P&ID);
- электрические и электротехнические схемы (E&I);
- 3Dмодели промышленных объектов, состоящие из интеллектуальных 3Dмоделей компонентов с атрибутивной информацией и логическими связями;
- базы данных и документация по оборудованию, приборам и материалам;
- чертежи и спецификации на различных стадиях готовности («как спроектировано» — «как построено»);
- паспорта, сертификаты оборудования;
- генеральные планы;
- исполнительная документация;
- прочие источники, необходимые для проектирования и модернизации, монтажа и строительства, эксплуатации и утилизации объекта.
Достаточно часто термин «инженерные данные» ассоциируют с понятием «документов». Это далеко не всегда корректно. Дело в том, что инженерные данные могут содержаться в контенте документов, но помимо данных контент содержит прочие элементы — графику, описания и т.д. Поэтому, с одной стороны, стоит, скорее, говорить о «системе управления инженерной (технической) информацией и документами». С другой стороны, термин «система управления инженерными данными» достаточно плотно вошел в употребление, поэтому, дабы не противоречить сложившимся традициям и тенденциям, мы будем говорить о системе управления инженерными данными (далее СУИД), но с учетом приведенных нами пояснений.
Напомню основные реалии, перечисленные в предыдущих наших публикациях, которые характеризуют современное положение дел:
1. Наличие двух больших групп данных:
структурированные инженерные данные:
— данные, получаемые из САПР (если они структурированы),
— данные, получаемые из БД, индексированные данные (например, параметры оборудования и т.д.);
неструктурированные инженерные данные:
— содержащиеся в контенте бумажных документов,
— содержащиеся в контенте сканированных документов,
— содержащиеся в контенте документов, получаемых с использованием САПР, текстовых редакторов и прочего ПО без использования правил структурирования и соответствующих функций ПО.
2. «Островки информации» — ситуация, особенно характерная для действующих предприятий с непрерывным производственным циклом. Суть ее заключается в следующем: инженерные данные (как структурированные, так и нет) находятся в не связанных единой средой подразделениях. Часть информации, например, может находиться в проектноконструкторском бюро завода, часть — в разрозненных архивах предприятия (служб главного технолога, главного механика, главного энергетика, отдела капитального строительства, проектных офисах и т.д.). Какаято часть инженерных данных вообще может находиться вне предприятия — у сторонних проектантов и обслуживающих организаций. При этом «основное зло» — отнюдь не дублирование информации (которое просто неизбежно при описанном подходе), а отсутствие актуальной информации о предприятии и, порой, невозможность ее актуализации.
3. Отсутствие необходимых регламентов по управлению данными.
Современное положение дел нагядно иллюстрирует рис. 1.

Рис. 1. Различные типы и источники инженерных данных
на современном предприятии
Подчеркнем, что на рисунке приведена ситуация, наиболее характерная для действующего предприятия.
На практике сложилось так, что чаще всего вопросы автоматизации управления инженерными данными решались на стадии проектирования. Это обусловлено тем, что при современном развитии САПР подавляющее большинство инженерных данных порождается при проведении проектных работ в электронном виде, что позволяет эффективно строить СУИД. Совсем иначе обстоят дела с источниками данных и, как следствие, — с подходами к построению СУИД на существующих предприятиях.
SUID (Set User ID)
Атрибут исполняемого файла, позволяющий запустить его с правами владельца. В Linux приложение запускается с правами пользователя, запустившего указанное приложение. Это обеспечивает дополнительную безопасность т.к. процесс с правами пользователя не сможет получить доступ к важным системным файлам, которые принадлежат пользователю .
Если на исполняемый файл установлен бит , то при выполнении его «эффективный userID» автоматически меняется на идентификатор того пользователя, который является владельцем этого файла. То есть, независимо от того, кто запускает эту программу, она при выполнении имеет права владельца этого файла.
Исполняемый файл с установленным атрибутом является «потенциально опасным». Без установленного атрибута, файл не позволит обычному пользователю сделать то, что выходит за пределы прав пользователя (пример, программа позволяет пользователю изменить только собственный пароль). Но, даже незначительная ошибка в такой программе может привести к тому, что злоумышленник сможет заставить её выполнить ещё какие-нибудь действия, не предусмотренные автором программы.
Построение СУИД «от неструктурированных данных»
Ранее, рассматривая эволюцию создания СУИД, мы обосновали вывод о том, что в подавляющем большинстве случаев создание СУИД на первом этапе сводится к реализации системы электронного архива инженерной (проектносметной) документации. Аргументировалось это тем, что по ряду объективных причин, несмотря на развитие САПР, подавляющий объем инженерных данных существует в неструктурированном виде (в электронных документах и документах на бумажных носителях).
При этом такой электронный архив должен не только автоматизировать централизованное хранение, но и содержать некий минимальный набор функционала:
подсистему структурирования и кодификации ПСД в соответствии с требованиями, определяемыми действующими нормативами (например, структуру разделов в соответствии с Постановлением 87, «заполненную» томами и комплектами документации);
- подсистему пополнения (минимально возможная автоматизация процесса размещения комплектов/томов документов в соответствующих разделах с возможностью контроля и исключения ошибок);
- подсистему проведения отгрузок документов заказчику проектных работ (выгрузка документов, формирование накладных на отгрузку, регистрация факта отгрузки и получения документов заказчиком);
- подсистему проведения изменений (с формированием разрешений);
- сервисные подсистемы (поиск, разграничение прав доступа, автоматизированное формирование некоторых документов, например перечня основных комплектов, состава документов комплекта, бланков накладных на отгрузку, этикеток CD, отгружаемых заказчику, аналитических отчетов по состоянию работ, отгрузок и т.д.).
- Отметим следующее:
- без перечисленного функционала электронный архив ПСД, на наш взгляд, не является полноценным;
- возможны дальнейшие «надстройки» над перечисленным базовым функционалом, при этом доработки производятся в двух направлениях:
- автоматизация потоков документов и работ, в основном не предусматривающая «извлечения» данных из документов для последующей серьезной обработки. Такой подход чаще рассматривает документ с содержащимися в нем инженерными данными как «конечный и неделимый контейнер». Подобные надстройки наиболее характерны для систем электронного архива и ведут к созданию систем технического документооборота (TDM) и систем автоматизации обмена проектными заданиями между специальностями (в проектных организациях области ПГС). Отметим, что описываемый путь не исключает наличия программных интерфейсов со средствами разработки. Следует помнить, что такие интерфейсы не предназначены для «полного извлечения инженерных данных из контейнера». В основном «извлекается» сравнительно небольшая часть параметров, атрибутов, которой чаще всего достаточно лишь для решения «сервисных» задач. Примером подобного интерфейса является достаточно распространенный функционал синхронизации полей углового штампа чертежа с соответствующими полями электронной карточки документа в системе электронного архива (при изменении информации в угловом штампе автоматически меняется информация в соответствующем поле карточки),
- автоматизация потоков документов и работ, предусматривающая «извлечение» данных из документов для последующей обработки (выходящей за пределы «сервисных» функций). Наш опыт говорит, что успешные полномасштабные реализации подобного функционала, «надстраиваемого над электронным архивом», практически не встречаются. Такой путь дальнейшего развития электронного архива крайне трудоемок в подавляющем большинстве случаев. Это обусловлено тем, что, если изначально документ рассматривался как «неделимый контейнер» и отсутствовали жесткие правила внесения инженерных данных в контент, «извлечь» данные для обработки с приемлемой степенью автоматизации практически невозможно;
такой электронный архив мы рассматривали как ступень к созданию СУИД.
E) What is SUID numerical value?
It has the value 4.
Please comment your thoughts about SUID usage in your company.
Post Views:
138,297
The following two tabs change content below.
Mr Surendra Anne is from Vijayawada, Andhra Pradesh, India. He is a Linux/Open source supporter who believes in Hard work, A down to earth person, Likes to share knowledge with others, Loves dogs, Likes photography. He works as Devops Engineer with Taggle systems, an IOT automatic water metering company, Sydney . You can contact him at surendra (@) linuxnix dot com.
Latest posts by Surendra Anne
- Docker: How to copy files to/from docker container — June 30, 2020
- Anisble: ERROR! unexpected parameter type in action: Fix — June 29, 2020
- FREE: JOIN OUR DEVOPS TELEGRAM GROUPS — August 2, 2019
- Review: Whizlabs Practice Tests for AWS Certified Solutions Architect Professional (CSAP) — August 27, 2018
- How to use ohai/chef-shell to get node attributes — July 19, 2018
Security
Developers should design and implement programs that use this bit on executables carefully in order to avoid security vulnerabilities including buffer overruns and path injection. Successful buffer-overrun attacks on vulnerable applications allow the attacker to execute arbitrary code under the rights of the process exploited. In the event that a vulnerable process uses the bit to run as , the code will execute with root privileges, in effect giving the attacker root access to the system on which the vulnerable process is running.
Of particular importance in the case of a process is the environment of the process. If the environment is not properly sanitized by a privileged process, its behavior can be changed by the unprivileged process that started it. For example, GNU libc was at one point vulnerable to an exploit using and an environment variable that allowed executing code from untrusted shared libraries.
Пишем SUIDник
От слов к делу, – я сразу приведу листинг кода, а уж после будем с тобой его
разбирать.
Думаю, глядя на комментарии, уже становится ясен смысл нашей программы.
Сначала мы проверяем количество аргументов – их должно быть три: argv –
имя самого скомпилированного SUIDника, argv – наш пароль и argv-
непосредственно сама команда.
Разберемся с некоторыми моментами работы с бинарными файлами при
установленном SUID-бите, дабы не возвращаться к этому позднее.
-
Файл suid с правами доступа -rwxr-x—x, то есть хозяин файла (www) может
читать, изменять и запускать на исполнение; члены группы (apache) могут
читать и запускать файл на исполнение, а все остальные пользователи могут
лишь запускать на исполнение.
К примеру, результат команды id через наш файл для членов группы site будет
подобным uid=80(site), gid=80(site), groups=80(apache) - Устанавливаем бит SUID на файл командой chmod 4751 suid
Наверняка, ты заметил, что символ x (запуск на исполнение) сменился на s (SUID
бит). Как мы уже знаем, бинарник с суид битом будет выполняться не от имени
вызывающего, а от имени хозяина (owner’a). Опять же, результат команды id
через наш файл для членов группы site будет подобным uid=80(www), gid=80(www),
groups=80(apache). - Забегая вперед, обозначим, что нам придется сменить владельца файла. Мы
это сделаем под рутом командой chown root suid.
И снова результат команды id через наш файл будет подобным uid=0(root), gid=0(root),
groups=80(apache). Исходя из этого, уже видно, что любой пользователь
системы, даже не входя в состав группы хозяина, имеет право на запуск
бинарника, да мало того, еще и с правами хозяина, то бишь рута, так как
установлен SUID-бит.
Так-с, с этим разобрались. Осталась самая малость, – скомпилировать файл.
Делаем это командой gcc suid.c -o suid. В итоге получаем бинарный файл suid.
Пример использования будет таков – «./suid cool_hack id» (имя файла, пароль,
команда)
Set-group identification (SGID)
SGID permission on executable file
– SGID permission is similar to the SUID permission, only difference is – when the script or command with SGID on is run, it runs as if it were a member of the same group in which the file is a member.
# ls -l /usr/bin/write -r-xr-sr-x 1 root tty 11484 Jan 15 17:55 /usr/bin/write
– The setgid permission displays as an “s” in the group’s execute field.
Note :
– If a lowercase letter “l” appears in the group’s execute field, it indicates that the setgid bit is on, and the execute bit for the group is off or denied.
SGID on a directory
– When SGID permission is set on a directory, files created in the directory belong to the group of which the directory is a member.
– For example if a user having write permission in the directory creates a file there, that file is a member of the same group as the directory and not the user’s group.
– This is very useful in creating shared directories.
Пример
bob@foo$ cat /etc/passwd
alice:x:1007:1007::/home/alice:/bin/bash
bob:x:1008:1008::/home/bob:/bin/bash
bob@foo$ cat printid.c
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
printf("Real UID\t= %d\n", getuid());
printf("Effective UID\t= %d\n", geteuid());
printf("Real GID\t= %d\n", getgid());
printf("Effective GID\t= %d\n", getegid());
return EXIT_SUCCESS;
}
bob@foo$ gcc -Wall printid.c -o printid
bob@foo$ chmod ug+s printid
bob@foo$ su alice
Password:
alice@foo$ ls -l
-rwsr-sr-x 1 bob bob 6944 2007-11-06 10:22 printid
alice@foo$ ./printid
Real UID = 1007
Effective UID = 1008
Real GID = 1007
Effective GID = 1008
alice@foo$
Пример
bob@foo$ cat /etc/passwd
alice:x:1007:1007::/home/alice:/bin/bash
bob:x:1008:1008::/home/bob:/bin/bash
bob@foo$ cat printid.c
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
printf("Real UID\t= %d\n", getuid());
printf("Effective UID\t= %d\n", geteuid());
printf("Real GID\t= %d\n", getgid());
printf("Effective GID\t= %d\n", getegid());
return EXIT_SUCCESS;
}
bob@foo$ gcc -Wall printid.c -o printid
bob@foo$ chmod ug+s printid
bob@foo$ su alice
Password:
alice@foo$ ls -l
-rwsr-sr-x 1 bob bob 6944 2007-11-06 10:22 printid
alice@foo$ ./printid
Real UID = 1007
Effective UID = 1008
Real GID = 1007
Effective GID = 1008
alice@foo$



