Linux - “su -” kullanın ancak geçerli dizini saklayın


14

su -Kök almak için yaptığım zaman , geçerli dizini kök evine ayarlanır. Ben zaten olduğu gibi, mevcut dizini tutmak için yine de var mı sudo -s. Yoksa cevap sudo kullanmak mı?


5
Kulağa kaba gelmek istemediğimi, ancak bu sorunun neden "man su" ile çözülmediğini lütfen unutmayın.
Myrrdyn

1
@Rory lütfen Myrrdyn yorumunu okuyun
c4f4t0r

Ben kullanmak gibi sudo su -c "zsh", benim durumumda, cari dir ve yük beni tutan zsh kök kullanıcı ile kabuk olarak. ctrl+dsonra geçerli kullanıcıya geri dönersiniz. Dizin şey için, doğrudan benim için centos üzerinde çalışır, ancak belki geçti komut içine `&& cd $ (pwd)` eklemek hile yapabilir.
GabLeRoux

@Myrrdyn Ne aradığınızı bildiğinizde dokümanlar harika. Yapmadığınızda, uzmanlara bazı sorular sormak daha hızlı ve daha didaktiktir.
Romain Vincent

Yanıtlar:


18

Mümkünse sudo kullanmak her zaman daha iyidir, çünkü o zaman root şifresini bilmenize (veya birine vermenize) gerek yoktur. Kök parolasını uzun ve korkunç bir şeye ayarlayın ve daha sonra kasada kilitleyin.

Birinin daha sonra erişimini reddetmek isterseniz, herkese yeni bir root şifresi öğretmek yerine sudo'ya olan erişimini kaldırmanız yeterlidir.

Ancak - istemiyorsanız '-' parametresini kullanmanıza gerek yoktur. Bir kabuk kök olarak alacaksınız, sadece bir giriş kabuğu olmayacak (bu nedenle root'un .profile dosyasını çalıştırmayacak.)


1
Benim durumumda böyle bir şey yapmak için takma ada ihtiyacım vardı asuser git reset --hard. Ama su - <user> -m -c "git reset --hard"ve sudo -u <user> git reset --hardçevremi kurtaracak ve git okumaya çalışırdım geçerli kullanıcının git yapılandırma. Bu yüzden bazen user205705'in su - <user> -c "cd ; bash" çözümününpwd daha iyi olduğunu belirtmek istedim .
ReFruity

16

Sudo'nun neredeyse her zaman daha iyi bir cevap olduğuna katılıyorum ama sorunun diğer kısmını cevaplamak ...

'Su -' içindeki '-', yalnızca süper kullanıcı ayrıcalıklarıyla çalıştırmak yerine bir süper kullanıcı girişini taklit etmek istediğinizi belirtir.

'Su' yerine düz 'su' kullanırsanız aynı dizinde kalırsınız; ancak aynı ortamda da çalışacaksınız, bu nedenle bazı yönetici komutlarına erişmek için yolunuzu değiştirmeniz gerekebilir.


9

Eğer suolmadan kullanırsanız -, sizi geçerli dizininizde tutmalıdır. -, -lYa --login Su'ya söyleyin:

Kullanıcının doğrudan giriş yapmasını beklediği gibi bir ortam sağlayın.

Ya da sadece sudo kullanın, başka birçok avantajı var. Veya ssh tuşları.


6

Kesinlikle sudo kullanmalısınız.

su -m
-m (-p): ortam değişkenlerini sıfırlama (genellikle önerilmez)

Kök olarak değiştirdiğinizde bu sizi klasörde tutacaktır.

Sudo kullanmanın faydaları


1
Muhtemelen bir güvenlik sorunu olan PATH ortamını sıfırlamamak dışında, bunun kendi başına "su" dan ne kadar farklı olduğunu göremiyorum.
David Pashley

@DavidPashley, örneğin .bashrckök kullanıcıdan değil, dış kullanıcıdan yürütür .
phil294

4

Gerçekten kullanmak istiyorsanız su, aynı dizinde kalmanın bir yolu vardır.

su - <user> -c "cd `pwd`; bash"

Burada neler oluyor:

  • su - <user> = olarak giriş yap
  • -c yani "yeni kabuğunda bir komut çalıştır
  • -c "cd `pwd`" verdiğimiz komut geçerli direcotory'ye ( pwd) geçmektir - ancak backticks kullandığımız için, pwdkomutu çalıştırmadan önce komut değerlendirilir, suböylece eski kullanıcı olarak ŞİMDİ'nde bulunduğumuz dizine geçebiliriz. Buradaki tek sorun, yeni kabuğun komutu çalıştırdıktan hemen sonra çıkmasıdır, bu yüzden ekliyoruz:
  • -c "cd `pwd`; bash" yani " komutu bashçalıştırdıktan sonra run (yeni kabuk) cdve bash kabuğu biz çıkış yapana kadar çıkmaz.

1
Aslında sorunun tek cevabı bu. Aferin!
Cacahuete Frito

Aslında, su - [user] -c "cd $(pwd); bash"biraz daha iyi olabilir (ters vuruşları değiştirin $()).
Cacahuete Frito

3

Sudo kullan :). Cidden, suya ihtiyacın yok. 'sudo' sadece ayrıcalıklı komutlar için kullandığınızdan daha iyidir ve hatalardan kaçınmanıza yardımcı olabilir. Ayrıca hesap verebilirlik de elde edersiniz.


2

"Su" kullanırsanız etkileşimli bir kabuk oluşturur. Bu "sudo -s" ile aynıdır. "su -", ortamı geçersiz kılacak bir oturum açma kabuğu oluşturur. "sudo -i" sudo ile eşdeğerdir. Etkileşimli bir kabuk almaya çalışıyorsanız, her zaman sudo -i (veya su -) formunu kullanmalısınız veya kullanıcının ana dizininde garip dosya izinleriyle sonuçlanabilirsiniz.


0

bu işi yapmak için su kaynağını değiştirmeniz gerekir. çevre değişkenlerini başlatma prosedüründe bir chdir çağrısı vardır. bu çağrıyı içeren eyaletleri yorumlar. ve şimdi "su -" yapabilirsiniz ancak geçerli dizini tutar.

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.