it-swarm-tr.com

Bir terminaldeki kullanıcılar arasında nasıl geçiş yapılır?

Mevcut olandan çıkış yapmadan farklı bir kullanıcı olarak giriş yapmak istiyorum (aynı terminalde). Bunu nasıl yaparım?

535
tshepang

su komutunu kullanmaya ne dersiniz?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

Kök olarak oturum açmak istiyorsanız, kullanıcı adı belirtmenize gerek yoktur:

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

Genel olarak, istediğiniz kullanıcı olarak yeni bir Kabuk başlatmak için Sudo kullanabilirsiniz; -u flag, istediğiniz kullanıcı adını belirlemenizi sağlar:

$ whoami
user1
$ Sudo -u user2 zsh
$ whoami
user2

Sudo erişiminiz yoksa, ssh kullanıcı adı @ localhost gibi daha dolambaçlı yollar vardır, ancak Sudo kurulu olması ve kullanma izniniz olması koşuluyla, muhtemelen en basit olanıdır.

630
Pratt

Genellikle istediğiniz kullanıcı olarak yeni bir Kabuk başlatmak için Sudo kullanırsınız; -u bayrağı, istediğiniz kullanıcı adını belirtmenize olanak tanır:

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % Sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

ssh [email protected] Gibi Sudo erişiminiz yoksa daha dolambaçlı yollar var, ancak bence Sudo yüklüyse ve bunu kullanma izniniz varsa muhtemelen en basit

51
Michael Mrozek
$ whoami 

Bu komut geçerli kullanıcıyı yazdırır. Kullanıcıları değiştirmek için bu komutu kullanmamız gerekir (bunu kullanıcının şifresi izler):

$ su secondUser
Password:

Doğru şifreyi girdikten sonra, belirtilen kullanıcı olarak giriş yapacaksınız (whoami komutunu yeniden kontrol edebilirsiniz.

25
Ashish Saini

Ubuntu çalıştırıyorsanız ve oturum açmak istediğiniz kullanıcının şifre ayarlanmamışsa:

Sudo su - username

Kendi şifrenizi girin ve ayarlamanız gerekir. Elbette bu, kullanıcının Sudo ile kök ayrıcalıkları kazanma haklarına sahip olmasını gerektirir.

17
Sundae

Terminal oturumunu, kullanıcının orijinal kullanıcıya geri dönemeyeceği farklı bir kullanıcıya geçirmek için exec komutunu kullanın:

$ | # exec su - [kullanıcı adı]

Bu, yeni kullanıcıyı yeni bir terim sürecinde teknik olarak oturum açacak ve mevcut olanı kapatacaktır. Bu şekilde, kullanıcı çıkmaya veya Ctrl-D'ye girişmeye çalıştığında terminal, bu kullanıcı onu başlatan kişi gibi kapanır, yani kullanıcı orijinal kullanıcının terimine geri dönemez. Yine de yeni bir terminal oturumu başlatabilecekleri ve otomatik olarak orijinal kullanıcı terimi girişinde olabilecekleri düşünülerek, anlamsız, ama orada.

DÜZENLEME: Değer için, terminal oturumlarını kilitlemek için varsayılan olarak terminal oturumlarını kilitlemek için ~/.bashrc içindeki linux vlock komutunu kullanabilirsiniz. Bu, terimin, yapılandırıldığı gibi kullanıcının varsayılan olmayan ~/.bashrc'si kullanılarak başlatılmadığı takdirde, orijinal kullanıcı bağlamı altında yukarıda belirtilen terimin yeniden başlatılmasını bir şekilde engelleyecektir.

9
SYANiDE

Sudo -iu <your_username> benim için hile yapmak

3
andilabs

Bunu doğru yapalım: UserA olarak oturum açtınız ve bazı komutları çalıştırmak için UserB olarak "oturum açmak" istiyorsunuz, ancak bittiğinde UserA'ya geri dönmek istiyorsunuz. Basitlik adına, ls -l/tmp'yi UserB olarak çalıştırmak istediğinizi varsayalım. not geçerli UserA Kabuğu'ndan ayrılmak, ancak UserB olarak bir komut çalıştırmak ve yine de UserA olarak oturum açmaya devam etmek istiyorsanız, bunu yapmanız gerekir:

su - UserB -c "ls -l /tmp"   <-- Just an example

Bu, UserB için parolayı bildiğinizi varsayar. Ancak, UserB'nin parolasını bilmiyorsanız, kök parolayı bilmeniz gerekir. Sonra:

Sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

Çok sayıda komut çalıştırmak için geçici olarak UserB olarak oturum açmayı tercih ederseniz, şunları yapın:

Sudo su - UserB

Bu size UserB için yeni bir Kabuk verecektir (id yazarak kontrol edin). İşiniz bittiğinde, ctrl-d yapabilir ve girişinize geri dönebilirsiniz.

2
Hopping Bunny

Yine başka bir yol, komutları o kullanıcı olarak çalıştırmak için farklı (root olmayan) bir kullanıcı olarak yeni bir Kabuk başlatmaktır.

[email protected]:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ mongod --configsvr --dbpath /data/configdb --fork

Buna bir örnek mongodb kullanıcısıdır. Parçalanmış bir MongoDB kümesi dağıtırken, gerekli tüm işlemlerin mongodb olarak çalışması gerekir ve düzinelerce düğüm için init komut dosyaları kullanarak işlemlerin arka plana alınması gerekmez (veya tamamen uygun).

2
azatar

Yalnızca tek bir komut çalıştırmanız gerekiyorsa Sudo'yu kullanabilirsiniz: Sudo -u username command

1
Maksim Luzik