Run0, Systemd tabanlı Linux dağıtımları için yeni ve yenilikçi bir ayrıcalık yükseltme programıdır. Sudo ve doas gibi geleneksel yükseltme uygulamalarına hafif ve “yapılandırmasız” bir alternatif sunar. Burada size Linux sisteminiz için komutları ilerletmek amacıyla Run0’ı kullanmanın temellerini gösteriyoruz.
Programları Farklı Bir Kullanıcı Olarak Çalıştırma
Ayrıcalık yükseltme uygulamalarının en yaygın kullanımlarından biri komutları root kullanıcı olarak çalıştırmaktır. Bu bakımdan Run0’da root kullanıcıya dokunmak, çalıştırmak istediğiniz komutun önüne run0’ın eklenmesini gerektirir. Örneğin, aşağıdakiler bir dizinde yalnızca root tarafından erişilebilen yeni bir klasör oluşturur:
run0 mkdir /etc/maketecheasier
Bu, bir CLI şifre istemi veya mevcut kullanıcınızın şifresini isteyen küçük bir GUI penceresi açacaktır.
Sudo ve doas’a benzer şekilde Run0 da komutları çalıştırırken root olmayan bir kullanıcıya geçiş yapabilir. Bunu yapmak için –user bayrağını ve ardından komutu çalıştırmak istediğiniz kullanıcının adını ekleyin:
run0 --user=alice /home/alice/alice-program.sh
Geçiş yaptığınız kullanıcının şifresini girin ve Enter tuşuna basın.
Farklı Bir Kullanıcının Kabuğuna Nasıl Geçilir?
Ayrıcalık yükseltme uygulamasının bir diğer önemli kısmı, kullanıcıyı bir root kabuğa bırakma yeteneğidir. Bu size root kullanıcı olarak sisteminizle etkileşim kurma ve CLI’den daha karmaşık komutlar çalıştırma yeteneği verir.
Run0’da bunu herhangi bir ek argüman olmadan programı çalıştırarak yapabilirsiniz.
Programların root olarak çalıştırılmasında olduğu gibi, belirli bir kullanıcı olarak bir kabuk oturumu başlatmak için Run0’ı –user bayrağıyla kullanmak da mümkündür:
run0 --user=alice
Üstelik run0, root olmayan kullanıcılar için geçici grup izinleriyle kabuk oturumları oluşturmanıza olanak tanır. Belirli bir kullanıcı ve grubun arkasında kilitlenen klasörlere root’a düşmeden erişmek istiyorsanız bu kullanışlıdır.
Örneğin, aşağıdaki komut “alice” kullanıcısına “www-data” grubuna geçici erişim izni verir:
run0 --user=alice --group=www-data
Yeni bir kabuk oturumuna geçerken dizin değişikliğini zorlamak için –chdir bayrağını da kullanabilirsiniz:
run0 --user=alice --chdir=/home/alice/Documents
Mevcut Run0 Oturumu Nasıl Özelleştirilir
Run0’ın en büyük avantajı, süper kullanıcı işlemlerini gerçekleştirmek için setuid (SUID) kullanmamasıdır. Bunun yerine, komutları root olarak çalıştırmak için yalıtılmış psuedo-TTY’ler oluşturan systemd-run’a dayanır.
Bu yaklaşımın bir sonucu, Systemd’nin her Run0 kabuğunu hizmet yöneticisi altında çalışan ayrı bir birim olarak ele almasıdır. Bu, geleneksel ayrıcalık yükseltme uygulamalarının aksine, root kabuk sürecinizi özelleştirmenize olanak tanır.
Root kabuğunuza bir etiket eklemek için –unit bayrağını ve ardından kullanmak istediğiniz adı kullanın:
run0 --unit=maketecheasier
–description bayrağını ekleyerek root kabuğunuza özel bir açıklama da ekleyebilirsiniz:
run0 --unit=maketecheasier --description="hello, world!"
Systemctl kullanarak root kabuğunuzun özel adını listeleyerek ayrıntılarınızı doğru şekilde uyguladığınızdan emin olun:
systemctl list-units maketecheasier.service
Varsayılan olarak Run0, root kabuk arka planınızın rengini kırmızıya dönüştürür. Bu yararlı bir görsel gösterge olsa da, sisteminizde açık renkli bir tema kullanıyorsanız dikkat dağıtıcı olabilir.
Bunu değiştirmek için –background bayrağını ve ardından 40-49 arasında bir değeri kullanın:
run0 --unit=maketecheasier --background=42
Son olarak root kabuğunuzun “nice düzeyini” de ayarlayabilirsiniz. Bu, çekirdeğinizin diğerlerine göre sizin işleminize öncelik verip vermeyeceğini belirleyen -20 ile 19 arasında bir değerdir.
Root kabuğunuza en yüksek önceliği vermek için –nice bayrağını “-20” değeriyle kullanın:
run0 --nice=-20
Not: –nice bayrağı ayrıca bireysel Run0 komutları için de çalışır. Örneğin, Vim’i daha yüksek CPU önceliğiyle çalıştırmak için run0 –nice=-20 vim komutunu kullanabilirsiniz.
Run0 Oturumlarını Birlikte Gruplandırma
Her bir Linux root kabuğunu kişiselleştirebilmenin yanı sıra, bunları bir Systemd diliminde gruplandırmak için Run0’ı da kullanabilirsiniz. Bu, makinenizin, sisteminizin geri kalanını etkilemeden işlemlere yönelik kaynak talebini ayarlamasına olanak tanıyan özel bir yapıdır.
Farklı bir dilimde root kabuk oluşturmak için –slice bayrağını ve ardından taşımak istediğiniz dilimin adını çalıştırın:
run0 --slice=maketecheasier
Not: Yeni bir Systemd dilimi oluşturmak için –slice bayrağına yeni bir ad sağlayabilirsiniz.
Yeni oturumunuzun, içindeki işlemleri listeleyerek yeni diliminiz altında çalıştığını doğrulayın:
systemctl status maketecheasier.slice
Yeni diliminizi Run0’ın geldiği dilimle birlikte gruplandırmak için –slice-inherit bayrağını da kullanabilirsiniz. Kabuklarınızı zaten ilgili dilimlere göre grupladıysanız ve yalnızca yeni bir kabuk eklemek istiyorsanız bu kullanışlıdır:
run0 --slice=maketecheasier --slice-inherit
Run0 Kullanılarak Systemd Kapsayıcılarında Komutlar Nasıl Çalıştırılır
Systemd-nspawn, Docker’a benzer hafif Linux konteynerleri oluşturabilen ve yönetebilen özel bir programdır. Systemd paketinin bir parçası olarak, ana makinenizden nspawn konteynerlerinizdeki komutları yürütmek için Run0’ı da kullanabilirsiniz.
Sisteminizdeki mevcut Systemd-nspawn kapsayıcılarını listeleyerek başlayın:
machinectl list
Kapsayıcınızın kök dizininde bir klasör oluşturmak için aşağıdaki komutu çalıştırın:
run0 run0 --machine=maketecheasier --user=root mkdir /hello-world
Not: Şu anda Run0’da –machine bayrağıyla çalışırken ayrıcalıkları yükseltmeyi başaramayan bir hata var. Ayrıcalık yükseltmesini zorlamak için ikinci bir run0 komutu ekleyerek bunu düzeltebilirsiniz.
Run0’ı kullanarak kapsayıcınızın root kabuğuna bırakmanız da mümkündür:
run0 run0 --machine=maketecheasier --user=root
Terminal oturumunuzun ana bilgisayar adını yazdırarak artık kapsayıcınızın içinde çalıştığınızı doğrulayın:
echo $HOSTNAME
Yazının orijinalini buradan okuyabilirsiniz.