Hemen sonra sudo su ve dizini nasıl değiştirebilirim?


13

Böyle bir şey yapan bir takma ad oluşturmak istiyorum:

alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'

Bu yüzden komut satırımdan, sudo kullanıcısıyla giriş yaptım ve diğer adı yazmak istiyorum, userYYYböylece kabuğum şimdi oturum açmış userYYYve pwdöyle /a/path/that/only/userYYY/has/access.

Bunu nasıl yapabilirim? Bu userYYY, bazı işlemleri yürütmek içindir ve evinde herhangi bir şey olmalıdır. Bu nedenle, $ HOME kullanarak:

sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY 

Ve sonra sudoer dosyamla kabuğumdan yaptım sudo su userYYY. Ama bu işe yaramadı. Tek işe sudo su -l userYYYYyarayan , ancak orijinal kabuğumun ( -bash-4.1$ ....) içinde yeni bir bash açtı .

Özetle, istediğim sadece kabuğuma 2 satır yazmak zorunda kalmamaktır:

sudo su userYYY
cd /a/path/that/only/userYYY/has/access

Herhangi bir fikir?

Yanıtlar:


10
alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'

iyi çalışıyor gibi görünüyor, ama bu hatayı nasıl kaldırılacağından emin değilim ya da bir sorun. Ubuntu 14.04LTS kullanarak, debian ile ilgili bir sorun olduğunu fark ettim ...bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
sonjz

1
Aslında, bir süre kullandıktan sonra, terminalin bu yöntemi kullanarak oldukça sık öldürüldüğünü fark ettim (düzenli olarak 15-30 dakika arasında bağlantıyı
kesin

Sadece bunu kazdık, bu davranış bir güvenlik düzeltmesi nedeniyle: unix.stackexchange.com/questions/65843/…
sonjz

Bu benim düzenlemek yardımcı oldu .bashrcdosyayı sudodaha sonra cd2 ayrı çizgiler sahip olarak işe yaramıyordu nerede.
RozzA

2

Bir seçenek ~/.bashrc, hedef kullanıcıyı düzenlemek ve cdoraya eklemek olacaktır :

cd /a/path/that/only/userYYY/has/access

0

Kısa cevap - yapamazsınız. sudo suO gelmeden önce çıkmalısınız yeni bir kabuk başlatır cdkomuta.


0

Benim için bir kombinasyonu sudove screençalıştı:

sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'

Bu komut önce vagrantkullanıcıya geçer . Sonra vagrantdizini olarak değiştirir /vagrantve yürütür npm install.


0

Bunun orijinal sorudan biraz farklı olduğunu biliyorum, ancak fikir, politika yasakladığında bir parola yazmadan komutu farklı bir kullanıcı olarak çalıştırmaktır sudo su <user> -c.

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"
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.