NTFS errori e ripari

Ho avuto dei problemini col mio hard disk esterno usb formattato in NTFS per poter passare file da ubuntu a Windows.

Proviamo così:

Installare i tool:

sudo apt-get install ntfs-3g

ed eseguire:

sudo ntfsfix /dev/sdb2

l’output è:

Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb2 was processed successfully.

Ma la mia cartella misteriosa ancora non si può rimuovere…

Proviamo con le opzioni per il fix:

sudo ntfsfix -b -d /dev/sdb2
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
Going to un-mark the bad clusters ($BadClus)... No bad clusters...OK
NTFS partition /dev/sdb2 was processed successfully.

niente… la mia cartella resta in un limbo dove non si può nè usare nè cancellare…

Default server setup

Pacchetti base

sudo apt install net-tools

SSH

sudo apt install openssh-server
sudo systemctl status ssh
sudo ufw allow ssh

Configurazione ip fisso

sudo nano /etc/netplan/00-installer-config.yaml

network:
 ethernets:
  ens33:
   addresses:
   - 192.168.1.195/24
   gateway4: 192.168.1.254
  nameservers:
   addresses: [192.168.1.1, 8.8.8.8, 4.4.4.4]
version: 2

netplan apply

Web server

sudo apt install apache2

sudo apt install libapache2-mod-php8.1

sudo a2enmod php8.1

sul file di apache /etc/apache2/apache2.conf
sezione default security model
su /www mettere allowoverride All
In /etc/apache2/mods-enabled:
sudo ln -s ../mods-available/rewrite.load

sudo service apache2 reload

WebMin

curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sudo sh setup-repos.sh

sudo apt install webmin

webmin sarà disponibile alla porta 10000

MySql

sudo apt install mysql-server

sudo apt install phpmyadmin

sudo mysql -uroot

CREATE SCHEMA schema_name;
CREATE USER 'schema_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schema_name.* TO 'schema_user'@'localhost';

CREATE USER 'manager'@'192.168.1.0/24' IDENTIFIED BY 'manager_pass';
GRANT ALL PRIVILEGES ON *.* TO 'manager'@'192.168.1.0/24';

Impostare la password di root:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Bind address:

in /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address: impostare l’ip adeguato

Other requirements

sudo apt-get install curl php-cli php-mbstring git unzip rar unrar

Mysql backup database

mysql ha un bellissimo tool: mysqldump che serve per fare il backup dell’intero database!

Si usa così:

mysqldump --no-tablespaces database -u utente -ppassword > file_dove_salvare_il_backup.sql

attenzione! la password va “attaccata” alla p, mentre gli altri parametri no!

Potete creare uno scriptino per farlo in automatico, da aggiungere a crontab:

CURRENTDATE=`date +"%Y-%m-%d %H_%M_%S"`
FILE_PATH='/dove/salvare/il/backup'
FULL_FILE_PATH="${FILE_PATH} ${CURRENTDATE}.sql"
echo Backup to:
echo ${FULL_FILE_PATH}
mysqldump --no-tablespaces database -u backup_user -pbackup_password > "${FULL_FILE_PATH}"

L’utente che utilizzate deve avere accesso al database, ma visto che mettiamo utenti e password in chiaro nello script, meglio proteggere i nostri dati, dando accesso in sola lettura al nostro database.

Quindi creiamo un utente ad hock:

CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'backup_password';
GRANT SELECT, LOCK TABLES ON database.* TO 'backup_user'@'localhost'; 

con il tempo i backup diventeranno grandi, possiamo però comprimerli. Utilizzando rar?

!/bin/bash
CURRENTDATE='date +"%Y-%m-%d %H_%M_%S"'
DIR_PATH="/var/www/html/sites/site/backup_db"
cd "${DIR_PATH}"
FILE_PATH="${DIR_PATH}/backup_name"
FULL_FILE_PATH="${FILE_PATH} ${CURRENTDATE}.sql"
RAR_FILE_PATH="backup_name ${CURRENTDATE}.sql.rar"
echo Backup to:
echo ${FULL_FILE_PATH}
mysqldump --no-tablespaces database -u backup_user -pbackup_pass > "${FULL_FILE_PATH}"
mysqldump --no-tablespaces database -u backup_user -pbackup_pass > "${FILE_PATH}.sql"
rar a "${RAR_FILE_PATH}" "backup_name ${CURRENTDATE}.sql"
rm "${FULL_FILE_PATH}"

Impostazioni di rete

Le impostazioni di rete, su un sistema Linux Ubuntu, sono nel file:

/etc/neplan/00-installer-config.yaml

un esempio di ip statico:

network:
  ethernets:
    ens33:
      dhcp4: no
      addresses:
       - 192.168.1.210/24
      gateway4: 192.168.1.254
      nameservers:
       addresses: [192.168.1.1, 8.8.8.8]
  version: 2

una volta modificato, vanno applicate le modifiche con:

sudo netplan apply

per abilitare un utente a modificare l’ip della macchina:

sudo visudo

e aggiungere la riga:

utente ALL=(ALL) NOPASSWD:/usr/sbin/netplan

e cambiare i permessi al file etc/neplan/00-installer-config.yaml

devcon abilitare e disabilitare dispositivi

Con Devcon, che è dentro al kit di sviluppo che puoi installare da qui:

https://docs.microsoft.com/it-it/windows-hardware/drivers/other-wdk-downloads

Puoi abilitare e disabilitare i dispositivi via batch.

Lista dispositivi:

"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" status *

Abilitare: (eseguire da amministratore)

"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" disable @ROOT\PORTS\0001

Disabilitare: (eseguire da amministratore)

"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" enable @ROOT\PORTS\0001

Oppure puoi usare i wildchar:

"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" disable *DVD-ROM*

Installazione driver nvidia

Verificare i dispositivi rilevati:

sudo lshw -C display
hwinfo --gfxcard --short

Installare i driver:

sudo apt install nvidia-driver-510 nvidia-dkms-510

Attenzione: adopo averli installati mi si pianta lubuntu allo splashscreen di avvio, da risolvere…

Apache e https

proviamo a seguire questo tutorial: https://techexpert.tips/it/apache-it/abilitare-https-su-apache/

sudo -s

apt-get install apache2 openssl

a2enmod ssl
a2enmod rewrite

Creare il certificato

mkdir /etc/apache2/certificate/{{site_name}}
cd /etc/apache2/certificate/{{site_name}}
openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out apache-certificate.crt -keyout apache.key

Durante la creazione del certificato specificare lo stesso site_name

Modificare la configurazione di apache per il sito

nano /etc/apache2/sites-enabled//{{site_name}}.conf
Aggiungendo alla configurazione un virtualhost che risposnda alla porta 443, a cui aggiungere:
SSLEngine on
SSLCertificateFile /etc/apache2/certificate/{{site_name}}
/apache-certificate.crt
SSLCertificateKeyFile /etc/apache2/certificate//{{site_name}}
/apache.key

Riavviare apache:

service apache2 restart

Testare il funzionamento provando la pagina web:

https://{{site_name}}

Il nome del certificato può non avere {{site_name}}, basta che poi la configurazione del virtuahost vada a recuperare il certificato corretto.
Al momento della creazione del certificato va indicato l’IP o il nome del sito corretto.

Usare crontab per aprire pagine web

Hai una pagina web che esegue delle operazioni, e vorresti che venisse aperta periodicamente?

Io ho risolto con crontab e wget, ecco come:

_ Apri crontab con
crontab -e

_ aggiungi il comando
*/15 * * * * wget -q -b {{indirizzo pagina web}}

salva

In questo caso:
Crontab eseguirà il comando ogni 15 minuti

wget scaricherà la pagina web indicata nell’indirizzo

Aggiungere l’opzione -o /dev/null per evitare che si salvi l’output della pagina ad ogni download

Ssh con key anzichè password

come da guida: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server

creare una chiave che identifichi il pc locale:

ssh-keygen

viene chiesto dove salvare il file chiave

inviare la chiave al server:

ssh-copy-id username@remote_host

tutte le tue chiavi saranno copiate in /home/user/.ssh/authorized_keys sul server, eventualmente elimina quelle non necessarie

aggiungere la chiave al tuo portachiavi:

ssh-add /home/ivanzb/.ssh/id_raspo

fare il login

ssh raspo

Cercare file

Cercare file che contengono un testo:

find . -type f -print0 | xargs -0 grep "211"