###### tags: `netology` `security` # Домашнее задание к занятию «Системное программирование (язык C) - основы языка» ## Запустите программу от обычного пользователя (./main) ```bash= $ ./main > kali #current user ``` ## Запустите программу от root'а (sudo ./main) ```bash= $ sudo ./main > root ``` ## Установите программу в качестве systemd-сервиса ```bash= # main.service [Unit] Description=main.service After=auditd.service [Service] ExecStart=/opt/app/main [Install] WantedBy=multi-user.target ``` ```bash= $ systemctl start main.service $ sudo journalctl -u main.service -- Logs begin at Tue 2020-11-17 09:12:43 EST, end at Mon 2021-02-15 11:15:22 EST. -- Feb 15 11:14:46 kali systemd[1]: Started main.service. Feb 15 11:14:46 kali main[2201]: root Feb 15 11:14:46 kali systemd[1]: main.service: Succeeded. ``` Т.к. я не использовал директиву `User=` в `.service` файле, то сервис запускается от `root` ```bash= [Unit] Description=main.service After=auditd.service [Service] ExecStart=/opt/app/main User=kali [Install] WantedBy=multi-user.target ``` ```bash= $ sudo journalctl -u main.service -- Logs begin at Tue 2020-11-17 09:12:43 EST, end at Mon 2021-02-15 11:22:51 EST. -- ... Feb 15 11:20:53 kali systemd[1]: Started main.service. Feb 15 11:20:53 kali main[2251]: kali Feb 15 11:20:53 kali systemd[1]: main.service: Succeeded. ``` ## За что отвечает команда whoami Выводит "текущего" пользователя ## Какую роль выполняет функция system За вызов системных функций (функций ОС) ```c= #include <stdlib.h> int main() { system("pwd"); return 0; } ``` ```bash= $ cc main.c -o main $ ./main > /home/kali ```