24.01.2020

Linux notlarim

Windows ile paylaşım yapma

EXT4 ile formatlanmış bir disk üzerinde klasöre sağ tıkla “Local Network Share” tabı içinde bu klasörü paylaş de ve anonymous erişime izin ver sadece. Bu kadar windowsdan \192.168.2.100 diyerek ulaşabilirsin.

İşletim sistemi güncelleme

sudo apt-get update 
sudo apt-get upgrade

Program çalıştırma;

Önce ll komutu ile dosya çalıştırılabilir mi ona bak. Ubuntu’da yeşil renk oluyor. Değil ise chmod +x dosya_adi diyerek dosyayı çalıştırılabilir yaparız. Sonra da ./dosya_adi diyerek çalıştırırız.

Komut satırından arama yapmak;

sudo find / -iname 'aranacak_dosya' -print

Apache web server kurmak;

Tomcat kurmak;

(https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04 )

sudo apt-get remove apache2
sudo apt-get update
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
cd /tmp
curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.15/bin/apache-tomcat-8.5.15.tar.gz
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
cd /opt/tomcat
sudo chgrp -R tomcat /opt/tomcat
sudo chmod -R g+r conf
sudo chmod g+x conf
sudo chown -R tomcat webapps/ work/ temp/ logs/
sudo update-java-alternatives -l
sudo nano /etc/systemd/system/tomcat.service
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl status tomcat
sudo systemctl enable tomcat
sudo nano /opt/tomcat/conf/server.xml
sudo systemctl restart tomcat

tomcat dizini sahibini değiştirmek için;

sudo chown -R chi /opt/tomcat/

Tomcat 8080 portunu 80. porta yönlendirmek;

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo /etc/init.d/netfilter-persistent save 

Bir servisin durumunu görüntülemek, servis başlatmak, servis durdurmak;

service apache2 status
sudo service apache2 stop
sudo service apache2 start
sudo service apache2 restart

ISO imajı USB ye yazarak boot edilebilir USB oluşturmak.

sudo fdisk -l

komutu ile USB diskin harfi tespit edilir. Önce komut çıktısına bakıp sonra USB yi takarsan daha emin olursun harfinden.

sudo dd if=kali-linux-2016.1-amd64.iso of=/dev/sdb bs=512k

komutu ile de dosya USB’ye kopyalanır. 512 kopyalama hızıdır. Tavsiye edilen.

Java Kurmak.

Tar.gz uzantılı dosya oracle sitesinden indirilir.

tar -xvf jdk-8u91-linux-x64.tar.gz 
sudo mkdir -p /usr/lib/jvm 
sudo mv ./jdk1.8.0_91 /usr/lib/jvm/ 
sudo update-alternatives --install "/usr/bin/java" "java" 	"/usr/lib/jvm/jdk1.8.0_91/bin/java" 1 
sudo update-alternatives --install "/usr/bin/javac" "javac" 	"/usr/lib/jvm/jdk1.8.0_91/bin/javac" 1 
sudo update-alternatives --install "/usr/bin/javaws" "javaws" 	"/usr/lib/jvm/jdk1.8.0_91/bin/javaws" 1 
sudo chmod a+x /usr/bin/java 
sudo chmod a+x /usr/bin/javac 
sudo chmod a+x /usr/bin/javaws 
sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_91/ 
sudo update-alternatives --config java 

son konuttan sonra başka alternatif java yok ise hata verebilir. Var ise şu komutlar ile de diğerleri için de yapılır.

sudo update-alternatives --config javac
sudo update-alternatives --config javaws

java -version komutu ile kontrol edilebilir.

Sistemi temizlemek;

Maven Yüklemek;

MySql Server Yüklemek;

Mysql tablo yedeklemek;

Veritabanındaki bir şemayı ve içindeki bütün tabloları yedeklemek için; mysqldump -u root -p0503 fav

komutu kullanılabilir. Burada şifre -p parametresi ile şifre arasında boşluk bulunmamalıdır.”fav” ise şemanın adıdır.

Bu komut ekrana basar, günün tarihi ile zipli bir şekilde kaydetmek için; mysqldump -u root -p05031 fav | gzip > /home/chi/database_date '+\%d-\%m-\%Y'.sql.gz

komutu kullanılır. Buradaki date '+%d-%m-%Y' komutu günün tarihi ile dosyayı kaydetmek içindir. Cron ile bunu hergün yapabiliriz, cron yazısına bakınız. (% işareti hataya sebeiyet veriyor. Bu sebepten backslash ile escape ettik.)

Cron , zamanlanmış görev oluşturmak;

/etc/crontab dosyasını aç. İçine şu satırı ekle; 15 2 * * * root mysqldump -u root vs vs… Burada ilk 5 parametre minute, hour, day of month, month, day of week dir. * ise any anlamına geliyor. Yukarıdaki örnek her gün gece 2:15 o komutu çalıştır demek. Sonraki root ise hangi kullanıcı ile bu komutun çalıştırılacağını belirler. Sonraki ise komutun kendisidir. /etc/init.d/cron restart komutu ile cron tekrar başlatılır ve değişiklikler çalışır.

Crontab -e komutu ile kullanıcıya ait görevleri görebiliriz.

Escaping backslash () ile yapılır.

Mesela her gece mysql veritabanında fav şeması yedeğini almak için aşağıdakini kullandım. mysqldump -u root -pXXX fav | gzip > /home/chi/etc/dbBackUp/database_date '+\%d-\%m-\%Y'.sql.gz

Diskteki boş alanı görmek için;

df -h

diskleri görmek için; lsblk

Bir servisi yeniden başlatmak;

sudo systemctl restart tomcat

Kullanıcıyı bir gruba eklemek;

sudo usermod -a -G tomcat chi sudo usermod -a -G groupName usrName

Ubuntu teması değiştirme;

sudo apt-get install unity-tweak-tool
unity-tweak-tool

programını kullanarak “Theme” başlığı altında temayı değiştirebilirsin. Numix olan güzel olmuş. GNOME arayüzü kullanıyorsan ise gnome-twek-tool kullanabilirsin.

Değişiklikten sonra terminali renklendirmek istersen ise;

gedit ~/.bashrc 

içine en son satıra şunu ekle.
PS1='\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\] '

source ~/.bashrc

Icon teması değiştirmek için ise Numix in önce icon setini yüklüyoruz.

sudo add-apt-repository ppa:numix/ppa
sudo apt-get update
sudo apt-get install numix-gtk-theme numix-icon-theme-circle

ve yukardaki tweak tool ile “Icon” yazan kısımdan Numix çıkacak ve onu seçebiliriz artık.

Dosya sahipliği değiştirmek

Bir klasörü ve içindeki bütün dosyaların sahipliğini başka bir kullanıcıya devretmek için;

sudo chown -R tomcat:tomcat .

Komutu kullanılır. -R parametresi recursive için, ilk tomcat kullanıcı ikinci tomcat ise grup parametresidir.

Dosya yetkileri değiştirmek

sudo chmod -R 777 14subat

Sistemin “Enviroment Variables” görüntülemek;

Auto start-up

Kullanıcı login olduğunda otomatik bir program çalıştırmak için; Dash’i açıp “Startup Applications” yaz. Buradan istediğin programı ekleyebilirsin. Bu ekran arka planda ~/config/autostart klasörü içine programAdi.desktop isimli bir dosya yaratmaktadır.

Kullanıcının yüklediği programlar;

İki yolu vardır. Birincisi ubuntu software center da “installed” kısmında bir kısmını bulabiliriz. İkinci yöntem ise şu komutlardır;

var/log içinde kaç adet zip varsa o kadar bu komutu koştururuz.

Wget ile bir klasör çekmek;

wget -m -np -c --no-check-certificate -R "index.html*" "https://theswissbay.ch/pdf/Gentoomen%20Library/Programming"

Wireless networkleri listeleme;

sudo iwlist wlan0 scan

cURL komutu;

curl komutu desteklediği bazı protokoller ile data transferi yapmaya yarar. Bunu yaparken libcurl kütüphanesini kullanır. Wget e benzer fakat ikisinin de olumlu ve olumsuz tarafları vardır. HTTP POST isteği yapılabilir, TLS desteği vardır, HTTP cookie leri gönderilebilir ve HTTP auth yapılabilir.

Docker Yüklemek;

Önce Docker reposunu repolara ekliyoruz ve ap-get install ile kuruyoruz.

  1. Repoya eklemek;
    • sudo apt-get update
    • sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    • curl -fsSL https://download.docker.com/linux/ubuntu/gpg sudo apt-key add -
    • sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
  2. Docker kurmak;
    • sudo apt-get update
    • sudo apt-get install docker-ce
  3. Docker test etmek için;
    • sudo docker run hello-world
  4. uninstall etmek için;
    • sudo apt-get purge docker-ce komutu, fakat bu komut imageları silmediği için,
    • sudo rm -rf /var/lib/docker komutu ile images, containers, and volumes silinir.

Her seferinde sudo kelimesini kullanmamak için; kullanıcıyı kurulumla gelen docker grubuna eklemeliyiz.

Kullanıcıyı yeni bir gruba eklemek; Bir kullanıcının grupları id komutuyla görüntülenir;

id -nG Kullanıcını yeni bir gruba eklemek için ise;

sudo usermod -aG docker chi docker grup adı, chi user adıdır. Parametre ise kullanıcının hali hazırdaki gruplarına append et demektir.

Docker Compose Yüklemek;

Önce yukarıdaki gibi docker’ı yüklüyoruz. Docker kurulumu bittikten sonra;

  1. Önce docker compose son sürümü şu adresten kontrol edilir. https://github.com/docker/compose/releases

  2. Docker kurmak; Aşağıdaki komutta sürüm numarası son sürüm ile değiştirilir ve komut çalıştırılarak localimize compose çalıştırılabilir dosyası download edilir.
    • sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-‘uname -s’-‘uname -m’ -o /usr/local/bin/docker-compose

    indirilen dosya çalıştırılabilir yapılır.

    • sudo chmod +x /usr/local/bin/docker-compose
  3. Docker compose test etmek için;
    • docker-compose –version
  4. Unistall etmek için sadece dosyayı sil, o kadar; sudo rm /usr/local/bin/docker-compose

Sistem bilgileri, versiyon, sürüm;

Docker Komutları;

Burada kaldım, diğer komutlar devam ediyor. https://www.tutorialspoint.com/docker/docker_working_with_containers.htm

Docker wildfly örneği;

Dockerfile’ımızı yazalım;

FROM wildfly
ADD jsf.war /opt/jboss/wildfly/standalone/deployments/
USER jboss
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug"]

Önce Dockerfile dosyamızdan imajı derleriz.

İmajımızdan yeni bir container oluşturup çalıştırırız.

Docker ile WAS çalıştırmak;

Önce docker imajını docker hub dan bulup çekeriz, birçok versiyon var, benimki 11 olduğu için 11 versiyonunu çekeceğim. Bu aşamada was imajını internetten indirecektir.

Buradaki –name parametresi container’a kısa bir isim vermek için, -h ise hostname’i set etmek için, -d ise konsolu arka planda deattach mode da kullanılıyor. Artık sunucumuz hazırdır. Burada profile tag’ı önceden ibm tarafından hazırlanmış default bir profil olduğunu belirtmek için kullanılıyor. Ardından bu profile ait “wsadmin” kullanıcısı şifresini bulmamız gerekiyor.

komutu ile wsadmin şifresini öğreniyoruz ve test etmek için https://localhost:9043/ibm/console/login.do?action=secure adresine gidip login oluyoruz. Sunucu loglarını görmek için;

Docker container içine girmek için;

diyerek sunucumuz içinde gezebilir, onun lokalindeki farklı sunucuda ayar yapabiliriz. Burada was programlarına

klasöründen ulaşabiliriz. Sunucu içinde iken wsadmin şifresini değiştirmek için, şu komut ile admin consola girilir,

Ardından şu iki komut ile şifre değiştirilir.

	$AdminTask changeFileRegistryAccountPassword {-userId wsadmin -password wsadmin}
	$AdminConfig save

Sunucuyu başlatma ve durdurma için ise çeşitli yollar mevcuttur.

docker stop --time=60 was
docker start was
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startNode.sh

Normalde ./startServer.sh server1 ve ./stopServer.sh server1 ile yapılıyor?

Şu Dockerfile ile kolayca yapabiliriz;

FROM ibmcom/websphere-traditional:profile
COPY Sample1.war /tmp/
RUN wsadmin.sh -lang jython -conntype NONE -c "AdminApp.install('/tmp/Sample1.war', '[ -appname Sample1 -contextroot /Sample1 -MapWebModToVH [[ Sample1.war Sample1.war,WEB-INF/web.xml default_host]]]')"

Docker ile db2

docker run -itd –	name db2 -e DBNAME=testdb -v ~/:/database -e DB2INST1_PASSWORD=password -e LICENSE=accept -p 50000:50000 --privileged=true ibmcom/db2


database 	:	testdb
username	:	db2inst1
password	:	password

Bilgisayarı yeniden başlatınca durur DB. O yüzden önce duran container’ı bul, sonra başlat, dosya sistemine yazdığı için kaldığı yerden 2 dakikada açılıyor.

docker ps -a
docker start 066a3430a997
docker logs db2

Docker compose kullanımı

compose ile birden fazla image ile çalışabilir ve bunları tek seferde yönetip, aralarında network kurabliriz. Compose çalışmak için “docker-compose.yml” veya “docker-compose.yaml” dosyasını arar. Aşağıda örneği vardır;

my-test: image: hello-world

İlk satır container’ımızın ismidir, ikinci satır ise container içindeki imajlarımız. Bu dosyayı kaydettiğimiz klasörde şu komutu vererek container’ı başlatabiliriz. docker-compose up

Çalıştırdıktan sonra çalışan servisleri görüntülemek için yaml dosyamızın bulunduğu dizinde; docker-compose ps

Yaml içindeki bütün servisleri silmek için; docker-compose down docker-compose down –volumes (Volume lerle birlikte sil)

Örnek bir docker-compose dosyası;


version: '3.3'

services:
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress

  wordpress:
    image: wordpress
    restart: always
    volumes:
      - ./wp_data:/var/www/html
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
    depends_on:
       - db

volumes:
    db_data:
    wp_data:

Açıklamaları ise; In the first line, we are specifying the Compose file version. There are several different versions of the Compose file format with support for specific Docker releases.

Next, we are defining two services, db and wordpress. Each service runs one image and it will create a separate container when docker-compose is run.

The db service:

The wordpress service:

Klasör boyutu

sudo du -hs /var/lib/docker

CA eklemek

sudo mkdir /usr/share/ca-certificates/extra
sudo cp Proxy.crt /usr/share/ca-certificates/extra/Proxy.crt
sudo dpkg-reconfigure ca-certificates

veya

sudo cp ROOTCA /usr/local/share/ca-certificates/rootca.crt
sudo update-ca-certificates

Test etmek için;

openssl s_client -showcerts -connect localhost:7000

Burada s_client proxy kullanıcı adı ve şifresi set etmeyi desteklemiyor, test edebilmek için proxytunnel kullandım.

sudo apt-get install proxytunnel
proxytunnel -p proxy.company.intra:80 -P user:pass -d www.google.com:443 -a 7000

Proxy tunnel google’a ulaşmak için localhost da 7000. porttan bana burayı sundu. Bende sadece localhost daki 7000. porta bağlandım.

Bu sırada kullandığım crt dosyasının binary olduğunu anladım. .crt .pem dosyaları birbiri ile uyumludur. İçinde Base64 olarak kodlanmış —BEGIN CERTIFICATE— ile başlayan sertifikalar bulunur. (cat Proxy.crt ile içeriğini görebilirsin.) Bunu base64 ile kodlanmış tipik bir sertifikaya çevirmek için;

openssl x509 -inform DER -in Proxy.crt -out proxy.pem -outform PEM

En sonunda chrome için browser içindeki CA ekleme kısmında sertifikayı ekledim ve çözdüm!

Proxy ayarlamak

Enviroment variables’a konabilir. Önce şu komutla kontrol edebilirsin,

env | grep proxy

export ile değişken set edebiliriz. Fakat bu komutu çalıştırdığımız shell için geçerli olur, Sonra her pc açılışında otomatik olarak bu değişkenlerin set edilmesi için aşağıdaki dosyaya şu 3 satır eklenebilir.

gedit ~/.bashrc

export http_proxy=proxy.company.intra:80
export https_proxy=proxy.company.intra:80
export no_proxy=localhost,127.0.0.1,*.company.intra

Burada kullanıcı adı şifre notasyonu desteklenmiyor. Buna dikkat et. Bu dosyayı aslında proxy ayarlarını girince OS kendi değiştiriyor!

Birde şöyle bir proje varmış; http://ntlmaps.sourceforge.net/

Bütün kullanıcılar için;

sudo gedit /etc/environment

export http_proxy=http://user:xxx@proxy.company.intra:80
export https_proxy=http://user:xxx@proxy.company.intra:80
export no_proxy=localhost,127.0.0.1,*.company.intra

Software updater için;

sudo gedit /etc/apt/apt.conf.d/proxy.conf dosyası içine aşağıdaki satırları ekle;

Acquire::http::Proxy "http://user:xxxx@proxy.company.intra:80";
Acquire::https::Proxy "http://user:xxxx@proxy.company.intra:80";
Acquire::no_proxy::Proxy "localhost,127.0.0.1,*.company.intra";

Chrome için;

Chrome proxy için sistem proxy’sini kullanıyor. dikkat etmen gereken https proxy de set etmeyi unutma. Settings - Network - Proxy Bu şekilde aşağıda anlatılan ayarlara gerek kalmıyor!

Chrome çalıştırılabilir dosyası açılırken parametre olarak proxy’yi geçtim. Şu şekilde otomatize edebilirsin. (google-chrome-stable –proxy-server=”proxy.company.intra:80”)

sudo gedit /usr/share/applications/google-chrome.desktop

içinde aşağıdaki satır sonuna proxy’yi ekle.

Exec=/usr/bin/google-chrome-stable %U –proxy-server=”proxy.company.intra:80”

Chrome içinden de bunu yapabilirdim sanırım!

wget dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_83.0.4103.97-1_amd64.deb

Samba bağlanmak;

sudo apt install smbclient
smbclient -W DOMAIN -U userA -L //dosyalar

En kolayı Nautilus dosya gezgini içinden, “Other Locations” tıklayıp, server adresi kısmına

smb://dosyalar
smb://10.131.1.5

yazarak ulaşmaktır. Burada kullanıcı, domain bilgilerini yukardaki gibi gir.

Packet Trace;

eth1 in 80. porta yapılan TCP isteklerini capture et.

sudo tcpdump -ni eth1 tcp port 80
gsettings set org.gnome.system.proxy.http authentication-password 'xxx'
gsettings set org.gnome.system.proxy.http authentication-user 'userA'
gsettings set org.gnome.system.proxy.http use-authentication true

Kısayol oluşturmak;

Program executable ve iconunu bul ve path lerini not al. Sonra kısayol dosyasınu aşağıdaki gibi oluştur.

gedit ~/Desktop/Eclipse.desktop

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/snap/bin/skype
Name=Skype
Comment=Skype
Icon=/home/dev/Software/eclipse-jee-2020-03-R-incubation-linux-gtk-x86_64/eclipse/.icon.xpm

Masaüstündeki simgeye sağ tıkla ve “Allow Launching” de. Bu kadar

SVN

Linux da SVN yüklemek için jar yetmiyor, işletim sistemine şunları yükle;

sudo apt-get install subversion
sudo apt-get install libsvn-java

Eclipse plug in yukledikten sonra ise eclipse.ini dosyasına şunu göster;

-vmargs dan sonra

-Djava.library.path=/usr/lib/jni

Buradaki path i şu komutla bul.

sudo find / -name “libsvnjavahl-1.so”

bu yöntem ubuntuda problem çıkardı, onun yerine subversive yükledim sorun çözüldü!