###### 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
```