Login sebagai pengguna non-root di terminal


18

Ini adalah pertanyaan yang saya harapkan dengan cepat mendapatkan jawaban dari google. Namun entah bagaimana google gagal saya. Mari kita asumsikan saya masuk ke sesi terminal dan saya ingin sementara bekerja sebagai pengguna non-root lain yang kata sandinya saya tahu tanpa meninggalkan sesi saya. Ketika login sebagai pengguna ini saya ingin direktori home, dll, untuk pengguna ini diatur dengan benar sampai saya logout. Bagaimana aku melakukan itu?

Saya mencoba

su -- username

dan kemudian memasukkan kata sandi, itu tidak menghasilkan kesalahan tetapi saya tidak melihat perubahan yang terlihat dari prompt perintah itu masih akan mengatakan myname @ myhost. Direktori home juga adalah myname dan bukan login baru yang saya coba masuki.

Saya - seperti yang terlihat sekarang - cukup berpengalaman di linux / Ubuntu, jadi info apa saja boleh diterima.

Jawaban:


18

Kepada pengguna yang ingin Anda ubah?

Masalahnya adalah Anda mencoba untuk "su" menjadi pengguna yang tidak memiliki shell yang ditugaskan untuk itu. Sebagian besar pengguna seperti mysql, pulsa, dll, dibuat oleh sistem atau oleh beberapa paket ketika Anda menginstal perangkat lunak tidak memiliki shell yang ditugaskan.

Anda dapat memeriksa apakah pengguna memiliki shell yang ditetapkan dengan melihat ke dalam /etc/passwdfile, lihat saja di akhir baris setiap pengguna, jika dikatakan /bin/falseitu berarti bahwa itu tidak memiliki shell yang ditugaskan, jika memiliki sesuatu seperti /bin/bashatau yang lain shell, maka Anda harus dapat "su" ke pengguna itu.

Ketika saya mengatakan "shell ditugaskan" pada dasarnya berarti ia memiliki "akses shell"

masih jika pengguna tidak memiliki akses shell, Anda selalu dapat menjalankan perintah sebagai pengguna itu

 sudo -u user command

masih jika pengguna tidak memiliki akses shell, Anda selalu dapat menjalankan perintah sebagai pengguna dengan "sudo -u user command"
Sam

Tambahkan -s /bin/bashke superintah Anda atau gunakan chsh -u username -s /bin/bashuntuk mengubah shell untuk pengguna. Waspadai implikasi keamanan yang mungkin ditimbulkan.
gertvdijk

6

jika Anda memiliki akses sudo maka saya akan merekomendasikan

sudo su username -

Itu pada dasarnya melakukan hal yang sama, tetapi hanya mengharuskan Anda untuk mengetahui kata sandi Anda bukan pengguna lain.

namun jika Anda memiliki kata sandi pengguna lain:

su username - harus bekerja dengan baik.

perhatikan 1 - dan itu pada akhirnya.


Entah bagaimana kedua cara yang Anda deskripsikan berperilaku persis seperti milik saya - perintah diterima tanpa kesalahan tetapi direktori home tidak benar dan prompt mengatakan bahwa saya masih pengguna asli. Jika saya keluar setelah itu saya keluar sepenuhnya.
Andrew Savinykh

Oke, apakah pengguna Anda masuk log sebagaimana diizinkan untuk masuk? Anda dapat memblokir akun agar tidak masuk dengan mengatur shellnya menjadi "true" dan itu akan melakukan persis seperti yang Anda jelaskan. Ini digunakan untuk digunakan banyak pada "sistem" akun seperti "apache" dan "ftp" Untuk memeriksa sudo cat /etc/passwdJANGAN PASTI KONTEN DI SINI. Lihat saja dan pastikan pengguna memiliki shell asli sebagai bit terakhir dari baris mereka.
coteyr

1
catatan, cara yang lebih tepat untuk melakukan ini adalah mengatur shell ke "false" yang akan menimbulkan kesalahan. Meskipun beberapa sistem dan akun masih menggunakan true untuk alasan teknis atau psudo-keamanan (untuk memperburuk ingusan wana-be-hacker)
coteyr
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.