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


Yanıtlar:


561

suKomutu kullanmaya ne dersin ?

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

Kök olarak giriş yapmak istiyorsanız, kullanıcı adı belirtmenize gerek yoktur:

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

Genel sudoolarak, istediğiniz kullanıcı olarak yeni bir kabuk başlatmak için kullanabilirsiniz ; -ubayrak istediğiniz kullanıcı adını belirtmenizi sağlar:

$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2

Ssh username @ localhost gibi, sudo erişiminiz yoksa sudo, kurulu olması ve kullanma izniniz olması koşuluyla muhtemelen en basittir.


17
Ayrıca, su - [user]yararlı olabilir - ekstra çizgi size bir giriş kabuğu verir.
efemient

Bu hatayı alıyorum "-su: / dev / stderr: İzni reddedildi" bu komutu echo >>/dev/stderrgiriş yaptıktan sonra su --login ...herhangi bir ipucu ile çalıştırdıktan sonra ? Bu btw unix.stackexchange.com/questions/38538/…
Kova Gücü

Bu, her yeni kullanıcının ortam değişkenleri için farklı, geçersiz kılma değerlerine sahip olmasına izin veriyor mu? örneğin iş için git config, açık kaynak vb.
Kevin Suttle

Bir bulgu, listelediğimde envgörsel bir incelemenin yanı sıra her şeyin yolunda olduğunu gördü; Ve bir şey yanlış: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on ~ / .Xauthority` dosyasıdır: -rw-------. Bir kopyasını yaptım ve bu da bir deneme olarak gedit çalıştırmama izin verdi.
irade

1
"Bu hesap şu anda kullanılamıyor" alırsanız: su -s / bin / bash - www-data
max4ever

46

Genellikle istediğiniz sudokullanıcı olarak yeni bir kabuk başlatmak için kullanırsınız ; -ubayrak istediğiniz kullanıcı adını belirtmenizi sağlar:

[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody

Eğer sudo erişiminiz yoksa, daha dolambaçlı yollar da var ssh username@localhost, ama sanırım sudoeğer kurulu ise basit ve onu kullanmak için izniniz var.


Sistemimde ssh sunucusu veya sudo bulunmuyorsa ne olur? Cevaptaki kısımdan bahseder misiniz?
tshepang

tamam, Pratt bunu cevapladı
tshepang

4
sudo -ssize bir kabuk verir su, sudo -igiriş yapmayı simüle eder su -. -u $userTabii ki ile birleştirilebilir .
efemient

çok daha verimli. Normalde giriş yapamayan bir kullanıcı olarak "giriş" yapabilmek harika bir avantajdır ..! tamamen izinleri veya selinux ile uğraşmadan bir veritabanı örneği çalıştırmama izin verdi
Félix Gagnon-Grenier

20
$ whoami 

Bu komut mevcut kullanıcıyı yazdırır. Kullanıcıları değiştirmek için, bu komutu kullanmamız gerekecek (kullanıcı şifresini takip ederek):

$ su secondUser
Password:

Doğru şifreyi girdikten sonra, tekrar girerek kontrol edebileceğiniz, belirtilen kullanıcı olarak giriş yapacaksınız whoami.


Eğer sudoer değilseniz kullanışlıdır.
Marco Sulla

15

Ubuntu kullanıyorsanız ve giriş yapmak istediğiniz kullanıcının bir şifre ayarı yoksa:

sudo su - username

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


8

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

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

Bu teknik olarak yeni kullanıcıya yeni bir terim işleminde giriş yapar ve mevcut olanı kapatır. Bu şekilde, kullanıcı exit veya Ctrl-D'yi denediğinde terminal, kullanıcının onu başlatan kişi olduğu gibi kapanır, yani kullanıcı, orijinal kullanıcının terimine geri dönemez. Yeni bir terminal oturumu başlatabileceklerini ve otomatik olarak orijinal kullanıcı terim girişinde olduklarını düşünürsek, anlamsız bir şeydir.

EDIT: Ne pahasına olursa olsun, terminal oturumlarını kilitlemek için varsayılan olarak terminal oturumlarını kilitlemek için ~ / .bashrc dosyasındaki linux vlock komutunu kullanabilirsiniz. Bu, yukarıda belirtilen terimin, orijinal kullanıcı bağlamında yeniden başlatılmasını, terimin yapılandırıldığı gibi kullanıcının varsayılan olmayan ~ / .bashrc'si kullanılarak başlatılmaması durumunda biraz önleyecektir.



2

Diğer bir rota ise, o kullanıcı olarak komutları çalıştırmak için farklı (root olmayan) bir kullanıcı olarak yeni bir kabuk başlatmaktır.

ubuntu@aws-ip:~$ sudo -u mongodb bash          #<-- or zsh, etc... 
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork

Buna bir örnek mongodbkullanıcıdır. Bir parçalanmış MongoDB kümesini dağıtırken, tüm gerekli işlemler olduğu gibi çalışmalı mongodbve düzinelerce düğüm için init betiğini kullanarak süreçleri canlandırmak için gerekli olmamalıdır (veya tamamen uygun değildir).


2

Bunu doğru yapalım: Kullanıcı olarak giriş yaptınız ve bazı komutları çalıştırmak için Kullanıcı olarak "giriş" yapmak istiyorsunuz, ancak işlem bittiğinde KullanıcıA'ya geri dönmek istiyorsunuz. Basit olması adına, ls -l / tmp komutunu UserB olarak çalıştırmak istediğinizi varsayıyorum. Eğer yoksa değil UserA olarak giriş yapmış halde UserA mevcut kabuğunu terk ziyade hala userB gibi bir komutu çalıştırmak istediğiniz, bunu yapmalıdır:

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

Bu, UserB şifresini bildiğinizi varsayar. Bununla birlikte, eğer UserB'nin şifresini bilmiyorsanız, root şifresini 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 giriş yapmayı tercih ediyorsanız, şunları yapın:

sudo su - UserB

Bu size UserB için yeni bir kabuk verecektir (id yazarak kontrol edin). İşlem tamamlandığında, ctrl-d yapabilir ve giriş bilgilerinize geri dönebilirsiniz.


1

Yalnızca tek bir komut çalıştırmanız gerekirse, sudo kullanabilirsiniz: sudo -u username command


-1
~$ sudo login

Ardından sudo şifresini soracaktır (şu anda giriş yapan kullanıcının şifresi).

Ayrıca: mevcut kullanıcının sudoers dosyasında olduğundan emin olun!


2
Soru, farklı bir kullanıcı olarak giriş yapmaktı.
Minix
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.