Bagaimana cara beralih ke root tetapi tetap di direktori yang sama

9

Saya baru-baru ini beralih ke Ubuntu dan saya telah mengamati satu hal ketika saya menggunakan perintah berikut untuk beralih ke pengguna root

sudo su - root

Membawa saya langsung ke root ( /root), jadi saya kehilangan tempat di filesystem (direktori tempat saya menjalankan perintah ini). Apakah ada cara untuk beralih ke root tanpa kehilangan direktori saat ini?

Hammad Hassan
sumber

Jawaban:

16

Pertama-tama, jangan gunakan sudo su. Itu tidak salah, atau berbahaya atau apa pun, itu hanya tidak penting dan tidak berguna . Anda menjalankan dua program terpisah untuk melakukan pekerjaan yang mudah ditangani oleh satu. Jika Anda ingin memulai sebuah shell sebagai root, sudodapat melakukannya untuk Anda.

Jika Anda ingin memulai shell login (itulah yang dilakukan sudo su -), gunakan sudo -i. Namun, karena itu memulai shell login, akan membawa Anda ke direktori home root secara default.

Untuk memulai, shell non-login biasa, Anda dapat menggunakan sudo -s. Itu akan memulai shell root untuk Anda dan membuat Anda dalam direktori tempat Anda menjalankannya:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

Jadi, cara memulai shell root dan tetap berada di direktori yang sama adalah sudo -s.

terdon
sumber
1
Masalahnya mungkin yang sudo -stidak menjalankan profil pengguna target karena itu bukan shell login. Jadi mungkin pertanyaan sebenarnya adalah apakah ada cara untuk mendapatkan shell login sudo, tetapi tanpa mengubah direktori. Mungkin tidak.
Barmar
@Barmar tidak, tetapi sudo -itidak. Saya menggunakan -skarena OP tidak ingin shell login (tidak ingin pindah ke $HOME). Jika Anda ingin shell login, gunakan sudo -i. Saya telah diposting perbandingan lingkungan dari sudo -i, su -, sudo -sdan sudalam pertanyaan saya di sini jika Anda ingin melihat-lihat.
terdon
Baru saja saya punya pengalaman yang sangat buruk dengan perintah ini, sudo -s. Meskipun tidak mengubah direktori tetapi tidak memberi saya akses root penuh. Beberapa file saya ada di direktori tetapi saya tidak dapat melihatnya sebagai pengguna normal dan sebagai pengguna root dengan cara ini (sudo -s). Kemudian saya menggunakan cara lama (sudo su - root) dan pergi ke direktori dan file saya sekarang terlihat oleh saya. Mengapa sudo -s memberi saya akses terbatas?
Hammad Hassan
@HammadHassan tidak mungkin apa yang Anda gambarkan bisa terjadi. Pasti ada hal lain yang terjadi. Apa maksud Anda "tidak dapat melihat" file? Apakah Anda mungkin bermaksud "tidak dapat membaca file"? Apakah Anda mungkin menggunakan enkripsi?
terdon
"tidak dapat melihat" berarti perintah sederhana "ls". Itu tidak menunjukkan saya file saya. Tidak ada enkripsi sama sekali. File saya sederhana. Dan ini benar-benar terjadi.
Hammad Hassan
8

Ini sangat sederhana. Ketik saja

sudo su

dari pada

sudo su - root

Ini akan membuat Anda tetap di folder yang sama dengan root.

Joo Bagus
sumber
9
Ini tidak salah, maksud saya itu berhasil, tetapi menggunakan sudo sutidak masuk akal. Itu untuk apa sudo -s. Saya tidak pernah mengerti mengapa begitu banyak tutorial Ubuntu menyarankan sudo su.
terdon
@terdon Saya juga tidak pernah memahaminya, tetapi tampaknya tersebar luas di antara semua pengguna Linux. Mungkin aliterasi membuatnya lebih mudah diingat.
Barmar
@Barmar secara pribadi, saya hanya melihatnya di dunia Ubuntu. Karena sebagian besar sistem Linux memiliki akun root normal secara default, saat membutuhkan shell Anda akan melakukannya su(sendiri, tidak sudo). Namun, karena Ubuntu secara default menonaktifkan akun root, itu sudo sutelah datang secara alami. itu juga, ternyata , kasus di beberapa sudut dunia UNIX juga, tapi di Linux, saya hanya melihat di Ubuntu.
terdon
@terdon Saya telah melihatnya selama beberapa dekade, saya bahkan tidak yakin distribusi apa yang kami gunakan. Kami menggunakan Debian di perusahaan saya saat ini, dan rekan kerja saya menggunakannya.
Barmar