se cercate di compilare con arduino su linux protreste ottenere un errore ‘permission denied’
per risolvere:
$ sudo usermod -a -G dialout <nomeutente>
$ sudo chmod a+rw /dev/ttyACM0
Qui scrivo le cose che voglio ricordare
se cercate di compilare con arduino su linux protreste ottenere un errore ‘permission denied’
per risolvere:
$ sudo usermod -a -G dialout <nomeutente>
$ sudo chmod a+rw /dev/ttyACM0
Questo articolo permette di avere una installazione completamente funzioante, anche se ancora si tratta di un work in progress, stay tuned.
da fare:
Samba è un ottimo fileserver su *nix e Linux che permette di condividere files in modo efficace tra il mondi Windows, Mac e *nix.
Da sempre è stato possibile emulare un Primary Domain Controller in stile NT4 (risale ormai al paleolitico informaticamente parlando), che ormai richiedeva una patch del registro di di Windows per poter funzionare.
La nuova release di Samba 4 ha infatti apportato moltissime modifiche:
Lo stesso server Samba4 verrà poi utilizzato anche per la gestione in contemporanea degli utenti Unix, in modo da avere un controllo unico e centralizzato sia sugli utenti Windows sia sugli utenti Linux.
E’ possibile connettersi ad un dominio solo con le vesioni Professional ed Ultimate di Windows 2000, XP, 7, 8, 8.1 e 10, non sono supportate in alcun modo le versioni Home di Windows 2000, XP, 7, 8, 8.1 e 10.
Attenzione agli errori di battitura, in questa configurazione anche solo un “.” messo nel posto sbagliato oppure omesso può rendere impossibile il raggiungimento del risultato sperato.
Ho deciso di scrivere questa guida perché ho trovato indicazioni su internet un poco frastagliate o che si riferivano a vecchie versioni di Samba e come altri progetti OpenSource l’eccesso di documentazione alla fine provoca confusione perchè ognuno di noi ha la sua esperienza personale.
Sebbene il Domain Controller sembri il la macchian più indicata per fungere anche da file server si suggerisce spesso di usare un file server distinto per permettere gli aggiornamenti di uno piuttosto che dell’altro senza per questo compromettere il funzionamento del domnio. Si suggerisce inoltre alle organizzazioni medie e grandi di usare più di un DC. la documentazione ufficiale si Samba consiglia di usare server diversi per ogni ruolo in modo tale da separare i compiti e mantenere alti livelli di affidabilità. In più usare a un file server distinto evita idiosincrasie nella configurazione di winbind per maggior informazioni vi consiglio di leggere questi articoli:
127.0.0.1 localhost.localdomain localhost 192.168.1.41 ADDC1.example.local ADDC1
personalmente ho eseguito questa linea di comando, per avere tutte le librerie necessarie per la compilazione e qualche utility di mio comodo
yum install perl gcc attr libacl-devel libblkid-devel \ gnutls-devel readline-devel python-devel gdb pkgconfig \ krb5-workstation zlib-devel setroubleshoot-server libaio-devel \ setroubleshoot-plugins policycoreutils-python \ libsemanage-python perl-ExtUtils-MakeMaker perl-Parse-Yapp \ perl-Test-Base popt-devel libxml2-devel libattr-devel \ keyutils-libs-devel cups-devel bind-utils libxslt \ docbook-style-xsl openldap-devel autoconf python-crypto vim mc net-tools wget
per installare Samba avete 3 opzioni:
Parte dei pacchetti necessari per la corretta compilazione di Samba erano nella lista che ho scritto prima. con l’aggiunta di alcuni pacchetti che utilizzo abitualmente quali mc e vim, il primo è un file manager vecchio stampo che alcuni amministratori di sistema ricorderanno con il primo file manager utilizzato, integra anche un ottimo editor, ma purtroppo utilizzando putty per accedere al mio server non supporta il copia e incolla, per questo si rende necessario l’uso di vim, versione intelligente di vi, che supporta il copia ed incolla su putty
Passiamo quindi al download del pacchetto da qui https://www.samba.org/samba/download/
oppure più semplicemente:
(il numero dipende dall versione di samba, attualmente disponible 4.3.4) wget https://download.samba.org/pub/samba/stable/samba-4.3.5.tar.gz tar xvfz samba-4.3.5.tar.gz cd samba-4.3.5./configure --bindir=/sbin --sbindir=/sbin/ --sysconfdir=/etc/samba --mandir=/usr/share/man/ \ --with-acl-support --with-ads --enable-cups --enable-glusterfs --with-winbind --with-ldap --with-regedit \ --enable-selftest --localstatedir=/var --with-piddir=/var/run/ --with-pammodulesdir=/lib/security --without-systemd -j 2make -j 4 make test (opzionale e dispendioso) make install
nuova versione (mantiene tutto in /usr/local/samba ad eccezione delle configurazione)
./configure --sysconfdir=/etc/samba --mandir=/usr/share/man/ \ --with-acl-support --with-ads --enable-cups --enable-glusterfs --with-winbind --with-ldap --with-regedit \ --enable-selftest -j 2make -j 4 make test (opzionale e dispendioso) make install
abbiamo quindi terminato l’installazione di samba sul nostro server ed iniziamo ora la configurazione
scegliando la prima riga per il comando configure tutti binari finirianno el path.
scegliendo la seconda riga per il comando “configure” sara’ necessario modificare il path con questo semplice script>
echo "PATH=${PATH}:/usr/local/samba/bin" > /etc/profile.d/scripts-path.sh && chmod 755 /etc/profile.d/scripts-path.sh
samba-tool domain provision --realm=example.local --domain=EXAMPLE --adminpass='P@ssw0rd' --server-role=dc --dns-backend=SAMBA_INTERNAL --function-level=2008_R2 --use-xattr=yes --host-ip=nu.me.ro.ip
da notare che il nome NetBIOS del dominio va scritto maiuscolo.
questo ci rendera AD DC del dominio ‘example’ con utilizzo del dns interno di gran lunga più semplice da configurare rispetto a bind.
oppure in alternativa
samba-tool domain provision --use-rfc2307 --interactive
e possiamo continuare la configurazione del nostro server con alcune modifiche al nostro /etc/samba/smb.conf nella sezione global
# esplicito in modo chiaro di cosa ho bisogno ed abilito i servizi server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb server services = -s3fs +dns dcerpc endpoint servers = +winreg +srvsvc interfaces = nu.me.ro.ip allow dns updates = secure # dns recursive queries = yes # faccio in modo che gli utanti del dominio non possano effettuare il login template shell = /usr/sbin/nologin # imposto il log leve ed il nome file desiderato log file = /var/log/samba/EXAMPLE.log syslog = 0 log level = 3 passdb:0 auth:0 winbind:0 vfs:0 vfs objects = full_audit # imposto la dir dove verranno create le home delgli utanti per conformita scenglo home template homedir = /home/%ACCOUNTNAME%
e da aggiungere anche
dns forwarder = x.x.x.x
qualora non presente
quindi
mkdir /var/log/samba samba restart
verifichamo che il file
/etc/resolv.conf
sia circa così:
search example.local nameserver nu.me.ro.ip
quindi facciamo qualche verifica con nslookup
ad alcune verifiche sul dns di samba nello specifico
# host -t SRV _ldap._tcp.example.local. (attenzione al punto finale ed alla risposta successiva) _ldap._tcp.example.local has SRV record 0 100 389 addc1.example.local.
# host -t SRV _kerberos._tcp.example.local. (attenzione al punto finale ed alla risposta successiva) _kerberos._tcp.example.local has SRV record 0 100 88 addc1.example.local.
# host -t A server01.dominio.local. (attenzione al punto finale ed alla risposta successiva) server01.dominio.local has address nu.me.ro.ip quindi utilizziamo la nuova configurazione di kerberos appena generata da samba-tool
mv /etc/krb5.conf /etc/krb5.conf.orig ln -s /usr/local/samba/private/krb5.conf /etc/krb5.conf
Testiamo il funzionamento di Kerberos:
# kinit administrator@DOMINIO.LOCAL
Se il comando precedente ha avuto esito positivo, con il comando:
# klist -e
possiamo vedere il ticket Kerberos che ci è stato assegnato
Samba usa tutte queste porte per funzionare nel ruolo di Active Directory Domain Controller:
Service | Port | protocol |
---|---|---|
DNS | 53 | tcp/udp |
Kerberos | 88 | tcp/udp |
End Point Mapper (DCE/RPC Locator Service) | 135 | tcp |
NetBIOS Name Service | 137 | udp |
NetBIOS Datagram | 138 | udp |
NetBIOS Session | 139 | tcp |
LDAP | 389 | tcp/udp |
SMB over TCP | 445 | tcp |
Kerberos kpasswd | 464 | tcp/udp |
LDAPS (only if “tls enabled = yes”) | 636 | tcp |
Dynamic RPC Ports* | 1024-5000 | tcp |
Global Cataloge | 3268 | tcp |
Global Cataloge SSL (only if “tls enabled = yes”) | 3269 | tcp |
Multicast DNS | 5353 | tcp/udp |
quindi vanno i seguenti comandi per evitare il firewall presente su Centos blocchi le connessioni:
firewall-cmd --permanent --add-port=53/tcp firewall-cmd --permanent --add-port=53/udp firewall-cmd --permanent --add-port=88/tcp firewall-cmd --permanent --add-port=88/udp firewall-cmd --permanent --add-port=135/tcp firewall-cmd --permanent --add-port=137/tcp firewall-cmd --permanent --add-port=137/udp firewall-cmd --permanent --add-port=138/udp firewall-cmd --permanent --add-port=139/tcp firewall-cmd --permanent --add-port=389/tcp firewall-cmd --permanent --add-port=389/udp firewall-cmd --permanent --add-port=445/tcp firewall-cmd --permanent --add-port=464/tcp firewall-cmd --permanent --add-port=464/udp firewall-cmd --permanent --add-port=636/tcp firewall-cmd --permanent --add-port=1024-5000/tcp firewall-cmd --permanent --add-port=1024-5000/udp firewall-cmd --permanent --add-port=3268/tcp firewall-cmd --permanent --add-port=3269/tcp firewall-cmd --permanent --add-port=5353/tcp firewall-cmd --permanent --add-port=5353/udp
e quindi facciamo ripartire il firewall
firewall-cmd --reload
Applichiamo ora alcuni policies di SELinux per permettere il passaggio di Samba come domain controller.
setsebool -P samba_domain_controller on
setsebool -P samba_enable_home_dirs on
Cambiamo quindi il security contest delle cartelle che abbiamo condivi tramite Samba nel file smb.conf
chcon -t samba_share_t /samba/netlogon chcon -t samba_share_t /samba/profiles nuova versione chcon -t samba_share_t /usr/local/samba/var/locks/sysvol/adcomlocal.local/scripts chcon -t samba_share_t /home/samba/profiles
Meglio riavviare il server per vedere che le regole rimangano tutte applicate.
Se non volete avere problemi di alcun tipo con Firewall e SELinux, basta semplicemente disattivarli tramite systemclt e riavviare il server.
Qui invece alcuni comandi necessari per rimuovere alcuno controlli di sicurezza sulle password che tanti utenti odiano, ognuno di questi disabilita alcuni controlli che sono normalmente ablitati e che sarebbe megmlio non disabilitare, ma si sa che gli utenti non piace.
samba-tool domain passwordsettings set --complexity=off samba-tool domain passwordsettings set --history-length=0 samba-tool domain passwordsettings set --min-pwd-age=0 samba-tool domain passwordsettings set --max-pwd-age=0
Fonte http://guide.debianizzati.org/index.php/Samba_e_OpenLDAP:_creare_un_controller_di_dominio_Active_Directory_con_Debian_Wheezy
Gestione DNS |
||||
Aggiungere un record | # samba-tool dns add server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT data | |||
Cancellare un record | # samba-tool dns delete server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT data | |||
Interrogare un record | # samba-tool dns query server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT|ALL [options] data | |||
Chiedere informazioni sul server | # samba-tool dns serverinfo server | |||
Aggiornare un record | # samba-tool dns update server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT olddata newdata | |||
Creare una zona | # samba-tool dns zonecreate server zone | |||
Eliminare una zona | # samba-tool dns zonedelete server zone | |||
Informazioni su una zona | # samba-tool dns zoneinfo server zone | |||
Elencare le zone | # samba-tool dns zonelist server | |||
Gestione utenti |
||||
Aggiungere un utente | # samba-tool user create USERNAME | |||
Cancellare un utente | # samba-tool user delete username | |||
Disabilitare un utente | # samba-tool user disable username | |||
Abilitare un utente | # samba-tool user enable username | |||
Elencare gli utenti | # samba-tool user list | |||
Modificare la password di un utente | # samba-tool user setpassword username | |||
Impostare la scadenza di un utente | # samba-tool user setexpiry username | |||
Gestione Gruppi |
||||
Aggiungere un gruppo | # samba-tool group add groupname | |||
Aggiungere utenti a un gruppo | # samba-tool group addmembers groupname members | |||
Cancellare un gruppo | # samba-tool group delete groupname | |||
Elencare i gruppi | # samba-tool group list | |||
Elencare i membri di un gruppo | # samba-tool group listmembers groupname | |||
Cancellare utenti da un gruppo | # samba-tool group removemembers groupname members | |||
Gestione Password |
||||
Abbassare la complessità delle password | # samba-tool domain passwordsettings set –complexity=off | |||
Modificare la lunghezza minima consentita per le password | # samba-tool domain passwordsettings set –min-pwd-length=1 |
installiamo ancora qualche pacchetto
yum install cups foomatic-db hplip-common
poi ho editato /etc/cups/cupsd.conf aggiungendo all inizio:
DefaultEncryption Never
per semplificare le cose un po più avanti ho aggiunto una riga listen per permettere la configurazione tramite rete
Listen nu.me.ro.ip:631
ed infine un paio di righe aggiuntive nella sezione “/” e “admin”
come da foto per permettere una accesso alla pagina web a tutta la rete interna e solo un host per la pagina di ammnistrazione.
quindi :
systemctl cups restart
e
systemctl cups enable
quindi accesso via web alla pagina si configurazione
https://nu.me.ro.ip:631/admin
e aggiungo le stampanti presenti in rete tramite interfaccia web.
dopodiche ritorno ad editare
il mio smb.conf ed aggiungo nella sezxione global:
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
che abilitano l’ultima versione dello spool di stampa ad alte prestazioni con forking……
inoltre attivo l’auto caricamento delle stampanti di sistema:
load printers = yes
senza di dimenticarmi di aggiungere la cartella si spool :
mkdir -p /var/spool/samba/ chmod 1777 /var/spool/samba/
quindi
smbcontrol all reload-config per ricaricare la configurazione
Simpaticamente Samba non prevede uno script System V compatibile, o almeno io no lo ho trovato, comuqneu ho trovato in rete questo script da screivere facendo:
vi
/etc/rc.d/init.d/samba4
e scrivendo:
#! /bin/bash # # samba4 Bring up/down samba4 service # # chkconfig: - 90 10 # description: Activates/Deactivates all samba4 interfaces configured to # start at boot time. # ### BEGIN INIT INFO # Provides: # Should-Start: # Short-Description: Bring up/down samba4 # Description: Bring up/down samba4 ### END INIT INFO # Source function library. . /etc/init.d/functions if [ -f /etc/sysconfig/samba4 ]; then . /etc/sysconfig/samba4 fi CWD=$(pwd) prog="samba4" start() { # Attach irda device echo -n $"Starting $prog: " /usr/local/samba/sbin/samba sleep 2 if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi echo } stop() { # Stop service. echo -n $"Shutting down $prog: " killall samba sleep 2 if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi echo } status() { /usr/local/samba/sbin/samba --show-build } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status irattach ;; restart|reload) stop start ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0
che deve un fiel che qualcuno aveva nel cassetto perche fa riferiment al vecchio stack irda, ma viene citato questo script in diversi posti nella rete, quindi tutti fanno capo ad uno script a quanto sembra.
e quindi attivare questo script per avvio automatico:
# chmod
755 /etc/rc.d/init.d/samba4
chmod
+x /etc/rc.d/init.d/samba4
ln
-s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4
chkconfig --add samba4
# chkconfig samba4 on
service samba4 restart
Per impostazione predefinita gli utanti di actrive directory non possono fare il login locale sul server Lnux con al di fuori dell’ambiente Samba AD DC.
Se hai piacere di avere una lista sincronizzata deli utenti per fare il login anche sul server Linux con il tuo nome account utente Active Directory hai bisogno di fare le seguenti modifiche al tuo ambiente Linux per modificare il comportamento di Samba4 AD DC.
Apri il file principale di configurazione di Samba smb.conf
$ vim nano /usr/local/samba/etc/smb.conf
accertati che ci siano ed eventualmente aggiungi le due righe qui sotto:
winbind enum users = yes winbind enum groups = yes