---
# System prepended metadata

title: Домашнее задание к занятию «Системное программирование (язык C) - основы языка»
tags: [security, netology]

---

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