Sudo -u $ kullanıcı env kullanıcıları kullanmak için nasıl alabilirim?


19

Öyle görünüyor sudoki bunu kullanarak sudo -u $userkök ortamı hala kullanılıyor. sudoKullanıcı ortamını nasıl kullanabilirim? özel bir not olarak ben bunu kullanacağım tüm kullanıcılar giriş kabukları var.


'Çevre'yi tanımlayın. # whoami => root # sudo -u user whoami => user
alex

1
@alex Ben rakam sudo -u userkullanmak su userzorunda su env değiştirmek için benzersu - user
xenoterracide

Ancak kullanıcının giriş kabuğu yoksa "kullanıcının çevresi" ile ne demek istersiniz?
Thomas Themel

@Thomas kullanıcıları, kabukları olmasa bile programları çalıştırabilirler ... -uGrupları da görmezden geliyor ... Kökten bir şey denedim (sudo -u down kullanarak) ve işe yaradı, görünüşe göre kullanıcı için olmadı. .. Bu yüzden tüm kısıtlamalar ve çevre sorunları olacak şekilde komutları çalıştırdığımdan emin olmalıyım.
xenoterracide

Yanıtlar:


21

Deneyin sudo -i -u $user

gerald@book:~$ env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -u ubuntu env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -i -u ubuntu env |grep HOME
HOME=/home/ubuntu

ne yazık ki içinde bir kabuk yoksa işe yaramazsa /etc/passwd:( ama sanırım yapacağım ...
xenoterracide

Man sayfasına bakıldığında -E, çevreyi koruyan, yani tüm ortam değişkenleri vb. Hala ayarlanmamış olmasına rağmen PATHve LD_LIBRARY_PATHarayan kullanıcı için var gibi görünüyor.
Shahbaz

1
$SUDO_USERkullanılabilir
Rahul Patil

4

man sudoersDebian'da başka bir olasılıktan bahsediyor. Hangi yönden istediğinizden emin değilsiniz, ancak sorunuzenv_reset seçeneğe/etc/sudoers - tam tersi env_keepliste. Doğru ayarlamak için HOMEkullanabileceğiniz -Hseçeneği sudotekrar doğrudan veya sudoersbirlikte, always_set_homeseçenek.

Alternatif kullanabilirsiniz env_filebir belirtmek için kesin geçmek istediğiniz ortamı. Ancak, env_*seçenekleri kontrol etmenin en iyisi olduğunu düşünüyorum man sudoers, çünkü /etc/sudoershepsini kontrol ediyor ve dönüş noktası bu.

İşte env_resetbenim sudoersdosya içinde kullandığım bağlamın bir parçası :

Defaults        !lecture
Defaults        env_reset
Defaults        syslog=auth
Defaults        log_year

1

Ne zaman sudo ing ortam değişkenleri korunmaz.

Benim durumumda kullanıyorum burada belge kullanıyorum .

Gibi eylemlerinizi my_script.shHERE DÖKÜMANINIZ :

su -u some_user <<EOF
./my_script.sh
EOF

Değişkeni doğrudan buraya koymamanız gerekir, çünkü geçerli kullanıcınızdan yorumlanır.

su -u some_user <<EOF
./my_script.sh $MY_VAR
EOF

Eğer $MY_VAR komut dosyası çalıştıran kullanıcı için ayarlı değil, bu set edilmeyecektir.

Değişkeniniz komut dosyalarınızın içinde çağrılmalı veya onlardan kaçmalısınız \ .

Örneğin.

su -u some_user <<EOF
./my_script.sh \$MY_VAR
EOF

Burada, bağlamsal değere $MY_VARsahip olacak some_user.


İyi cevap. Küçük bir düzeltme: Bunun su - some_useryerine olmalıdır su -u some_user.
rudolfbyker
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.