Προσωπικές σημειώσεις

Ξεκίνησε από alkisg, 07 Οκτ 2019, 10:02:50 ΜΜ

« προηγούμενο - επόμενο »

alkisg

Σε αυτό το θέμα θα κρατάω διάφορες σημειώσεις για εντολές που μου φάνηκαν χρήσιμες. Με βολεύει για να τις βρίσκω γρήγορα μέσω google "keywords site:alkisg.mysch.gr", αλλά μπορεί να τις βρει ενδιαφέρουσες και κάποιος άλλος.

alkisg

Μερικά προγράμματα, π.χ. vnc, xrdp, "ακούν" σε πόρτες > 1024. Σε μερικές περιπτώσεις τις χρειαζόμαστε σε < 1024, που εκεί όμως μπορεί να τρέξει προγράμματα μόνο ο root.

Παράδειγμα, έστω ότι θέλουμε να υποστηρίξουμε κάποιον που έχει εταιρικό firewall που επιτρέπει εξερχόμενες συνδέσεις μόνο σε web (θύρα 80). Τρέχουμε:

Κώδικας: Bash
xvnc4viewer -listen &
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 5500


Οπότε έτσι αυτός μπορεί να συνδεθεί στο VNC μας που ακούει πλέον και τη θύρα 80, με:

Κώδικας: Bash
x11vnc -connect srv1-dide.ioa.sch.gr:80

alkisg

#2
Προσάρτηση αρχείου .vdi εικονικής μηχανής χωρίς δικαιώματα διαχειριστή:
https://www.qemu.org/2021/08/22/fuse-blkexport/

qemu-storage-daemon --blockdev node-name=prot-node,driver=file,filename=gentoo.vdi --blockdev node-name=fmt-node,driver=vdi,file=prot-node --export type=fuse,id=exp0,node-name=fmt-node,mountpoint=mount-point,writable=on


Κλωνοποίηση σε άλλο τύπο με χρήστη του VirtualBox:

vboxmanage clonemedium disk srv.vmdk dst.vmdk --format VMDK --variant Fixed

alkisg

Ενημερώσεις απομακρυσμένου συστήματος μέσω ssh όταν ο πάροχος μπλοκάρει την πρόσβαση στα αποθετήρια, ή όταν επικοινωνεί με το δεύτερο σύστημα μόνο μέσω τοπικού δικτύου.
Χρησιμοποιείται ένα δεύτερο σύστημα ως apt proxy.

Κώδικας: Bash
sudo ssh -ND 1234 alkisg@srv1-dide.ioa.sch.gr

και μετά σε άλλη καρτέλα:

Κώδικας: Bash
sudo apt update -o 'Acquire::http::Proxy=socks5h://localhost:1234'
sudo apt full-upgrade -o 'Acquire::http::Proxy=socks5h://localhost:1234'

alkisg

Port forward θύρας, ώστε π.χ. ο server της Δευτεροβάθμιας να στέλνει σε άλλον server στον LAN την κίνηση για κάποια θύρα:

Κώδικας: Bash
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 1194 -j DNAT --to-destination 10.161.254.41:1194
iptables -A POSTROUTING -t nat -p tcp -d 10.161.254.41 --dport 1194 -j MASQUERADE
iptables -A PREROUTING -t nat -p udp -i eth0 --dport 1194 -j DNAT --to-destination 10.161.254.41:1194
iptables -A POSTROUTING -t nat -p udp -d 10.161.254.41 --dport 1194 -j MASQUERADE

alkisg

#5
Στον Επόπτη, αν κάνουμε δεξί κλικ → Εκτέλεση → Άνοιγμα κονσόλας → Διαχειριστή, τοπικά, και κάνουμε apt full-upgrade, τότε εάν υπάρχει νέα έκδοση του πακέτου epoptes-client, το τερματικό κλείνει και τα updates κόβονται στη μέση.

Η παρακάτω εντολή βοηθάει στην παράκαμψη αυτού του προβλήματος:

Κώδικας: Bash
sudo systemd-run socat EXEC:"pkexec env TERM=xterm-256color COLUMNS=95 LINES=50 SHELL=/bin/bash screen -T xterm-256color",pty,stderr openssl-connect:$SERVER:5499,verify=0

alkisg

Προβολή της εξωτερικής IP:

Κώδικας: Bash
# Μέσω DNS resolution:
nslookup myip.opendns.com resolver1.opendns.com
host -4 myip.opendns.com resolver1.opendns.com

# Μέσω http request:
wget https://alkisg.mysch.gr/ip/ -qO-

alkisg

#7
Αναζήτηση τοπικών DHCP servers:

Κώδικας: Bash
sudo /usr/lib/klibc/bin/ipconfig -n enp2s0
ή
sudo nmap --script broadcast-dhcp-discover

alkisg

Καλή εντολή για έλεγχο ποιότητας σύνδεσης:

Κώδικας: Bash
ping -c 1000 -f -i 0.002 destination

alkisg

Για factory reset Motorola G:
  • Power off
  • Power on + Volume down
  • Select Recovery mode
  • No command prompt: κράτα power off, πάτα volume up, άφησε volume up (τότε δείχνει το recovery), άφησε power off.

alkisg

Κρυπτογράφηση δίσκου ανά χρήστη (δηλαδή ούτε ο administrator δεν μπορεί να διαβάσει τα αρχεία των χρηστών), με αυτόματο ξεκλείδωμα κατά το login και υποστήριξη ZFS snapshots:

https://docs.oracle.com/cd/E88353_01/html/E37853/pam-zfs-key-7.html
To avoid adding `homes=home` in PAM config, use the default rpool/home:

Κώδικας: Bash
apt install zfsutils-linux libpam-zfs
zpool create -m none rpool nvme0n1p7 -f
zfs create -o mountpoint=/home rpool/home
zfs create -o encryption=on -o canmount=noauto -o keylocation=prompt -o keyformat=passphrase rpool/home/alkisg

Leave /home/alkisg owned by root and mode 755; modify the permissions inside the ZFS dataset.


alkisg


Πλήρες μπλοκάρισμα Internet των clients, μέσω του Επόπτη:

sudo ip r add default via 127.0.0.1⁩

Επαναφορά:

sudo ip r del default via 127.0.0.1⁩

alkisg

#13
Εγκατάσταση arduino-ide για όλους τους χρήστες (στο περίπου):

Κώδικας: Bash
sudo wget https://downloads.arduino.cc/arduino-ide/arduino-ide_2.3.4_Linux_64bit.AppImage -O /usr/local/bin/arduino-ide
sudo chmod +x /usr/local/bin/arduino-ide
# Run it as the user to get access to the menu and icon files
arduino-ide --no-sandbox
# Copy the folder to bypass fuse permissions
cp -r /tmp/.mount_ard* /tmp/arduino-ide
sudo cp /tmp/arduino-ide/arduino-ide.desktop /usr/local/share/applications/
sudo sed 's/AppRun/arduino-ide/' -i /usr/local/share/applications/arduino-ide.desktop
sudo mkdir -p /usr/local/share/icons/hicolor/256x256/apps/
sudo cp /tmp/arduino-ide/arduino-ide.png /usr/local/share/icons/hicolor/256x256/apps/

alkisg

#14
Η καλύτερη λύση που έχω βρει μέχρι στιγμής για χορήγηση πρόσβασης σε συσκευές τύπου Arduino, Lego, Microbit, WeDo κλπ. Στον server δίνουμε τις παρακάτω εντολές για να δημιουργήσουμε ένα αρχείο /etc/udev/rules.d/70-local.rules:

Κώδικας: Bash
sudo -i
cat >/etc/udev/rules.d/70-local.rules <<EOF
# Οι χρήστες που κάνουν login να έχουν πρόσβαση σε μικροσυσκευές
# τύπου Arduino, Lego, Microbit, WeDo κλπ:
ACTION!="remove", KERNEL=="ttyACM*", TAG+="uaccess"
ACTION!="remove", KERNEL=="ttyUSB*", TAG+="uaccess"

# Τα Microbit θέλουν πρόσβαση και σε επιπλέον device node:
ACTION!="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="0d28", TAG+="uaccess"
EOF

Κάνουμε reboot, και αν έχουμε LTSP, και δημοσίευση εικονικού δίσκου.
Αυτές οι οδηγίες λένε στο υποσύστημα udev που διαχειρίζεται το υλικό, να δίνει δυναμικά πρόσβαση στις συσκευές με όνομα /dev/ttyACM* και /dev/ttyUSB*, σε όλους τους χρήστες που κάνουν login. Νομίζω ότι όλες αυτές οι συσκευές τέτοια ονόματα έχουν.

Για να δούμε ότι ενεργοποιήθηκε, αφού κάνουμε login και δώσουμε την παρακάτω εντολή, θα πρέπει να δούμε το όνομα του τρέχοντα χρήστη π.χ. administrator:

Κώδικας: Bash
root@pc01:~# getfacl /dev/ttyACM*
getfacl: Αφαίρεση αρχικής «/» από τις απόλυτες διαδρομές
# file: dev/ttyACM0
# owner: root
# group: dialout
user::rw-
user:administrator:rw-
group::rw-
mask::rw-
other::---

Περισσότερες πληροφορίες εδώ και εδώ.