Soru Sudo olmadan bir bağlantı noktası kullanarak işlemi belirleme


Hangi işlemin (özellikle işlem kimliğinin) belirli bir bağlantı noktasını kullandığını öğrenmek istiyorum. Tek yakalama, sudo kullanmak istemiyorum, ne de root olarak giriş yaptım. Bunun için çalışmasını istediğim süreçler, süreç kimliğini bulmak istediğim aynı kullanıcı tarafından çalıştırılıyor - bu yüzden bunun basit olduğunu düşünürdüm.

Her ikisi de lsof ve netstat Sudo kullanarak çalıştırmazsam işlem kimliğini bana söylemez - bağlantı noktasının kullanılmakta olduğunu söylerler.

Ekstra içerik olarak - SSH üzerinden tüm yönetmekte olduğum bir sunucuya kadar çeşitli uygulamalar var ve ileriye doğru ters bağlantı oluşturuyorum. Bunlar ayarlandıktan sonra sunucum iletilen bağlantı noktasını kullanarak bazı işlemleri gerçekleştirir ve bağlantı kesilebilir. Belirli bağlantı noktalarını (her uygulamanın kendine ait) işleyebildiğim takdirde, bu basit bir komut dosyasıdır. Herhangi bir öneri?

Bu arada, bir Ubuntu kutusu üzerinde - ama sanırım herhangi bir çözüm çoğu Linux dağıtımında standart olacak.


9
2018-05-08 13:47


Menşei




Cevaplar:


--program netstat seçeneği size PID'leri ve kendi süreçlerinizin isimlerini gösterir. Bu seçenek var ve net araçları 1.60 netstat 1.42 içinde RHEL 6 üzerinde çalışıyor.

Doğruladım netstat -an --tcp --program Bana süreçlerimin PID'lerini gösterir.


6
2018-05-08 14:44



Bence demek istedin -an. netstat -pant ayrıca çalışır ve hatırlanması daha kolaydır. - Eduardo Ivanec
Evet, gereksiz "-" içeri girdi. Ve ben de anımsatıcıyı severim. - Paweł Brodacki
Korkarım ki bu Ubuntu üzerinde çalışmaz - bu, bazı durumlarda root içermeyen süreci göstermez - ve bir SSH ileriye doğru bu vakalardan biridir. - pat
Pawel: şimdi OP nihayet kullanım durumuyla somutlaştı (benim zincirimdeki yorumu görün), tekrar denemenizi tavsiye ediyorum. Bir CentOS 5 kutusunda yaptım (ayrıca net araçları 1.60'dan netstat 1.42) ve yaptığı gibi başarısız oluyor. Deneyimlerinizle ilgilenirim. - MadHatter


Pawel'in önerisi bana iyi görünüyor, ama alternatif olarak, ben shell1'den dinleme:

[madhatta@risby ~]$ nc -l  localhost 3456

ve işte görüyorum ki lsof shell2'den:

[madhatta@risby tmp]$ lsof -i tcp:3456
COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nc      18109 madhatta    3u  IPv4 69205153      0t0  TCP localhost.localdomain:vat (LISTEN)

Düzenle: Bir yorum yazarsın

SSH forveti farklı davranmalı -   işlemin sahibi olmasına rağmen   aynı kullanıcı listelenen göremiyorum   Çalışmıyorsam, lsof çıkışında   Kök / sudo olarak.

ama bu benim için öyle değil. Yerel bağlantı noktası 8001'i iletmek için ssh kullanmış, ssh vpn.example.com -L 8001:rt.int:80Sonra buldum:

[madhatta@risby ~]$ lsof -n -i tcp:8001
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ssh     5375 madhatta    8u  IPv6 381234      0t0  TCP [::1]:vcom-tunnel (LISTEN)
ssh     5375 madhatta    9u  IPv4 381235      0t0  TCP 127.0.0.1:vcom-tunnel (LISTEN)

Belki de bize örnek veriminizin bir kısmını gösterebilir misiniz, tercihen çok fazla redakte edilmez mi?


3
2018-05-08 14:45



SSH forvetinin farklı davranması gerektiği anlaşılıyor - süreç aynı kullanıcıya ait olsa da, hiç listelenemiyorum. lsof Ben root / sudo olarak çalıştırmadıkça çıktı. - pat
Kullanıcı olarak çalıştırıldığında iletilen bağlantı noktasında hiç bir çıkış yok. Eğer sudo ile çalıştırırsam, cevabınıza ekledikleriniz gibi çıktıyı görürüm. Vcom-tünel yerine gerçek port numarasını sadece önemli bir farkla görüyorum. - pat
Ayrıca, bu bir uzak ileri, yerel bir ileri değil - belki de bu farkın kaynağı? Yoksa uzak bir yolla mı test ettin? - pat
Uzaktan ileriye doğru "sunucu A I ssh'den B sunucusuna, sunucu x'den bağlantı noktası xxx'yi sunucu A'ya geri" kastediyorsunuz? Eğer öyleyse, neden A sunucusu netstat / lsof ile bir şey almak için bekliyorsunuz? Sunucu A'da yeni bir dinleyici bu şekilde oluşturulmaz, bu nedenle A sunucusunda hiçbir port ataması söz konusu değildir (geçici olarak kaydedilir). - MadHatter
A'dan B'ye SSH, bağlantı noktası X'den B'ye doğru C portunda (A'nın güvenlik duvarı içinde bulunan - dolayısıyla ileriye yönelik ihtiyaç), X portu için B'de lsof / netstat'ı kullanın. - pat