Bir şifre betiğini şifre olmayan başka bir kullanıcı olarak çalıştır

203

Ana ubuntu kabuğundan şifre içermeyen farklı bir kullanıcı olarak bir komut dosyası çalıştırmak istiyorum.

Tam sudo ayrıcalıklarına sahibim, bu yüzden şunu denedim:

sudo su -c "Your command right here" -s /bin/sh otheruser

O zaman şifremi girmem gerekiyor, ancak bu komut dosyasının şu anda gerçekten kullanıcı tarafından çalıştırıldığından emin değilim.

Komut dosyasının şu anda o kullanıcının altında çalıştığını nasıl doğrulayabilirim?

    
sordu rubo77 13.05.2013 12:55

4 cevap

285

Bunu su veya sudo ile yapabilirsin, her ikisine de gerek yok.

sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 

İlgili kısım man sudo :

-H   The -H (HOME) option requests that the security policy set
     the HOME environment variable to the home directory of the
     target user (root by default) as specified by the password
     database.  Depending on the policy, this may be the default
     behavior.
-u user     The -u (user) option causes sudo to run the specified
      command as a user other than root.  To specify a uid
      instead of a user name, use #uid.  When running commands as
      a uid, many shells require that the '#' be escaped with a
      backslash ('\').  Security policies may restrict uids to
      those listed in the password database.  The sudoers policy
      allows uids that are not in the password database as long
      as the targetpw option is not set.  Other security policies
      may not support this.

su , root iseniz sadece bir şifre girmeden kullanıcıyı değiştirebilir. Caleb'in cevabına bakın

/etc/pam.d/su dosyasını şifre olmadan su değerine izin verecek şekilde değiştirebilirsiniz. Bu answer adresine bakın.

Kimlik doğrulama dosyanızı aşağıdaki gibi değiştirdiyseniz, somegroup grubunun bir parçası olan herhangi bir kullanıcı su ile otheruser arasında parola olmadan olabilir.

auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = otheruser
auth       sufficient   pam_succeed_if.so use_uid user ingroup somegroup

Sonra terminalden test edin

[email protected]$ su otheruser -c 'echo "hello from $USER"'
hello from otheruser
    
verilen cevap geirha 13.05.2013 13:20
87

Sudo yerine su kullanmak isterseniz, bunun gibi bir şey kullanabileceğinizi düşünüyorum:

su - <username> -c "<commands>"
  • - belirtilen kullanıcının girişini simüle edecek
  • -c , bir komutu çalıştırmak istediğinizi söyler

PS. Maalesef bu yöntemi kullanarak rvm'yi kullanarak ruby'yi yükleyemiyorum, ancak bu muhtemelen alakalı değil.

    
verilen cevap Caleb 07.04.2015 02:01
6

Yukarıdaki cevaplar benim için gerçekten yararlı ama asıl soruya cevap vermek ...

  

Komut dosyasının şu anda o kullanıcının altında çalıştığını nasıl doğrulayabilirim? -

Kullanım:

ps -ef | grep <command-name>

Çıktı, komut dosyanızı ve bunu gerçekleştiren gerçek kullanıcıyı içermelidir. BSD benzeri sistemler üzerindeki insanlar, ör. MAC aşağıdakilerle benzer bilgileri bulabilir:

ps aux | grep <command-name>
    
verilen cevap Samuel Åslund 11.05.2017 20:30
2

Aynı problemim vardı. Sadece screen -dmS testscreen komutunu yazın, bu sudo olmayan kullanıcı hesabınızda müstakil bir ekran oluşturacaktır ve daha sonra bunu kaydedip bu ekranın screen -ls tarafından olup olmadığını kontrol edebilirsiniz.

    
verilen cevap liime 06.05.2017 10:35

Etiketlerdeki diğer soruları oku