Sudo ile çalıştırıldığında neden ulimit çalışmıyor?


Yanıtlar:


10

ulimitkabuk / işleme özgüdür. Atla sudo.

$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384

sudoGeçtiğimde hata vermediğim için şaşırdım ulimit; genellikle harici bir ikiliye ihtiyaç duyar, ancak ulimitbir kabuk yerleşiktir.
amfetamachine

@amphetamachine Kontrol edin which ulimit. Bu konuda şaşırtıcı bir şey yok.
Daniel Beck

Bu cevap, bir gerçeklik parçasına dayansa bile, korkunç derecede yanıltıcı ve yararsızdır.
hmijail

3

Daniel Beck'in cevabı tüm gerçeği söylemiyor (aslında el çabukluğu) ve aslında "sudo ulimit" yapması gereken insanlara yardım etmiyor.

Problem şu

  • ulimit yumuşak ve sert sınırlara sahiptir
  • Sabit sınırı belirledikten sonra, daha yüksek bir değere ayarlamak için süper kullanıcı olmanız gerekir
  • sudo yeni bir mermi başlatır; çıktıktan sonra eski ulimitinize geri döndünüz!

Detaylı açıklama

Daniel'in örneği sadece çok özel bir durumda (neyse ki varsayılan olan) çalışır.

counterexample:

$ ulimit -s 8191              # set both hard and soft limits
$ ulimit -s                   # show current soft limit
8191
$ ulimit -s 16384             # set both hard and soft limits
-bash: ulimit: stack size: cannot modify limit: Operation not permitted

Böylece, limiti ile ayarlarsınız, ulimit -sbu da gidip hem yumuşak hem de sert limitleri ayarlar. Şimdi daha yükseğe ayarlamanız engellendi.
Bu noktada denemeyi düşünebilirsiniz sudo; ama Daniel'in yazdıkları yüzünden işe yaramayacak.

$ sudo ulimit -s 16384        # maybe with sudo?
$ ulimit -s
8191
$

Burada olan, sudokoştuğu yerde yeni bir mermi başlatması ulimit; ve THAT kabuğunda yeni ulimit kuruldu. Ama sonra o kabuk işini bitirdi, yıkıldı ve şimdi önceki ulimitiyle bir önceki kabuğuna geri döndün.

Kanıt:

$ ulimit -s 8191
$ ulimit -s
8191
$ sudo bash
# ulimit -s
8191
# ulimit -s 16384
# ulimit -s                           # It worked!
16384
# exit
exit
$ ulimit -s                           # ... but now we're back to the old ulimit.
8191
$

Peki Daniel'in örneği tam olarak neden işe yaradı? Ulimit'in varsayılan sert ve yumuşak sınırları nedeniyle, yumuşak sınırı sert olana zorlayabilir. Hile göstermek için yavaş çekimde yapabiliriz:

$ ulimit -Ss                 # show the Soft limit
8192
$ ulimit -Hs                 # show the Hard limit
65532
$ ulimit -s                  # by default, shows the Soft limit
8192
$ ulimit -s 16384            # set both the Soft and Hard limit
$ ulimit -s                  # shows the Soft limit
16384
$ ulimit -Hs                 # but, gotcha! the Hard limit has also been set
16384
$ ulimit -s 16385            # so now we can't go higher
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
$

Özetle: Eğer zor limitinizi belirlerseniz ve yukarı itmek istiyorsanız , o kabukta şansınız kalmaz , ... süper kullanıcı olarak kalmazsanız veya daha sonra ayrıcalıkları bırakmak için biraz büyü kullanmazsanız.

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.