Yanıtlar:
su
Komutu 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 sudo
olarak, istediğiniz kullanıcı olarak yeni bir kabuk başlatmak için kullanabilirsiniz ; -u
bayrak 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.
su - [user]
yararlı olabilir - ekstra çizgi size bir giriş kabuğu verir.
echo >>/dev/stderr
giriş yaptıktan sonra su --login ...
herhangi bir ipucu ile çalıştırdıktan sonra ? Bu btw unix.stackexchange.com/questions/38538/…
env
gö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.
Genellikle istediğiniz sudo
kullanıcı olarak yeni bir kabuk başlatmak için kullanırsınız ; -u
bayrak 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 sudo
eğer kurulu ise basit ve onu kullanmak için izniniz var.
sudo -s
size bir kabuk verir su
, sudo -i
giriş yapmayı simüle eder su -
. -u $user
Tabii ki ile birleştirilebilir .
$ 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
.
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.
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 mongodb
kullanıcıdır. Bir parçalanmış MongoDB kümesini dağıtırken, tüm gerekli işlemler olduğu gibi çalışmalı mongodb
ve 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).
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.
Yalnızca tek bir komut çalıştırmanız gerekirse, sudo kullanabilirsiniz:
sudo -u username command
$XDG_RUNTIME_DIR
özellikle de beni deli eden) sorunlarla karşılaştım. -> unix.stackexchange.com/questions/354826/…