Bazı yazılımları yükleyen bir bash komut dosyası var. Kökle çalıştırılmıyorsa mümkün olduğunca çabuk başarısız olmak istiyorum. Bunu nasıl yapabilirim?bash: komut dosyasının root tarafından çalıştırılmaması durumunda hata
cevap
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
Kaynak: http://www.cyberciti.biz/tips/shell-root-user-check-script.html
veya daha kısa tutmak için UID env: [[$ UID -ne 0]]; – zlack
@zlack $ UID, betik "sudo" üzerinden çalıştırılırsa orijinal kullanıcının UID'sini verirken David'in betiği root olarak çalıştırılır. Yaptığına bağlı olarak, David'in muhtemelen daha iyi. – pr1001
pr1001'in dediği gibi, kullanıcı sudo kullanarak betiği çalıştırıyorsa UID çalışmayacaktır, ancak EUID yalnızca iyi çalışacaktır. – Tom
bu etrafında kazma sonra, konsensüs EUID
(efektif kullanıcı kimliği) değişken ayarlanacak olarak bash id -u
kullanmaya gerek yoktur o gibi görünüyor. UID
'un aksine, EUID
, kullanıcı root
olduğunda veya sudo
kullanılarak 0
olacaktır. Görünüşe göre, bu id -u
çalışan daha etrafında 100 kat daha hızlıdır:
#!/bin/bash
if ((EUID != 0)); then
echo "You must be root to do this." 1>&2
exit 1
fi
Kaynak: Ben * genellikle * Bu saçma davranışı dikkate alacağını rağmen https://askubuntu.com/questions/30148/how-can-i-determine-whether-a-shellscript-runs-as-root-or-not
bu, Bourne kabuğunda çalışmıyor. Kesinlikle herhangi bir POSIX uyumlu çözümünüz var mı? –
- 1. Bash komut dosyasının döngü için
- 2. Bir Bash dosyasının crontab içinde root olarak çalıştırılması mümkün mü?
- 3. Bash komut dosyası eksik ']'
- 4. Bash betiği Ubuntu Bash tarafından anlaşılmadı
- 5. Bir bash komut dosyasının ortasında 'su' çalıştırabilir miyim?
- 6. powershell, hata durumunda hata ayıklayıcısını başlat
- 7. bash komut
- 8. bash: Komut
- 9. Codeception Hata durumunda bırakma
- 10. Hata durumunda geri alma ile MySQL Komut Dosyası
- 11. bash: print: komut bulunamadı
- 12. Git Bash bash: open: komut bulunamadı
- 13. Bash komut tüm ama son 5 dizinleri
- 14. Bir bash komut dosyasında, komut dosyasının çıktısının bir dosyaya yönlendirilip yönlendirilmediğini nasıl anlarım?
- 15. Bash - Senaryo hata boşluklar
- 16. Kumaş komut dosyalarını root olarak çalıştırma
- 17. Senaryonun /root/bin/whoami.sh conatining oluşturursanız
- 18. Komut dosyasından Swift komut dosyasının yolunu alın
- 19. bash takma komut
- 20. Bash komut istemi kısaltması
- 21. Bash komut bulunmazsa
- 22. Bash komut dosyası okunmadı
- 23. Kendinden Daemonizing bash komut
- 24. -bash: yo: Komut 10.11.3
- 25. JavaScript'de mevcut komut dosyasının URL'si
- 26. Jmeter komut dosyasının dizini Jmeter
- 27. Bash
- 28. PHP shell_exec Komut dosyasının bitmesini bekleyin.
- 29. Komut içeride ise bash script ifadesi
- 30. SQL'i bir bash komut dosyasından nasıl çalıştırıyorsunuz?
: * izinleri başarısız kadar çalıştıralım *; Sistem, mevcut kullanıcı olarak işlemin başarılı bir şekilde gerçekleştirilebileceği şekilde ve bu seçeneği kökünden zorlayarak, [önceden benzer varsayımlar yapmış olan komut dosyalarını düzeltmek zorunda kaldım] gibi bir sistem kurulabilir. Öte yandan, root olarak çalıştırılırsa büyük bir şişmanlık uyarısı * veya * engelleme * için çok daha fazla bir vaka. –
Sudo kullanmayı denemelisiniz. Linux yazılımı altında, normal kullanıcıların sisteme zarar verebilecek bir şey yüklemesini önlemek için root olmanız gerekir. – masterLoki
Bazılarının unutmuş olabileceği veya sudo'nun (veya diğer ayrıcalık yükseltme yöntemlerinin) farkında olamayacağı betiğini istiyor.). Başka bir şey yapmaya çalışmadan önce çalışma zamanı aklı için kontrol etmek için iyi bir uygulama. –