Neden bazı komutları sudo edemiyorum? (ör. vim)


16

Arkadaş sunucumda sudo erişimim var, centos-6.3 çalışıyorum, ancak sudo vim /var/www/html/index.htmlbir hata sudo: vim: command not foundalıyorum gibi bazı komutları çalıştırmaya çalıştığımda , ancak çalıştırabilirim sudo suve sonra vim /var/www/html/index.htmlbeklendiği gibi çalışır.

echo $PATHve sudo echo $PATHher ikisi de verim:

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jared/bin

sudo which vim bununla birlikte:

which: no vim in (/sbin:/bin:/usr/sbin:/usr/bin)

Eklemeyi denedim

export PATH=$PATH:/usr/local/bin

için /root/.bashrckullanırken hangi sorunu giderdik sudo suama sadece sudo <command>.

Nasıl sudo <command>çalışırım?


Bu kullanıcıyı Centos İşletim Sistemindeki sudo kullanıcılarına zaten eklediniz mi?
AAlvz

Yanıtlar:


18

Çalışırken sudo, birçok sistem beyaz listeye alınmamış tüm değerlerin ortamını temizleyecek ve PATH değişkenini sterilize edilmiş bir değere sıfırlayacak şekilde yapılandırılmıştır.

Sen sıra eski bulacaksınız Defaults env_resetve birkaç Defaults env_keep += "SOME_VARIABLE_NAME"içinde /etc/sudoers. Sonuncu "güvenli" PATHgeçersiz kılma Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin- belirtilirken sudoing bu davranışı kaldırmak için bu satırı silin .


sudo -VOlarak çalıştırdığınızda hangi ortam değişkeninin nasıl işlendiği yazdırılır  root.


Bu varsayılan ayarlardan kurtulmak istemiyorsanız, programları her zaman tam yollarını ( sudo /usr/local/bin/vim) kullanarak belirtebilirsiniz .

Alternatif olarak, hesabınızı izin verebilir SETENViçinde sudoersörneğin dosyada,:

%wheel  ALL=(ALL)       SETENV: ALL

Bu, ortam varsayılanlarını şu şekilde geçersiz kılmanıza izin verir: sudo PATH=$PATH which vimçünkü değişken, komut yürütülmeden önce kabuğunuz tarafından yorumlanır, bu da devralınan bir şeydir PATH(muhtemelen dahil edilmeyecektir, /sbinvb.).


Teşekkürler. Ben sahibinin sudoers dosyasını kabul edene kadar Dennis'in çalışmalarını kullanacağım.
JaredMcAteer

7
sudo echo $PATH

düşündüğünüzü yapmaz. komutu çalıştırmadan önce$PATH (sizin) kabuğunuzla değiştirilir .

İstenen davranışı gerçekleştirmek için kullanabilirsiniz sudo -i.

Gönderen adam sudo :

-Emrediyorum]

( simüle ana login ) seçeneğini belirtilen kabuk açar passwd bir giriş kabuğu olarak hedef kullanıcının (5) girişi. Oturum özgü kaynak gibi dosyaları olduğunu Bu araç .profileya da .loginkabuk tarafından okunacaktır. Bir komut belirtilirse, yürütme için kabuğa geçirilir.


1
Ben sudoers dosyasını ayarlamak için sahibi elde edene kadar bu uygun bir çözümdür.
JaredMcAteer

1

Nasıl sudo <command>çalışırım?

Yollardaki sorunu çözene kadar tam yol adı kullanın

  sudo /usr/local/bin/vim /var/www/html/index.html

5
Sana downvote edecek değilim, ama sadece çalışma asla düşkünüm etrafında sorunları yerine onları bulmaktan ve bunların giderilmesi noktasında hakkını elde.
Nicole Hamilton
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.