Doküman

Linux’ta Run0 Nasıl Kullanılır

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.

A screenshot showing the password prompt for Run0.

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.

A terminal showing the root shell from a Run0 prompt.

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
A terminal showing the Run0 prompt for a non-root user.

Ü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
A terminal showing the automatic directory switching when dropping to a different user's shell.

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
A terminal showing the custom Systemd unit's details.

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
A terminal showing the different background color in Run0.

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
A terminal highlighting the root shell with a modified nice level.

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
A terminal showing the details of the custom Systemd 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
A terminal showing a list of the available Systemd-nspawn containers.

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
A terminal showing the command to switch the container's shell prompt.

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
A terminal showing the process of switching from the local system to the Systemd-nspawn container.

 

Yazının orijinalini buradan okuyabilirsiniz.