AMSA

Authors

Ferran Aran Domingo

Oriol Agost Batalla

Pablo Fraile Alonso

Validació de la pràctica 2 (0.7 p.)

Donat el següent codi de la pràctica, on get_processes i get_priorities ja està implementat i passa tots els tests, implementa la funció: get_ignored_sigquit, que a partir dels processos del /proc, retorni únicament una List de Process que ignorin la senyal SIGQUIT.

from typing import List

from amsatop import Htop, Process, TaskType
from amsatop.utils import (
    StatFile,
    StatusFile,
    get_stat_file_from_path,
    get_status_file_from_path,
)

class Amsatop(Htop):
    def __init__(self):
        super().__init__()

    def get_processes(self) -> List[Process]:
      # Already implemented
      ...

    def get_priorities(self) -> List[Process]:
      # Already implemented
      ...

    def get_ignored_sigquit(self) -> List[Process]:
      # TODO: implement it!
      ...

Recordeu que, al paquet amsatop.utils teniu:

@dataclass(frozen=True)
class StatFile:
    pid: int
    command: str
    state: str 
    ppid: int 
    pgrp: int
    session: int
@dataclass(frozen=True)
class StatusFile:
    Name: str
    State: str
    Pid: int
    Uid: List[int]
    Gid: List[int]
    SigPnd: str = ''
    ShdPnd: str = ''
    SigBlk: str = ''
    SigIgn: str = ''
    SigCgt: str = ''

def get_stat_file_from_path(path: str) -> StatFile | None:
    ...

def get_status_file_from_path(path: str) -> StatusFile | None:
    ...

I al paquet amsatop:

class TaskType(Enum):
    PROCESS = "process"
    THREAD = "thread"
    KTHREAD = "kthread"

@dataclass(frozen=True)
class Process:
    pid: int
    command: str
    type: TaskType
    priority: int | None

La taula de senyals és la següent:

# Signal Default Action Comment POSIX
1 SIGHUP Terminate Hang up controlling terminal or process Yes
2 SIGINT Terminate Interrupt from keyboard, Control-C Yes
3 SIGQUIT Dump Quit from keyboard, Control-\ Yes
4 SIGILL Dump Illegal instruction Yes

Validació pràctica 1 (0.2 punts.):

Donada la següent unit de systemd, que es troba a /etc/systemd/system/my_custom.service:

[Unit]
Description=My Custom Script Service

[Service]
ExecStart=/usr/local/bin/myscript.sh

[Install]
WantedBy=multi-user.target

I on el script /usr/local/bin/myscript.sh:

$ cat /usr/local/bin/myscript.sh
figlet "Hello World!"

1) Digues quines comandes executaries per veure el output de la comanda i/o l’estat del servei (pot ser una única comanda o dues, es indiferent) (0.05 p.)

2) L’estat del servei mostra el següent. Què faries per a arreglar-ho? Quins fitxers modificaries? Qué comprovaries? Justifica la teva resposta breument: (0.15 p.):

myscript.service - My Custom Script Service
     Loaded: loaded (/etc/systemd/system/my_custom.service; disabled; preset: enabled)
     Active: failed (Result: exit-code) since Fri 2025-10-31 10:17:19 CET; 2s ago
   Duration: 1ms
    Process: 7014 ExecStart=/usr/local/bin/myscript.sh (code=exited, status=203/EXEC)
   Main PID: 7014 (code=exited, status=203/EXEC)
        CPU: 799us

Oct 31 10:17:19 amsa systemd[1]: Started my_custom.service - My Custom Script Service.
Oct 31 10:17:19 amsa (cript.sh)[7014]: my_custom.service: Failed to execute 
                                      /usr/local/bin/myscript.sh: Exec format error
Oct 31 10:17:19 amsa systemd[1]: my_custom.service: Main process exited,
                                      code=exited, status=203/EXEC
Oct 31 10:17:19 amsa systemd[1]: my_custom.service: Failed with result 'exit-code'.

Permissos (0.6 punts)

Tinc un sistema on els fitxers /etc/group i /etc/passwd són:

/etc/group                      | /etc/passwd
------------------------------- |-------------------------------
root:x:0:                       | root:x:0:0:root:/root:/bin/bash
mail:x:8:                       | www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
wheel:x:10:ferran,pablo         | ferran:x:1001:100:User Ferran:/home/ferran:/bin/bash
users:x:100:oriol,ferran,pablo  | pablo:x:1002:100:User Pablo:/home/pablo:/bin/nu
audio:x:101:ferran,oriol        | oriol:x:1003:100:User Oriol:/home/oriol:/bin/zsh
video:x:102:ferran,pablo        |
babui:x:200:ferran              |
nogroup:x:65534:                |

El fitxer /etc/sudoers i l’arxiu /etc/hosts són:

/etc/sudoers                   | /etc/hosts
-------------------------------|-------------------------------
root    ALL=(ALL:ALL) ALL      | 127.0.0.1       localhost
%wheel  ALL=(ALL:ALL) ALL      | 127.0.0.2       eldespatx

I el fitxer fstab és:

/dev/root_vg/root / btrfs x-initrd.mount,defaults,subvol=/root 0 0
/dev/disk/by-partlabel/EFI /boot vfat defaults,umask=0077 0 2
/dev/disk/by-partlabel/disk-nvme-swap none swap defaults

I, si faig ls -la al directori /media, l’output és el següent:

drwxr-xr-x   3 root   root      4096 oct 27 10:00 .
drwxr-xr-x  18 root   root      4096 oct 27 09:00 ..
drwxrwx---   2 root   babui     4096 oct 27 09:30 babui
drwxrwx---   2 root   babui     4096 oct 27 09:35 my_photos
  1. Pot entrar el Pablo a la carpeta “babui”? i el Ferran? i l’Oriol? (0.1p)

  2. En cas que un o més usuaris no puguin accedir, indica quines comandes executarien des del seu usuari per poder entrar a la carpeta sense privilegis d’administrador. És a dir, l’usuari hauria de poder fer: cd /media/babui i accedir-hi. Si l’usuari no pogués accedir de cap manera, justifica el motiu. (0.3p).

  3. Quan vau crear un arxiu de swapfile a la màquina virtual desde l’usuari “root”, vau executar:

# chmod 600 <swapfile> --> la comanda: 'chmod u=rw,go= <swapfile>' és equivalent.

Per què la comanda swapon es queixa si no hem executat abans la comanda anterior? Tot i que la comanda swapon es queixi, el swapfile és crea i s’activa igualment, a quin risc exposem el sistema? (0,2 punts)

Sistema de Fitxers

He afegit un disc dur nou al meu ordinador. La comanda lsblk mostra el següent:

NAME         MAJ:MIN  RM  SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0  477G  0 disk
|-- nvme0n1p1 259:1    0  512M  0 part /boot
|-- nvme0n1p2 259:2    0  476G  0 part /
|-- nvme0n1p3 259:3    0    8G  0 part [SWAP]
sda             8:0    0  500G  0 disk 

4.1) Al nou disc li vull ficar un sistema de fitxers ext4, i montar-lo al directori /mnt/amsa. Com ho puc fer? Quines comandes he d’emprar? (0.5)

4.2) Que he de fer per aconseguir que aquests canvis siguin permanents (explica les comandes i/o fitxers editats amb els continguts), la solució no pot ser un servei de sistema. (0.5)