Benim sorum, yukarıdaki komutumu herhangi bir yerde herhangi bir değişiklik yapmadan, yani varsayılan ayarlara sahip olarak java'da yürütmek mümkün mü?
sudo -u -S pwd
Kısa cevap hayır, sudo'nun işleri şu anda olduğundan farklı yapmasını sağlamak için ayarları değiştirmeniz gerekecektir.
sudo bunun için yanlış araç olabilir. Sudo'nun kuralları, sistem yöneticilerinin ek / istenmeyen ayrıcalıklar elde etmek için kötüye kullanılması zor olan yüksek ayrıcalıklar elde etmenin bir yolunu yapılandırmasına yardımcı olmak için vardır.
Sudo'nun sizin için ne yaptığını düşünüyorsanız:
- kimliği doğrulamak için şifre ister
- ayrıcalıkları yükseltmek
- isteğe bağlı olarak başka bir kullanıcı olarak ayrıcalıklar edinin
- erişim kazanmak veya komutları çalıştırmak için sudo loglarını kullanır
Java'nızın, bu kullanıcılar veya kendiniz için şifre sağlamadan rastgele komutlar olarak rastgele komutlar çalıştırmasını istiyorsanız, esasen sudo'nun yerini alırsınız. Bu durumda, kötüye kullanımı nasıl önleyeceğiniz konusunda kendi kurallarınızı oluşturmalısınız.
Bunu yapmanın temel olarak iki yolu vardır:
- java'nızı yükseltilmiş ayrıcalıklarla çalıştırın ve dikkatle ihtiyacınız olan ayrıcalıkları alıp geri verin (bkz. setuid () seteuid () C işlev çağrıları).
- istediğiniz zaman yükseltilmiş ayrıcalıkları almak için harici bir program çalıştırın
# 1 durumunda, java programınız sudo'nun yaptığı şeyi yerine getirir ve kötüye kullanımdan korumak için kendi kurallarınızı uygulamanız gerekir.
# 2 yapmak için sudo dışında programlar var. Bir örnek https://code.google.com/archive/p/exec-wrapper/downloads adresinde bulunabilir.
Bu kullanışlı kabuk komut dosyası, başka bir komut (genellikle komut dosyası) çalıştırmak için bir C programı oluşturur. Daha sonra C programını bir ikili dosyaya derler ve o setuid kökünü işaretler veya gerçekten herhangi bir kullanıcıya setuid olabilir. (mod: 4555 ve sahip: kök)
İzin veren bir dosya sisteminde olduğunuz sürece, ikili programı çalıştırmak, ikili programın kendisine ait olan kullanıcı kimliği olarak yapılandırılmış komutu çalıştırır.