Rete
Utilizzo di ssh
Specificare un altro utente per il login
ssh -l <nomeutente> <host>
Copiare un file usando ssh come supporto (scp)
scp <nomefile> <utente>@<hostremoto>:<path>
Redirect di una porta remota alla macchina locale
Rete
Utilizzo di ssh
Specificare un altro utente per il login
ssh -l <nomeutente> <host>
Copiare un file usando ssh come supporto (scp)
scp <nomefile> <utente>@<hostremoto>:<path>
Redirect di una porta remota alla macchina locale
ssh -L <portalocale>:<hostremoto>:<portaremota> <hostremoto/gateway>
nota <hostremoto> è il nome o indirizzo IP della macchina su cui risiede il servizio a cui vogliamo accedere e dev’essere visibile dal gateway, esempio:
ssh -L 3389:192.168.1.1:3389 indirizzofirewall
a questo punto è possibile lanciare:
rdesktop localhost
e collegarsi al terminal server 192.168.1.1.
Configurare accesso ssh senza richiesta password
ssh-keygen -b 1024 -t rsa
poi copiare la chiave pubblica generata (nel file .ssh/id_rsa.pub) nel .ssh/authorized_keys del server
Disabilitare l’accesso da rete a root
il file /etc/securetty contiene la lista dei device da dove l’utente root puo’ connettersi, se si concellano tutte le voci lasciando da tty1 a tty8, l’utente potra’ collegarsi solo dalla console.:
ttyS* terminali seriali (modem ecc)
ttyp*, ttyq*, etc terminali di rete
Alcune opzioni utili di nmap
Dal lanciare come root:
nmap -v -sT -O "host"
per una scansione “half-open”:
nmap -v -sS -O "host"
Info su un dominio
whois "dominio"
Forwarding banale
con ipchains:
ipchains -F forward
ipchains -P forward DENY
ipchains -A forward -s 192.168.10.0/24 -j MASQ
ipchains -A forward -i ppp0 -j MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward
con iptables:
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
Bloccare l’accesso incondizionato da un determinato IP
Mettere una linea con l’indirizzo IP in /etc/hosts.deny o in caso di firewall:
ipchains -I input 1 -s xxx.xxx.xxx.xxx -j DENY
ipchains -I forward 1 -s xxx.xxx.xxx.xxx -j DENY
oppure bloccare la route verso un host:
route add -host "ip host" reject
Esempi pratici di wget
Scaricare un sito (con link interni) e mantenerlo nella directory corrente senza il prefisso www.host..
wget -nH -r sito
Uso di fetchmail
set daemon 600 #poll di 10 min
set syslog
poll mail.server.it with proto POP3:
user "utentediposta" there with password "" is utentelinux here;
Collegamento via seriale ai dispositivi
Si parte lasciando spento il dispositivo
minicom -s sistemare le impostazioni (tipicamente 9600 8N1)
exit (senza uscire dall'applicazione)
accendendo il dispositivo se ne vedrà il boot
rinetd: trasferimento di servizio da un pc ad un altro
Si configura in /etc/rinetd.conf:
hostinterfaccia porta host destinazione porta
Uso di lftp per gestire il mirror dei siti via ftp
esempi di utilizzo:
lftp -u <utente> -e "cd <directoryremota>; mirror --delete --exclude wp-config.php --only-newer --parallel=1; quit" <nomesito>
questo comando permette di fare il mirror del sito remoto copiando solo i file nuovi, l’opzione –parallel=1 serve in alcuni casi quando il sito remoto consente solo una connessione ftp alla volta, l’opzione –delete cancella i file locali non presenti in remoto, l’opzione –exclude evita di copiare i file che corrispondono
lftp -u <utente> -e "lcd <directorylocale>; mirror --reverse --delete --only-newer --parallel=1; quit" <nomesito>
fa l’esatto contrario del comando precedente, copia il contenuto del locale in remoto ed elimina i file che non esistono piu’ in locale
Samba
Samba parte di un dominio NT
Versione 2.x
Prima aggiungere il nome NetBIOs della macchina sulla lista degli account macchina del PDC, stoppare SMBD e NMBD poi scrivere:
smbpasswd -j NTDomainName -r PDCName
infine cambiare in smb.conf security = domain, verificare che la voce encrypt password sia YES e aggiungere:
password server = nome_del_server
Versione 3.x
Per aggiungere la macchina nel dominio NT:
net join -S PDC -UAdministrator%password
va inoltre installato winbindd, se non si vogliono replicare gli utenti del dominio anche lato linux, bisogna modificare il file smb.conf nella sezione global
# separate domain and username with '+', like DOMAIN+username
winbind separator = +
# use uids from 10000 to 20000 for domain users
idmap uid = 10000-20000
# use gids from 10000 to 20000 for domain groups
idmap gid = 10000-20000
# allow enumeration of winbind users and groups
winbind enum users = yes
winbind enum groups = yes
oltre ai soliti parametri di samba per poter far parte di un dominio:
workgroup = NOMEDOMINIO
security = domain
password server = *
encrypt passwords = Yes
passdb backend = tdbsam guest
inoltre ora bisogna modificare il pam per permettere l’autenticazione tramite il PDC, farsi una copia di backup di /etc/pam.d e modificare i file in essa contenuti in questo modo:
/etc/pam.d/common-auth
aggiungere:
auth sufficient pam_winbind.so
in:
/etc/pam.d/common-account
aggiungere:
account sufficient pam_winbind.so
far ripartire winbindd:
/etc/init.d/winbindd restart
ora con un:
wbinfo -u
si dovrebbe vedere la lista degli utenti gestiti dal PDC.
Copiare la lista degli utenti unix per Samba
cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd
oppure:
smbpasswd utente
addtosmbpasswd
Look up di un client NT dall’indirizzo IP
nmblookup -U PDC_NAME -AS indirizzo_ip
Risoluzione dei nomi tramite wins
Installare samba (per DebIan anche apt-get install winbind), modificare:
/etc/nsswitch.conf
alla riga:
hosts: files dns winbind wins
Apache
Evitare il browsing delle directory e abilitarlo solo in alcune
Directory /var/www
Options (eliminare l'eventuale Indexes)
/Directory
Directory /var/www/directorydarenderebrowsable
Options indexes FollowSymLinks
/Directory
Area visitabile solo ad alcuni utenti
Nella sezione Directory che si vuole:
AuthName "Area protetta"
AuthType Basic
AuthUserFile /etc/apache/htpasswd
require user utente
per aggiungere un utente al file di password utilizzare:
htpasswd /etc/apache/htpasswd utente
la stessa cosa puo’ essere fatta tramite .htaccess sempre che nella configurazione globale di apache sia permesso modificarne il comportamento tramite questo file, è sufficiente inserire il file nella directory che si vuole abilitare tramite password con il seguente contenuto:
AuthUserFile /<pathcompletodallarootcompresalarootdiapache>/.htpasswd
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic
require user nomeutente
come nel caso precedente per le password:
htpasswd .htpasswd nomeutente
Postfix
Ciao ciao, Ciao Spam
Autore: | Flavio Visentin |
---|
Ultimamente ha fatto molto discutere l’iniziativa di ciaospam.it, che per limitare lo spam obbliga a farsi riconoscere…
Ecco una ricetta che permette di eliminare del tutto l’assillo:
-
Creare di una mappa che contiene gli indirizzi da rifiutare:
# echo "info@ciaospam.it REJECT" >> /etc/postfix/rompiscatole
# postmap /etc/postfix/rompiscatole -
Informare della cosa postfix:
# echo "smtpd_sender_restrictions = check_sender_access \
> hash:/etc/postfix/rompiscatole" >> /etc/postfix/main.conf
#/etc/init.d/postfix reload
X11
Gestione dei tasti multimediali
Controllare i valori numerici ritornati premendo il tasto dopo aver lanciato ‘xev’.
Controllare il codice di X11 controllando i valori numerici in in /etc/X11/xkb/keycodes/xfree86)
Aggiungere una sezione a /etc/X11/xkb/symbols/inet con quei codici collegandoli ai codici per XFREE86 magari facendo una copia del file prima…ad esempio:
// portatile sconosciutissimo
partial alphanumeric_keys
xkb_symbols "portatilesconosciutissimo" {
key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
key <I10> { [ XF86AudioPrev ] };
key <I19> { [ XF86AudioNext ] };
key <I24> { [ XF86AudioStop ] };
key <I30> { [ XF86AudioRaiseVolume ] };
key <I2E> { [ XF86AudioLowerVolume ] };
key <I20> { [ XF86AudioMute ] };
};
Per spostare il mouse con la tastiera
Ctrl+Shift+Num Lock: Senti un beep.
Sposti il cursore con i tasti:
7 8 9
4 6
1 2 3
sul tastierino numerico.
Selezioni un tasto del mouse con i tasti “/” (sinistro), “*” (centrale) e “-” (destro), sempre sul tastierino numerico. Poi con “5” simuli un click con quel tasto, con “0” lo si mantiene premuto e con “.” lo si rilascia.
Caratteri balenghi con la tastiera italiana
` = AltGr + ' oppure AltGr + ù
{} = AltGr + 7 e AltGr + 0
Configurazione di XKB
Un’ottima guida, seppure in inglese: http://www.charvolant.org/~doug/xkb/html/xkb.html
Per vedere la risoluzione attuale di X
xdpyinfo
Per far partire X su un altro terminale
Per avere più sessioni X sulla stessa macchina:
startx -- :1
Altro modo:
Xnest :1
fornisce una finestra contenente un X server. Esempio interessante di applicazione che è contemporaneamente un X client e X server.
xnest come client
È possibile con xnest per esempio collegarsi a un xdm (o gdm) che ha attivo l’xdmcp, X Display Manager Protocol (stile rdesktop):
Xnest :1 -query indirizzoserver
Mouse in X e su console
Probabilmente è sufficiente mettere in /etc/gpm.conf:
device=/dev/psaux
repeat_type=raw
type=ps2
poi nel file di configurazione di X /dev/gpmdata come device per il mouse
Tasti windows in X
aggiungere in ~/.Xmodmap:
keycode 115 = F13
keycode 116 = F14
keycode 117 = F15
quindi in .xsession: modmap ~/.Xmodmap. Ora F13, F14 e F15 sono sx-Win , dx-Win e menu-contestuale.
Esportare il display tramite ssh
Assicurarsi che sul server sia abilitata la voce:
X11Forwarding yes
in /etc/ssh/sshd_config, quindi sul client esportare il display prima di effettuare la connessione ssh:
export DISPLAY=:0.0
a questo punto collegandosi via ssh al server con le opzioni:
ssh -X -C (per la compressione) <indirizzoserver>
è possibile lanciare le applicazioni in modo che visualizzino il display sul client, attenzione sul server dev’essere installato il client X (xbase-clients per DebIan)
Gestione font decenti
installare possibilmente i font di Microsoft, su debian:
apt-get install msttcorefonts
sistemare sempre per primi i font “bitmapped” nel file di configurazione di xfree, esempio:
FontPath "/usr/lib/X11/fonts/100dpi" # font bitmap
FontPath "/usr/lib/X11/fonts/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" # font scalabili
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
FontPath "/usr/lib/X11/fonts/encodings"
Cambiare i font di un applicazione
E’ sufficente utilizzare xlsfonts e inserire il font selezionato nel file ~/.Xdefault, esempio:
*xterm*font: <nome del font>
si possono fare delle prove con:
xterm -fn <nome del font>
una volta terminato lanciare:
xrdb -merge ~/.Xdefault
Cambiare i font per GTK 1.X
E’ sufficente utilizzare gtkfontsel e inserire il font selezionato nel file ~/.gtkrc, esempio:
style "default"
{
font = "-adobe-courier-medium-r-normal-*-12-120-75-75-m-*-*-*"
}
Avviare un applicazione all’avvio di xdm senza la necessità del login dell’utente
Creare uno script e salvarlo in /etc/X11/xdm/Xsetup, attenzione viene lanciato dall’utente root
Installazione di grub
grub-install device
Hylafax: stampare i fax in entrata
Per stampare direttamente i fax in entrata di hylafax , aggiungere nel file /var/spool/fax/bin/faxrcvd il comando:
$FAX2PS $1 | lpr
Chi utilizza cosa
Per vedere che processo sta utilizzando la tal porta
fuser port/tcp o udp
Per vedere che processo sta utilizzando il tal file
lsof | grep file
Per vedere i processi che stanno in ascolto
netstat -l
Cambiare una stringa in uno o più file
sed -i 's:stringadasostituire:stringanuova:g' *
oppure:
perl -pi -e 's/stringadasostiruire/nuovastringa/g' *
cambiare password ad un utente di postgresql
alter user utente with password 'password';
o se si usano password criptate:
alter user utente with crypted password 'password';
Configurare la scheda sonora
Installare la documentazionie del kernel e seguire le indicazioni per la propria scheda, pnpdump > isapnp.conf genera il file di configurazione da editare per abilitare le varie opzioni, usare modconf per installare definitivamente i moduli
Togliere i beep fastidiosi
in x:
xset b off
in console:
setterm -blength 0
Togliere i messaggi di errore dalla console
Modificare /etc/syslog.conf in modo da deviare il log su file , o per bloccarlo definitivamente:
dmesg -n1
Estrarre un attachment mime da un file
metamail -w file
Dischi CD Floppy Chiavette USB
Copiare una distro da una partizione all’altra (anche non uguali)
tar cfv - * | (cd /mnt/disk2 ; tar xfv -)
oppure:
cp -avx /mnt/dev1 /mnt/dev2
altrimenti:
cp -ra / /hda2
Ricreare il device di un disco
mknod -m 660 nomedev( per es hda1) b 3 1
per debian poi:
chgrp disk nomedev
Per rimontare un disco in rw
mount /device -o remount,rw
Recupero di un floppy danneggiato
RecuperaDischetto, con una ricetta di Andrea Gelpi
Masterizzare
Aggiungere un masterizzatore ide senza ricompilare il kernel originale
in /etc/lilo.conf aggiungere:
append="hdX=ide-scsi" dove X e' la lettera del device
e in /etc/modules:
ide-scsi
CD Audio
cdrdao copy --on-the-fly --speed 2 --device 0,0,0 --source-device 0,1,0 \
--driver generic-mmc --source-driver generic-mmc --force
CD Dati
cdrecord -v dev=0,0,0 speed=4 -isosize /dev/cdrom
Convertire da ext2 a ext3 e viceversa
Anche su fs montato:
tune2fs -j /dev/hdaX
su fs smontato:
tune2fs -O ^has_journal /dev/hdaX
e per sicurezza::
fsck.ext2 -f /dev/hdaX
Utilizzo chiavetta usb
Assicurarsi di avere in /etc/fstab:
usbdevfs /proc/bus/usb usbdevfs defaults,noauto 0 0
installare il modulo usb-storage:
modprobe usb-storage
ora è possibile montare la chiavetta:
mkdir /mnt/chiavetta
mount /dev/sda1 /mnt/chiavetta
in realtà sda1 è il nome del device in una configurazione desktop standard (senza dischi scsi ecc), comunque caricando il modulo usb-storage in /var/log/messages si dovrebbe vedere il nome del device assegnato, nel caso non esistesse il device è possibile crearlo con MAKEDEV:
cd /dev/
MAKEDEV sda
eventualmente è possibile modificare l’fstab in modo da poter montare la chiavetta agilmente da kde o gnome:
/dev/sda1 /mnt/chiavetta auto user 0 0
Avere un report dell’hardware del sistema
Si può utilizzare il comando:
lshw
Uso di GNU PG
Creare una nuova chiave
gpg --gen-key
Esportare una chiave pubblica
gpg --armor --export
Copiare la chiave privata di Gnu PG da una macchina ad un’altra
gpg -armor --export-secret-keys "nome e/o indirizzo di posta" > mykey.sec
gpg --import --allow-secret-key-import < mykey.sec
Ascoltare la radio è facile
Rai 3 ad esempio è ascoltabile con:
realplay http://www.radio.rai.it/new_player/radio3.ram
Disabilitare il reboot con CTRL ALT CANC
commentare la line in /etc/inittab:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Ripristinare la password di root
Fare il boot specificando Linux init=/bin/sh:
# mount -n -t remount,rw /
# mount -avt nonfs,noproc,nosmbfs
# cd /etc
# vi passwd
# vi shadow
mettere il secondo campo (la password) vuoto
Il primo mount fa si che il root filesystem (dove presumibilmente giace la directory /etc e quindi il file delle password…) sia scrivibile; il secondo monta tutti gli altri filesystem che non siano NFS o roba comunque non utile.
La modifica della password a questo punto può essere fatta con un qualsiasi editor, come indicato sopra, oppure normalmente con il solito:
# passwd
Enter new UNIX password:
Retype new UNIX password:
Rinominare una serie di file
Esiste l’utilissima utility rename contenuta nel pacchetto perl:
rename 's/pippo/pluto/' *
macutio segnala un’alternativa contenuta in util-linux che usa questa sintassi:
rename from to files
from: la substring da sostituire
to: la substring con cui sostituire from
files: il file cui applicare la sostituzione
Kernel
Dove diavolo trova Linux l’elenco dei moduli da installare?
Due cose da sapere riguardo ai moduli:
-
il caricamento di alcuni moduli viene effettuato al volo quando ce n’è bisogno (se il kernel e` stato compilato per comportarsi cosi`, ed è la stragrande maggioranza dei casi).
Tipicamente ciò succede quando si tenta di accededere a un block device o ad un char device in /dev. Ad esempio, quando si tenta di accedere ad un dispositivo SCSI, il kernel di fatto manda in esecuzione un bel:
modprobe block-major-8
e normalmente, in /etc/modules.conf c’e` un bel:
alias block-major-8 <nome_modulo_scsi_specifico>
per cui l’effetto finale è quello per cui vien fatto un modprobe del modulo specifico, che risulta nel caricamento del modulo e di tutti gli altri moduli da cui esso dipende. Bello, eh? 🙂
-
oppure, negli script di boot (del tipo /etc/rc.d/boot.local o simili, cambiano da distribuzione a distribuzione), ci sono i vari:
modprobe <nome_modulo>
del caso.
modprobe è un comando che non fa altro che leggere il proprio file di configurazione (che è /etc/modules.conf) e lanciare insmod e rmmod (che fanno il “vero” lavoro) con i parametri opportuni.
C’è da tener ben presente una differenza fondamentale tra l’usare modprobe e l’usare direttamente insmod/rmmod:
-
modprobe è a conoscenza delle dipendenze esistenti tra i moduli (e oltre a caricare quello che gli dici, carica prima anche quelli di cui ha bisogno, eventualmente eseguendo anche le fasi di pre e post install e passando le opzioni specificate con options). E tanto per cambiare, viene fatto esattamente l’opposto quando si tratta di rimuovere un modulo (modprobe -r).
-
insmod invece non sa niente di tutto questo.
Per cui la regoletta è: usare sempre modprobe, salvo che non si abbia una ragione valida per usare insmod/rmmod.
Il kernel esegue:
modprobe -s -k (attraverso una call a `request_module()
- -s per fare il logging attraverso syslogd e
- -k per impostare l’autocleaning sul modulo caricato (o moduli) dopo aver adeguatamente settato l’environment.
Questo meccanismo è piuttosto singolare: il kernel invoca un programma in userspace. Da quanto capisco, è stato scelto di fare così perché questa strategia semplificava di molto la gestione del loading on demand dei moduli (cioè non si deve replicare buona parte di quello che fa modprobe in kernel space, modprobe permette una discreta flessibilità e configurabilità, vedi le varie pre-install/post-install/pre-remove/post-remove).
Come viene spiegato qui, è possibile correggere il path del programma da eseguire sostituendo il valore di default.
Sembra che la cosa sia piaciuta, perché in realtà il kernel offre un meccanismo del tutto generale per richiedere l’esecuzione di programmi in userspace: call_usermodehelper, che apparentemente funziona come la nota execve(2).
Note per kernel hackers: call_usermodehelper() e request_module() sono sincrone, cioè dormono finché il programma invocato non è terminato (con ovvie conseguenze su gestione di lock/semafori e necessità di scrivere codice rientrante) e non c’è verso di sapere se l’azione fatta dal programma invocata si è conclusa con successo o meno. Il codice è simile a:
available = check_for_feature();
if (!available)
request_module("feature");
if (!check_for_feature())
goto error
else
goto success
Riferimenti:
- kernel/kmod.h e kernel/kmod.c
- Documentation/modules.txt
- net/socket.c per un esempio di come usare request_module()
- http://www.xml.com/ldd/chapter/book/ch11.html
p.s. : DebIan offre quel favoloso strumento che si chiama modconf!:)
Spiccioli di grafica
Immagine trasparente con Gimp?
Livello -> Trasparenza -> Aggiunta canale alpha
Seleziona -> Per colore
Modifica -> Pulisci
Ridurre le dimensioni di un filmato
apt-get transcode ;)
transcode -i originale.mpg -y ffmpeg -F mpeg4 -o ridotto.mpg -Z 400x200
Qemu, boot da CD
Creare un immagine su disco:
dd of=nomeimmagine.img bs=1024 seek=numerobyte count=0
nota, numero byte può essere espresso anche in mega esplicitando una M maiuscola dopo la cifra, un esempio di avvio di qemu con l’immagine creata:
qemu -hda nomeimmagine.img -cdrom /dev/cdrom -boot d -m 256 -enable-audio -user-net -pci
— diaolin: puoi trasformare le immagini di vmware in immagini di qemu con vmdk2raw.
— diaolin: puoi creare una immagine anche senza usare dd ma lanciando il comando:
qemu-mkcow [-f disk_image] cow_image [cow_size]
esempiuccio:
immagine raw da 5Gb
qemu-mkcow nuova.raw 5000
Utilizzo di find
Esempio di utilizzo di find:
find /directory/ -iname "file*" -exec cat {} \;
Conversione di codifica dei file con iconv
iconv è un utility che permette di convertire un file da una codifica all’altra, il programma si blocca se c’e’ qualche carattere non supportato nella nuova codifica visualizzando la riga contenente l’errore è quindi possibile sistemare il file, esempio di utilizzo:
iconv --from-code utf-8 --to-code iso-8859-1 file.txt -o file.new
Caratteri di escape
A volte è utile utilizzare dei caratteri di escape, ad esempio per colorare il file /etc/motd (il benvenuto che si ha quando ci si collega ad un PC), il carattere di escape viene rappresentato con ^[ ma è un carattere singolo non due, per produrlo o utilizzare un editor pensato a questo scopo tipo:
tetradraw
oppure ecco alcune note per gli editor più comuni:
emacs: ^Q ESC
vi: ^V ESC
joe: ` 0 2 7
jed: ` ESC
alcuni caratteri di escape utili:
blu ^[[44;37m
normale ^[[40;37m
clear ^[[H^[[J
altri colori:
Nero 0;30 Grigio Scuro 1;30
Blu 0;34 Blu Chiaro 1;34
Verde 0;32 Verde Chiaro 1;32
Ciano 0;36 Ciano Chiaro 1;36
Rosso 0;31 Rosso Chiaro 1;31
Viola 0;35 Viola Chiaro 1;35
Marrone 0;33 Giallo 1;33
Grigio Chiaro 0;37 Bianco 1;37
fonte: http://www.pluto.it/ildp/HOWTO/Bash-Prompt-HOWTO-5.html