Debian Gnu / Linux ile ilgili yetenekleri deniyorum.
/ Bin / ping komutunu şu anki çalışma dizinime kopyaladım. Beklendiği gibi çalışmıyor, başlangıçta setuid kökü idi.
Daha sonra pingimi asgari yetenekleri (root değil) vererek veriyorum sudo /sbin/setcap cap_net_raw=ep ./ping
ve pingim beklendiği gibi çalışıyor.
Sonra sudo /sbin/setcap -r ./ping
bu yeteneği iptal etmek. Şimdi beklendiği gibi çalışmıyor.
Şimdi ping'i kullanmaya çalışıyorum capsh
.
capsh
hiçbir ayrıcalık vardır, bu yüzden kök olarak çalıştırmak gerekir, ama sonra kök ve böylece diğer tüm ayrıcalıkları bırakın.
Ben de ihtiyacım olduğunu düşünüyorum secure-keep-caps
, bu belgelenmemiştir capsh
, ancak yetenek kılavuzundadır. Biraz rakam aldım /usr/include/linux/securebits.h
. Doğru görünüyorlar, çünkü çıktıların --print
bu bitlerin doğru olduğunu gösteriyor.
Saatlerdir uğraşıyorum, şimdiye kadar buna sahibim.
sudo /sbin/capsh --keep=1 --secbits=0x10 --caps="cap_net_raw+epi" == --secbits=0x10 --user=${USER} --print -- -c "./ping localhost"
Bununla birlikte ping
hatalar ping: icmp open socket: Operation not permitted
, bu özelliği olmadığında olan şeydir. Ayrıca --print
şovlar Current: =p cap_net_raw+i
, bu ihtiyacımız yok e
.
sudo /sbin/capsh --caps="cap_net_raw+epi" --print -- -c "./ping localhost"
bunu Current: = cap_net_raw+eip
doğru ayarlayacaktır , ama bizi olarak bırakır root
.
Düzenleme-1
Şimdi denedim sudo /sbin/capsh --keep=1 --secbits=0x11 --caps=cap_net_raw+epi --print -- -c "touch zz; ./ping -c1 localhost;"
Bu aşağıdakileri üretir:
touch: cannot touch `zz': Permission denied
ping: icmp open socket: Operation not permitted
İlk hata şu şekilde bekleniyor: secure-noroot: yes
İkincisi değilCurrent: = cap_net_raw+eip
Düzenleme-2
Daha ==
önce koyarsam --print
, şimdi gösterir Current: = cap_net_raw+i
, böylece önceki hatayı açıklar, ancak neden kökten çıkarken kapasitemizi kaybettiğimizi değil, bunu secure-keep-caps
düzeltmeliyim.
Düzenleme-3
Görebildiğim kadarıyla exec çağrıldığında Etkili (e) ve İzin Verilen (p) değerlerini kaybediyorum. Bu beklenir, ancak güvenli tutma kapaklarının kaybolmalarını durdurması gerektiğini düşündüm. Bir şey mi kaçırıyorum?
Düzenleme-4
Daha fazla araştırma yapıyorum ve kılavuzu tekrar okuyorum. Normalde e
ve p
yetenekler şu durumlarda kaybolur gibi görünüyor : kullanıcıdan geçiş yaptığınızda root
(veya uyguladığınızda secure-noroot
, kök kökünü normal bir kullanıcı yaptığınızda), bu geçersiz kılınabilir secure-keep-caps
; aradığınızda exec
, söyleyebildiğim kadarıyla bu bir değişmez.
Anlayabildiğim kadarıyla, bu kılavuza göre çalışıyor. Söyleyebildiğim kadarıyla yararlı bir şey yapmanın bir yolu yok capsh
. Anlayabildiğim kadarıyla, yetenekleri kullanmak için: dosya yeteneklerini kullanmak veya kullanmayan yeteneklere duyarlı bir programa sahip olmak exec
. Bu nedenle ayrıcalıklı bir paketleyici yok.
Şimdi sorum ne eksik olduğum, ne capsh
için.
Düzenleme-5
Ortam yeteneklerine bir cevap ekledim. Belki capsh
de devralınan yeteneklerle kullanılabilir, ancak yararlı olması için bunların yürütülebilir dosyada ayarlanması gerekir. Capsh'ın ortam özellikleri olmadan nasıl faydalı bir şey yapabileceğini veya miras alınan yeteneklere izin veremiyorum.
sürümleri:
capsh
paketlibcap2-bin
versiyonundan1:2.22-1.2
- edit-3'ten önce en son sürümü
capsh
aldımgit://git.debian.org/collab-maint/libcap2.git
ve kullanmaya başladım. uname -a
Linux richard-laptop 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
Kullanıcı-arazi 32bit.
capsh
ortamın yokluğunda (başlangıçta olduğu gibi) kullanımının ne olduğudur . Neyi kaçırıyorum. Bir faydası olmalı.
capsh
collab-Maint repo “son” teşekkür vermezdimcapsh
, Debian paketi hala ortam yetenekleri desteklemez. Memba 2.27 yapar.