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
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::
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.
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.