Jawaban:
Bagaimana dengan menggunakan su
perintah?
$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout
Jika Anda ingin masuk sebagai root, tidak perlu menentukan nama pengguna:
$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout
Secara umum, Anda dapat menggunakan sudo
untuk meluncurkan shell baru sebagai pengguna yang Anda inginkan; yang -u
bendera memungkinkan Anda menentukan nama pengguna yang Anda inginkan:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
Ada lebih banyak cara berputar jika Anda tidak memiliki akses sudo, seperti ssh username @ localhost, tetapi sudo
mungkin paling sederhana, asalkan itu diinstal dan Anda memiliki izin untuk menggunakannya.
su - [user]
semoga bermanfaat - dasbor tambahan memberi Anda shell login.
echo >>/dev/stderr
pada login dengan su --login ...
, tip? Saya menemukan ini btw unix.stackexchange.com/questions/38538/…
env
itu melihat bahwa semuanya dalam urutan serta inspeksi visual bisa berjalan; Dan satu hal yang tidak benar: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
berkas ~ / .Xauthority` adalah: -rw-------
. Saya membuat salinan dan itu memungkinkan saya menjalankan gedit sebagai percobaan.
Umumnya Anda gunakan sudo
untuk meluncurkan shell baru sebagai pengguna yang Anda inginkan; yang -u
bendera memungkinkan Anda menentukan nama pengguna yang Anda inginkan:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
Ada lebih banyak cara berputar jika Anda tidak memiliki akses sudo, seperti ssh username@localhost
, tapi saya pikir sudo
mungkin paling sederhana jika diinstal dan Anda memiliki izin untuk menggunakannya
sudo -s
memberi Anda shell like su
, sudo -i
mensimulasikan login like su -
. Dapat dikombinasikan dengan -u $user
, tentu saja.
$ whoami
Perintah ini mencetak pengguna saat ini. Untuk mengubah pengguna, kita harus menggunakan perintah ini (diikuti oleh kata sandi pengguna):
$ su secondUser
Password:
Setelah memasukkan kata sandi yang benar, Anda akan masuk sebagai pengguna yang ditentukan (yang dapat Anda periksa dengan menjalankan kembali whoami
.
Untuk mengalihkan sesi terminal ke pengguna lain, di mana pengguna itu tidak bisa keluar kembali ke pengguna asli, gunakan exec:
$ | # exec su - [nama pengguna]
Ini secara teknis akan login pengguna baru dalam proses istilah baru, dan tutup yang sekarang. Dengan begitu ketika pengguna mencoba keluar atau Ctrl-D, terminal akan menutup seolah-olah pengguna yang membuat itu, yaitu, pengguna tidak dapat keluar kembali ke istilah pengguna asli. Agak tidak ada gunanya, mengingat mereka masih bisa memulai sesi terminal baru dan secara otomatis berada dalam login istilah pengguna asli, tapi itu dia.
EDIT: Untuk apa nilainya, Anda dapat menggunakan perintah linux vlock di ~ / .bashrc Anda untuk mengunci sesi terminal secara default, membutuhkan kata sandi dari sesi pengguna untuk membuka kunci. Ini agaknya akan mencegah restart istilah tersebut di bawah konteks pengguna asli, mengingat istilah tersebut tidak dipakai menggunakan non-default ~ / .bashrc dari pengguna, seperti yang dikonfigurasi.
Namun rute lain adalah meluncurkan shell baru sebagai pengguna (non-root) yang berbeda untuk menjalankan perintah sebagai pengguna itu.
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
Contoh dari ini adalah mongodb
pengguna. Ketika menggunakan cluster MongoDB yang terbelokkan, semua proses yang diperlukan harus berjalan sebagaimana mongodb
mestinya dan tidak perlu (atau sepenuhnya nyaman) untuk mengubah proses menggunakan skrip init untuk puluhan node.
Mari kita selesaikan ini: Anda masuk sebagai UserA dan ingin "masuk" sebagai UserB untuk menjalankan beberapa perintah, tetapi ingin kembali ke UserA setelah selesai. Demi kesederhanaan, saya berasumsi bahwa Anda ingin menjalankan ls -l / tmp sebagai UserB. Jika Anda tidak ingin meninggalkan shell saat ini dari UserA tetapi menjalankan perintah sebagai UserB dan masih tetap masuk sebagai UserA, Anda harus melakukan ini:
su - UserB -c "ls -l /tmp" <-- Just an example
Ini mengasumsikan Anda tahu kata sandi untuk UserB. Namun, jika Anda tidak tahu kata sandi UserB, Anda harus tahu kata sandi root. Kemudian:
sudo su - UserB -c "ls -l /tmp" <-- UserB's pw not needed here
Jika Anda lebih suka masuk sementara sebagai UserB untuk menjalankan banyak perintah, maka lakukan saja:
sudo su - UserB
Ini akan memberi Anda shell baru untuk UserB (periksa dengan mengetik id). Setelah selesai, Anda dapat melakukan ctrl-d dan kembali ke login Anda.
Jika Anda perlu menjalankan hanya satu perintah, Anda dapat menggunakan sudo:
sudo -u username command
$XDG_RUNTIME_DIR
khususnya) yang membuat saya gila. -> unix.stackexchange.com/questions/354826/…