Güncel bir çekirdeğiniz varsa, hizmetleri başlatmak için kök olmayan bir kullanıcı olarak kullanmak, ancak düşük bağlantı noktalarını bağlamak gerçekten mümkündür. En basit ve en etkili yol şudur:
# setcap'cap_net_bind_service = + ep '/ yol / / programBu komutu çalıştırdıktan sonra, dosya programı CAP_NET_BIND_SERVICE işlevine sahip olacaktır.Setcap, libcap2-bin debian paketindedir.Özel işlevlere gelince, ona kendiniz başvurabilirsiniz.
Not:
1. Çekirdek sürümü en az 2.6.24'tür
2. Dosya bir komut dosyası olamaz. Başka bir deyişle, CAP_NET_BIND_SERVICE işlevi, komut dosyasında belirtilen diğer uygulamalara değil, yürütülebilir dosyanın kendisine uygulanmalıdır. Dosyaya CAP_NET_BIND_SERVICE yeteneği verilirse, bu dosyanın başka uygulamalar tarafından kötüye kullanılması güvenlik risklerine neden olabilir.
3. Program kendi paylaşılan kitaplığını ... / lib / kullanıyorsa ve Linux, setcap veya suid gibi yükseltilmiş ayrıcalıklara sahip herhangi bir programda LD_LIBRARY_PATH'yi devre dışı bırakırsa, kullanılamaz olmasına neden olur.
nginx yapılandırma dosyası, 80 numaralı bağlantı noktasında dinleme
Nginx hizmetini doğrudan kök olmayan kullanıcının altında başlatın ve başlatılamayacağını görün. Root olmayan kullanıcıların 80 numaralı bağlantı noktasını kullanma hakkına sahip olmadıklarını sor.
Setcap kullanın
Komutu kök kullanıcı altında yürütün:
#setcap cap_net_bind_service = + eipNginx hizmetini yeniden başlatın:
Not: Kullanmıyorsanız, aşağıdaki komutu kullanmanız yeterlidir:
#setcap -r dosya adıBunu incelemenin nedeni, güvenlik düzeltmesi sırasında nginx'in root ile başlatılamamasıdır.Yapılandırmayı değiştirirken, Linux'un root olmayan kullanıcıların 1024'ün altındaki portları kullanmasını kısıtladığını keşfettim. Bu yüzden bugün bir çözüm yayınlayacağım.
Devops ve DBA hakkında daha fazlasını daha sonra paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~