Vim sudo ile birlikte kullanmak güvenli midir?


25

Bu linkte açıklandığı sudogibi grafiksel bir uygulama ile kullanılması tavsiye edilmez . Buna göre, ben kullanma eğiliminde olmuşlardır ile .geditvimsudo

Son zamanlarda ~/.viminfo, Ubuntu 16.04'ün (Xenial Xerus) oldukça yeni bir kurulumunda kökündeyim, bu yüzden Vim'in bile grafik olarak kabul edilip edilmediğini veya başka bir sorunun başlatıldığını merak ettim sudo vim. Mülkiyetimi kendime değiştirdikten sonra:

sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +

ve daha sonra çalışan sudo vimben ~/.viminfo kök tarafından sahip olunamadı. Ancak, son zamanlarda kök tarafından sahiplenildiğinden eminim.

Çağrılması tavsiye edilmez sudo vimmi?



1
Ayrıca sudo olmadan vim kullanabilirsiniz ve dosyayı kaydetme konusunda, kullanabilirsiniz:w !sudo tee %
ChatterOne

Yanıtlar:


22

Evet, güvenli.

Sorun, sudo geditGUI uygulamalarının bazı dosyaları kullanmasıdır ~/.cache/dconfve yükseltildikten sonra geditbu dosyanın köküne ait olur. Eh, bu belirli dosya, GUI uygulamaları için masaüstü de dahil olmak üzere kullanıcıya özel ayarlar içeriyor, yani sistem bu ayarları okuyamıyorsa - bu kötü. IIRC bir kullanıcı belirli bir masaüstünü başlatamaz. Kullanıcının son dosya verileri recently-used.xbelde etkilenir.

Öte yandan, Vim'in bu sorunu yok. GUI ile ilgili bir veritabanı kullanmaz ve hiçbir şey koymaz recently-used.xbel. GVim de mevcut olmasına rağmen, yalnızca konsol amaçlı bir amaç için oluşturuldu. Aslında, bazı sistemlerde Vim sizin tek editör seçiminizdir. Dolayısıyla aynı sorunlara yol açmamaktan dolayı tehlikeden daha güvenlidir . Her iki durumda da hala kök olarak düzenleme yapıyorsunuz, bu nedenle yanlış düzenleme ile ilgili sorunlara neden olabilirsiniz.

Göre bu blog yayınına :

Vim'i ilk kez kullandığınızda, dosya ~/.viminfooluşturulur ve sudo vimvim'i yeni bir sisteme yükledikten sonra ilk kez kullanırsanız, izinler ~/.viminfovarsayılan kullanıcı yerine kök dizine ayarlanır.

Yazar sorunlara yol açabileceğini işaret ederken, karmaşık bir şey yok - sadece chownkendinize ait dosya.

Ayrıca bakınız:


6
Vim'in diğer kullanıcıların yönetimsel izinlerini sınırlamaya çalıştığınız çok kullanıcılı bir sistemde güvenli olmadığını unutmayın . Bir kullanıcı sudo vimkök olarak çalışan vim bir kopyasını almak için kullanabilir , ardından :!/bin/shbir kök kabuğu elde etmek için kullanabilir.
Mark

3
@Mark ve kullanıcının sadece yapmasını engelleyen sudo /bin/shnedir? Pratik olarak konuşursak, kullanıcı zaten kök erişimine sahipse, ayrıntılı hileler kullanmaları gerekmez.
Sergiy Kolodyazhnyy

7
/etc/sudoersDosyası. Yapmanıza gerek yok %wheel ALL=(ALL) ALL- sudokonfigürasyon bundan çok daha fazla nüansa izin veriyor.
Mark

1
@Mark Tamam, iyi nokta var - her sistem aynı ayarlara sahip değil.
Sergiy Kolodyazhnyy

Uhm ... Dosya olsa bile izin değişecek mi? Yönetici olmayan bir kullanıcı hesabına girdiğimi, ancak şifresini bilmediğimi varsayalım (belki bir kabuk açmayı başardım). Ben kopyalayabilirsiniz demek mu /bin/bashüzere ~/.viminfokullanıcı çalıştırmak için, o ve bekleme üzerine bir setuid koymak sudo vimo köke chowned etmiş?
ChatterOne

15

Bunu sudoeditbaşarmak için kullanmak da mümkündür ; Editörünüz sizinle birlikte çalışırken, editörünüzde dosyanın geçici bir kopyasını açar. Gönderen adam sayfası :

  1. Geçici kopyalar, sahibine ayarlanan kullanıcıya ayarlanmış olarak düzenlenecek dosyalardan yapılır.

  2. Politika tarafından belirtilen düzenleyici geçici dosyaları düzenlemek için çalıştırılır. Sudoers politikası SUDO_EDITOR, VISUALve EDITORortam değişkenlerini kullanır (bu sırayla). Hiçbiri değilse SUDO_EDITOR, VISUALya EDITORayarlanır, editör listelenen ilk program sudoers(5)seçeneği kullanılır.

  3. Değiştirilmişlerse, geçici dosyalar orijinal konumlarına geri kopyalanır ve geçici sürümler kaldırılır.

Bu vim ile iyi çalışır (genellikle yaptığım şeydir) ve senin de gedit kullanmana izin vereceğini hayal ediyorum. Orada bazı güvenlik kısıtlamaları .


4
Kök yerine kendi vim yapılandırmanızı kullanmayı tercih ediyorsanız, bu çok daha iyidir.
NieDzejkob

2
Bu aynı zamanda root olarak rastgele eklenti kodunu çalıştırmak istemiyorsanız daha güvenlidir (ancak, çalışanlar da kötü niyetli oldukları için çok fazla zarar verebilirler, bu nedenle size güvenmediğiniz eklentileri kullanmayın. ilk yer).
Kevin

2

Bağlantı çok eski (2013). Grafik uygulamalar için gksudoya da kullanım gksuiçin önerir, ancak her ikisi de eski hale gelir. Daha sonra kabul edilen cevaplar da sudo -Holsa bunu önermektedir .

Son zamanlarda Ubuntu ask topluluğunda genel görüş birliği şunları kullanmaktır:

sudo -H gedit /path/to/filename

sudoSekme ayarları, uzantılar, sözcük kaydırma, yazı tipi adı, yazı tipi boyutu, vb. İçin bir profili olmayan tek sorun, böyle bir sarmalayıcı komut dosyası olsa da bunları kullanıcı profilinizden devralabilirsiniz: Kökümü nasıl senkronize edebilirim? benim kullanıcı gedit tercihleri ​​ile gedit?


2

Evet, kullanımı güvenlidir sudo vim. Karşılaştığım sorunlar

  • sudo vimDüzenleme yapabilmek için dosyadan çıkıp yeniden açmanız gerekiyor.

  • Kök sahibi vimrcolmak varsayılan olanı değil, kişiselleştirilmiş faydalı eşyalarımı değil.

Burada bashrc, dosyayı normal şekilde düzenleyemiyorsanız, vim'in otomatik olarak sudo olmasına izin vermek için koyabileceğiniz bir işlev var .

vim() {
    #only good for auto-sudo. delete if no sudo privileges.
    #If you're not just opening a single file, let's not use this.
    if [[ "$#" -ne 1 ]]; then
        command vim "$@"
    #cases: if we can write to the file, or the file doesn't exist and we can make new files in that directory
    elif [[ -w "$1" || ( -w $(dirname "$1") && ! -f "$1" ) ]]; then
        # \vim or 'vim' only escape aliases, not functions
        command vim "$1"
    else
        sudo env HOME="$HOME" vim -u $HOME/.vimrc "$1"
    fi
}

Ubuntu üzerinde sudovarsayılan olarak koruyan $HOMEçevre değişkeni, vasıta sudo vim olacaktır aynı zamanda araçlara da .vimrc özelleştirilmiş kullanın ve sudo vimsahipliğini değişecek ~/.viminfobazı rahatsızlık kökü ve size neden: Kök için.
Marius Gedminas,

Kabul edilen cevap sizinle aynı fikirde değil viminfo.
jeremysprofile

1

Vi'yi root olarak kullanmak iyidir. Ağ arabirim dosyanızı değiştirmek veya sshd config dosyanızı düzenlemek gibi, sudo veya root ayrıcalıkları gerektiren bir dosyayı düzenlemeniz gereken zamanlar olacaktır. Grafiksel şeyler için root kullanmak kötüdür çünkü insanlar IRC'ye bağlanır veya web'e root olarak göz atarlar. Bunu yaparken virüs kaparlarsa, tam kök erişimine sahip olur.


2
Vi'yi root olarak kullanmak için en az bir özel istisna vardır. Sudo yolunu kontrol eden dosya (/ etc / sudoers) asla vi ile düzenlenmemelidir. Bu dosya için visudo komutu kullanılmalıdır. Hangi dosyanın düzenleneceğini bile belirtmediniz, bu sadece özel bir durum.
user628388

1

Diğer cevaplarda bahsedilmeyen bir şey de, kök vim ile çalıştırmanın, yüklediğiniz eklentilere ne gibi kök ayrıcalıkları vereceğidir. Bu nedenle, root olarak çalıştırmanın güvenli olup olmadığı sorusu, bu eklenti geliştiricilerine (veya projelerine katkıda bulunanlar) sisteminizi özüne sahip olmadığınızdan emin olmanıza bağlıdır.

Vim tipik olarak tüm linux dağıtımlarındaki paket üreticileri tarafından onaylanır, bu nedenle güvenmesi kolaydır. Bununla birlikte, vim eklentileri genellikle doğrudan GitHub repolarından kurulur ve genellikle daha az kullanıcı denetimi yapar (belki sıfır). Başka bir deyişle, onlarla birlikte emekleme süreci yoktur.

Kökündeyken eklentileri yüklemiyorsanız, root olarak çalıştırmanın vim geliştiricilere güvenmenize bağlı olup olmadığını sanırım. Bununla birlikte, aynı sudo geliştiricileri tarafından yapılan sudoedit'i kullanarak, zaten kök erişime sahip olduğumuz, zaten güvendiğimiz kişilere güvenmek zorunda olmayı atlayabilirsiniz. GKFX ve NieDzejkob, sudoedit'in neden ideal olduğunu belirtti. Sudo geliştiricilerinin yanı sıra başkalarına root erişimine güvenmek zorunda olmadığınızın yanı sıra, zaten normal kullanıcı hesabınızla güvendiğiniz tüm eklentileri yükleyebilirsiniz.


Çeşitli geliştiricilere güvenmeme konusundaki bu tartışma biraz eksik görünüyor; eğer sudoedit /etc/apt/sources.listbir eklentisi yüklü güvenliği ihlal ile, muhtemelen yine güncelleştirmeleri çalıştırmak kötü niyetli bir depo ve kazanç kök erişimi sefere ekleyebilirsiniz. Eminim benzer bir şeyin uygulandığı kök korumalı dosyaların uzun bir listesi vardır. Ve elbette, her virüs kök gerektirmez; biri banka bilgilerinizi bir tarayıcı uzantısından fazlası olmadan alabilir.
GKFX
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.