Bir sürecin sahibi olabilir mi? Bunun anlamı ne?


9

Bir işlemin sahibini pskomutunu kullanarak belirleyebiliriz . Bu, diğer kullanıcıların bu işlemi çalıştıramayacağı / öldüremeyeceği / sürdüremeyeceği anlamına mı geliyor?

Yanıtlar:


18

Okuma kimlik bilgileri (7) , çatal (2) , execve (2) . Çatal sistem çağrısı süreç oluşturur yoludur (bugün, forkçoğunlukla birlikte uygulandığı klon (2) ancak bir uygulama ayrıntı olarak görebiliriz). Exec sistem çağrısı yoludur çalıştırılabilir programlar başlatılır. Her şeyin bazı sistem çağrılarıyla ( sistem çağrılarında (2) listelenmiştir) bazı işlemlerden yapıldığını unutmayın . İlk işlem ( init veya systemd ) çekirdek tarafından önyükleme sırasında sihirli bir şekilde başlatıldı. Çatalla başka işlemler başlatılmıştır (2). Modern Linux çekirdekleri bazen - ancak nadiren - sihirli bir şekilde birkaç özel işlemi (örneğin /sbin/hotplug) veya çekirdek iş parçacıklarını (örn. kworker, kswapd....) başlatır .

Yani evet, her işlemin (ve her dosyanın) bir sahibi (teknik olarak uid , küçük bir negatif olmayan sayı) ve grubu (gid) vardır. 0 kullanıcı kimliği kök içindir ve ek izinlere sahiptir.

Setuid (ve setreuid (2) ...) hakkında da okuyun . Zor.

diğer sahibin bu işlemi yapamayacağı anlamına mı geliyor?

Bir işlem zaten çalışıyor (ancak boşta veya beklemede olabilir), bu yüzden kimse tekrar çalıştıramaz. Bir işlemi (dinamik bir şey) içinde çalışan programla ( genellikle ELF biçimindeki yürütülebilir bir dosya ) karıştırmayın.

Belirli bir program (örn. /bin/bash) Birkaç işlemde yürütülebilir . Birçok yürütülebilir dosya (belirli bir anda) bunları çalıştıran herhangi bir işlem yapmadan diskinizde kalır.

Linux'ta, proc (5) çekirdeğin süreçlerin durumu hakkında sorgulamak için çok yararlıdır. Örnekleri deneyin cat /proc/$$/statusve cat /proc/self/maps. Ayrıca bkz. Pgrep (1) , ps (1) , üst (1) .

Her işlemin kendi sanal adres alanı , kendi dosya tanımlayıcı tablosu, kendi çalışma dizini (ve genellikle birkaç iş parçacığı , bkz. Pthreads (7) ) vb.

diğer sahiplerin bu süreci çalıştıramayacağı / öldüremeyeceği / sürdüremeyeceği anlamına mı geliyor?

Bir işlemi yürütmek hiç mantıklı değil ( zaten çalışıyor). Ancak, pid 1234 sürecinin yürütülebilir olarak kullanılabilir /proc/1234/exesembolik bağ ve sizin için bu kullanabilir execve (2) - ancak muhtemelen olmamalı -. İçin izin kuralları execvegeçerlidir.

Bir işlemi öldürmek (2) için genellikle aynı kullanıcı adına sahip olmalısınız. Ancak, belgeler şunları söyler:

  For a process to have permission to send a signal, it must either be
   privileged (under Linux: have the CAP_KILL capability in the user
   namespace of the target process), or the real or effective user ID of
   the sending process must equal the real or saved set-user-ID of the
   target process.  In the case of SIGCONT, it suffices when the sending
   and receiving processes belong to the same session. 

İçin durdurma bir işlem, kullanımı SIGSTOP(veya SIGTSTPkullanılabilir) sinyali öldürücü (2) . Bkz. Sinyal (7) .

Durdurulmuş bir işleme devam etmek için SIGCONTsinyali kullanın .


4

Sahip genellikle bu işlemi başlatan kullanıcıdır. Komut diğer kullanıcılar tarafından yürütülebilir, ancak bu farklı bir işlem olabilir.

diğer sahibin bu işlemi yapamayacağı anlamına mı geliyor?

Başka sahibi yok. Programları (yürütülebilir dosyalar) ve işlemleri (çalışan programlar) karıştırmayın.

Bu, diğer sahiplerin bu işlemi çalıştıramayacağı / öldüremeyeceği / sürdüremeyeceği anlamına mı geliyor?

Tek sahip zaten süreci başlattı. Sahipleri değil, diğer kullanıcıları kastediyorsanız , bu değişir.

Kök, yani uid0'a eşit bir kullanıcı tam güce sahiptir. Aynı şeyi paylaşan diğer kullanıcılar uid, işletim sistemi açısından aynı kullanıcıdır, bu nedenle işlem üzerinde de tam güce sahiptirler.

Farklı bir kullanıcı kimliği olan kullanıcılar, sahip veya kök ayrıcalığına sudoveya benzer bir komutla geçmelerine izin verilmedikçe veya daha az bir ölçüde söz konusu işlemle ilgili olmaları durumunda işlemi öldüremez / durduramaz / sürdüremez. onların hiyerarşilerinden.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.