Ubuntu 10.04 Server kullanıyorum ve kullanıcının EDITOR seçimine (limitler dahilinde) saygı göstermek için sudoers kurmaya çalışıyorum
Benim sudoers benim var:
Defaults editor=/usr/bin/nano:/usr/bin/vim
Defaults env_reset
Ve kullanıcı .bashrc:
export EDITOR=/usr/bin/vim
$ EDITOR ayarlandı:
$ echo $EDITOR
/usr/bin/vim
Buna göre man sudoers
$ EDITOR'un vim olarak ayarlanması için yeterli olmalıdır:
editor A colon (':') separated list of editors allowed to be used with visudo.
visudo will choose the editor that matches the user's EDITOR environment
variable if possible, or the first editor in the list that exists and is
executable. The default is the path to vi on your system.
Ancak nano
bu kullanıcı için hala kullanılıyor. Env'in hızlı kontrolü:
$ sudo -- env | grep EDITOR
Hiçbir şey döndürmez.
$ sudo -E -- env | grep EDITOR
İadeler EDITOR=/usr/bin/vim
EDITOR'un çalışması için aşağıdaki şeyleri yapabileceğimin farkındayım:
- Set
env_editor
,env_keep+=EDITOR
ya sudoers içinde EDİTÖR değişkeni tutan başka bir seçenek: Ben bir şey keyfi yürütülmesine izin verebilir olarak bunu yapmak istemiyoruz (örneğinexport EDITOR=~/bad_program_to_run_as_root
) - Use
sudo -E
or evenalias sudo='sudo -E'
:env_reset
SETENV olmayan (sahip olmak istediğim bir şey değil: önceki noktaya bakın)sudo: sorry, you are not allowed to preserve the environment
- Set
editor=/usr/bin/vim
: Ama vim bilmeyen başka kullanıcılar da var - Kullan
sudo select-editor
: Kapat, ancaksudo visudo
yine denano
- Sadece sudoedit kullanabilir veya doğrudan Vim: Ama o zaman gibi araçlar güvenliğini kaybetmek
visudo
,vipw
,crontab -e
. - Sadece bununla başa çık: Muhtemelen, ama bir içgörü kaçırırsam bilmek isterim
Ben de (umutsuzluk) VISUAL
ve SUDO_EDITOR
değişkenleri ayarlamayı denedim
sudo visudo
Yukarıdaki ödün vermeden, seçilen kullanıcı editöründe açacağım kaçırdığım bir şey var mı?
DÜZENLE:
Sanırım bunun neden beklediğim gibi çalışmadığını anlıyorum. Başka birinin aynı yanlış anlama sahip olması durumunda buraya koyuyorum.
Sudoers dosyasında
Defaults editor=/usr/bin/nano:/usr/bin/vim
- Yalnızca çalışırken izin verilen editörlerin listesini ifade eder
visudo
(başka herhangi bir program için değil) editor
çalıştıran, çekler $ EDİTÖR ancaksudo visudo
,sudo
$ EDITOR set yoktur, bu nedenle zamanvisudo
çalışır boş olacaktır- Bu nedenle, ilk editör kullanılır, bu durumda
nano
Herkes bunun doğru olduğunu onaylayabilir mi?
Bu nedenle güvenli bir çözüm eklemek olacağını umuyorum:
Defaults!/usr/sbin/visudo env_keep+=EDITOR
yani EDITOR'u sadece ve sadece visudo çalışıyorsa saklayın. Bu daha sonra kontrol edilir
Defaults editor=/usr/bin/nano:/usr/bin/vim
Ve eğer uyuşmazsa, nano
Tuhaf bir şekilde, durum böyle görünmüyor:
$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged
/bin/echo
editör olarak kullanılır. Hata? Yoksa başka bir yanlış anlama mı?
Teşekkürler
VISUAL
öncelik kazanmaya atıfta bulunmasıdırEDITOR
.EDITOR
Değişkenimin sadece göz ardı edildiğini düşündüm . Her ikisi de Centos7'de çıkıyorEDITOR
veVISUAL
varsayılan olarak görünüyorpico
.