Bir kabuk betiğini şifresi olmayan başka bir kullanıcı olarak çalıştırma

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

Tam sudo ayrıcalıklarım var, bu yüzden bunu denedim:

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

Sonra şifremi girmem gerekiyor, ancak bu komut dosyasının şu anda bu kullanıcı altında gerçekten çalışıp çalışmadığından emin değilim.

Komut dosyasının gerçekten bu kullanıcı altında çalıştığını nasıl doğrulayabilirim?

Bunu şununla yapabilirsin su veya sudo ikisine de gerek yok.

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

İlgili bölümleri 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 eğer root iseniz sadece bir şifre vermeden kullanıcı geçiş yapabilirsiniz. Caleb'in cevabını gör

Şunları değiştirebilirsiniz /etc/pam.d/su izin verilecek dosya su şifre olmadan. Bunu gör cevap.

Auth dosyanızı aşağıdaki şekilde değiştirdiyseniz, grubun parçası olan herhangi bir kullanıcı somegroup olabilir su -e doğru otheruser şifre olmadan.

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

Ardından terminalden test edin

rubo77@local$ su otheruser -c 'echo "hello from $USER"'hello from otheruser

Sudo yerine su kullanmak istiyorsanız, bunun gibi bir şey kullanabileceğinize inanıyorum:

su - <username> -c "<commands>"
  • - belirtilen kullanıcının oturum açmasını simüle eder
  • -c bir komutu çalıştırmak istediğinizi söyler

ps. Ne yazık ki ruby'yi bu yöntemle rvm kullanarak yükleyemiyorum, ancak bu muhtemelen ilgili değil.

Yukarıdaki cevaplar benim için gerçekten yararlı ama asıl soruyu cevaplamak için...

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

Kullanmak:

ps -ef | grep <command-name>

Çıktı, komut dosyanızı ve onu yürüten gerçek kullanıcıyı içermelidir.MAC gibi BSD benzeri sistemlerdeki kişiler de benzer bilgileri şunlarla bulabilir::

ps aux | grep <command-name>

Komutla kök kullanıcıya geçtiğinizden emin olun sudo su ve sonra komutu kullanın

su user -s <command>

Örneğin: su www-data -s bin/magento cache:clean

Bende de aynı sorun vardı.Sadece komutu yazın screen -dmS testscreen bu, sudo olmayan kullanıcı hesabınızda ayrılmış bir ekran oluşturacak ve daha sonra oturum açıp bu ekranın orada olup olmadığını kontrol edebilirsiniz screen -ls.

Kullanabilirsiniz sudo bunu yapmak için. İlk olarak, aşağıdakileri değiştirmeniz gerekir: /etc/sudoers izin veren bir kural eklemek için dosya hudson söz konusu komut dosyası için diğer kullanıcı olmak için kullanıcı. Diyelim ki bir tane var user1 çalıştırılması gereken hesap /usr/local/bin/my_script.sh.

Koşmak visudo değiştirmek için sudoers dosya.Ardından, aşağıdakileri kullanın sudo komut dosyasını hudson'dan çalıştırma komutu.

Kullanmanız çok önemli. visudo değiştirmek için sudoers dosyayı yerine koymadan önce hatalar olup olmadığını kontrol etmek için dosya. Ayrıca, hızlı bir şekilde okumanızı öneririm man sudoers yapılandırmanıza eklemeden önce yukarıdakilerin ne yaptığını açıkça anlamak için.

Aynı yerel makineye işaret eden "ssh" kullanıyorum.Bu, kabuk betiğini veya komut şifresini şifresiz çalıştırmamı sağlar.

ssh target-user@localhost script-to-execute

Öncelikle, ana bilgisayar kullanıcısının ortak anahtarını hedef kullanıcıya (aynı makinede) kaydettiğinden emin oluyorum.Sonra yukarıda gösterdiğim ssh komutunu çalıştırıyorum.

Sonuç, bir şifre bile girmeden hedef kullanıcı olarak çalıştırılan bir komut / komut dosyasıdır.

sudo -u <kullanıcı> <komut>