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ı? –
: * 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. –