28 Eylül 2016 Çarşamba

umask komutu

Giriş
umask uygulamadan çalıştırılan mkdir() çağrısına etki eder ve verilen hakların bir kısmını siler.

umask komut satırından çalıştırılan chmod çağrısına etki eder ve verilen hakların bir kısmını siler.
Nedense uygulamadan çalıştırılan chmod() çağrısına etki etmiyor.

Benim bilgisayarımda umask yazınca terminalde çıktı olarak "002" alıyorum.

umask 022 olsun. Şu kodu çalıştırılalım
#include <sys/stat.h>
#include <sys/types.h>

int main () {

  mkdir("/tmp/mkdir-test", 0777);
  return 0;

}
stat yaparsak çıktı olarak şunu alırız.
# stat /tmp/mkdir-test
...
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
...
Çözüm 1 - umask çağrısı
Şöyle yaparız.
mode_t old_mask = umask(0);
mkdir("/tmp/mkdir-test", 0777);
umask(old_mask);
Çözüm 2 - chmod çağrısı
Şöyle yaparız.
const char *dirname = "/tmp/mkdir-test";
if (mkdir(dirname, 0777) == 0)
    chmod(dirname, 0777);

24 Eylül 2016 Cumartesi

dev komutu

-h seçeneği
human anlamına gelir. Büyüklükleri okunabilir halde gösterir. Şöyle yaparız.
# df -h /dev/shm/
Filesystem Size Used Avail Use% Mounted on
tmpfs      1.1G 732K 1.1G   1% /dev/shm



22 Eylül 2016 Perşembe

ifconfig komutu

Giriş
ipconfig Windows'ta bulunur. Linux'taki karşılığı ise ifconfig.

Açıklaması şöyle.
ip command is more versatile and more efficient than ifconfig because it uses netlink sockets rather than ioctl system calls.
ip route komutu
ip addr komutu

yazılarına bakabilirsiniz.

IFF_UP (NIC faal) vs IFF_RUNNING (kablo takılı)
What is the difference between IFF_UP and IFF_RUNNING? sorusunda IFF_UP ile ethernet ağ bağdaştırıcısının faal hale olduğu, IFF_RUNNING ile de kablonun takılı olduğunu anlama imkanı var diye açıklanmış.

netmask seçeneği - IP Adresini Değiştirmek
Eth0 arayüzüne 192.168.0.1 ip adresini vermek isteyelim. Şöyle yaparız
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
down seçeneği
Şöyle yaparız.
ifconfig eth0 down
Benzer şeyi ip komutu ile şöyle yaparız
ip link set eth0 down
mode seçeneği
Arayüzü modunu değiştirmek için şöyle yaparız
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode monitor
sudo ifconfig wlan0 up
up seçeneği
Şöyle yaparız.
ifconfig wlan0 up


21 Eylül 2016 Çarşamba

localectl komutu

status seçeneği
Çıktı olarak şuna benzer bir şey alırız. timezone locale'den bağımsızdır.
System Locale: LANG=en_GB.UTF-8
               LC_NUMERIC=sv_SE.UTF-8
               LC_TIME=sv_SE.UTF-8
               LC_MONETARY=sv_SE.UTF-8
               LC_PAPER=sv_SE.UTF-8
               LC_MEASUREMENT=sv_SE.UTF-8
     VC Keymap: us
    X11 Layout:us


chkconfig komutu - Servisleri Kontrol Eder

Giriş
chkconfig komutu yerini systemctl komutuna bırakıyor.

--add seçeneği
Şöyle yaparız.
chkconfig --add iptables
--del seçeneği
Şöyle yaparız.
chkconfig --del iptables
--list seçeneği
Şöyle yaparız.
chkconfig --list
on seçeneği
Bir servisin sistem açılırken otomatik başlaması için şöyle yaparız.
chkconfig servisadı on
Örnek
Şöyle yaparız.
chkconfig ntpd on

8 Eylül 2016 Perşembe

setcap komutu

Giriş
setcap komutu ile belirtilen ayarlar dosya ile birlikte saklanıyor. Yani kalıcılar. Açıklaması şöyle
Since kernel 2.6.24, the kernel supports associating capability sets with an executable file using setcap(8). The file capability sets are stored in an extended attribute (see setxattr(2)) named security.capability.
cap_net_bind
Uygulamanın privileged port'lara bağlanabilmesini sağlar. Açıklaması şöyle
... CAP_NET_BIND_SERVICE which is about binding to a privileged port (<1024).
Açıklaması şöyle. Yani bu imtiyaz ile artık uygulamanın root olmasına gerek yok
Nowadays, users are recommended to set CAP_NET_BIND_SERVICE on the server binary and avoid root altogether
Açıklaması şöyle. Privileged port üst sınırı değiştirilebilir.
The Linux kernel tuning parameter net.ipv4.ip_unprivileged_port_start defines which ports are privileged. All ports between 0 and net.ipv4.ip_unprivileged_port_start are privileged.

Privileged ports can only used by processes either started by the root user or with root privileges or by processes that are assigned the capability CAP_NET_BIND_SERVICE with for example sudo setcap cap_net_bind_service=ep /path/bin/application

All other ports are unprivileged and can be used by any user, as longs the ports are not already in use.
Örnek
Şöyle yaparız
sudo /sbin/setcap 'cap_net_bind_service=ep' /usr/lib/jvm/java-8-openjdk/jre/bin/java
Örnek
Şöyle yaparız
setcap 'cap_net_bind_service=+ep' /path/to/program
cap_net_raw
Şöyle yaparız.
setcap cap_net_raw=eip myapp
cap_sys_chroot
Şöyle yaparız
sudo setcap cap_sys_chroot+ep /usr/sbin/chroot 
cap_sys_nice
Şöyle yaparız.
setcap cap_sys_nice myapp

6 Eylül 2016 Salı

hostname komutu

Giriş
Kernel parametresini değiştirir. Açıklaması şöyle. hostnamectl komutundan farklıdır.
This does not depend on systemd (unlike hostnamectl which requires systemd-hostnamed) or any other non-standard tools, and often (especially in shellscript-init systems) is how the initial hostname was set in the first place.
Örnek
Şöyle yaparız.
hostname NEWNAME
Şu komutlara denk gelir.
sysctl kernel.hostname=NEWNAME

echo NEWNAME > /proc/sys/kernel/hostname
-f seçeneği
Fully Qualified Doman Name'i gösterir. Sanırım /etc/hostname dosyasını okuyor. 
Örnek
Şöyle yaparız.
hostname -f
Çıktı olarak şunu alırız
acelya
Eğer hata varsa şunu çıktı olarak şunu alırız.
hostname: Name or service not known
Örnek
Şöyle yaparız
hostname --fqdn
hostname: Name or service not known
-s seçeneği
Short çıktı verir
Örnek
Şöyle yaparız
case $(hostname -s) in
  kafka[0-9]*|mngkafka[0-9]*)
    /tmp/run.sh
esac

printk

Giriş
Şu satırı dahil ederiz.
#include <linux/kernel.h>
Şöyle yaparız.
printk(KERN_ALERT "Hello World!!!\n");