Bagaimana saya bisa melakukan cd ke direktori sebagai root?

10

Katakanlah ada direktori yang tidak dapat saya akses. Jelas sudo cd footidak akan bekerja, karena cdshell sudah ada di dalam setiap shell yang pernah ada.

Sejauh ini, saya baru saja menggunakan sudo bash(ya saya tahu ada cara yang lebih baik) untuk mendapatkan prompt root. Lalu, saya bisa cdmasuk ke direktori untuk melihat-lihat.

Apakah ada cara yang lebih baik untuk melakukan ini?

strugee
sumber
Mengapa Anda ingin menjadi cdroot (kecuali Anda sebenarnya berada di shell root)?
tripleee
jika direktori dimiliki oleh root dan tidak ada eksekusi global
strugee
1
Itu bukan kasus yang benar. Mungkin bermanfaat untuk dapat membaca direktori, tetapi itu tidak mengharuskan direktori untuk menjadi direktori kerja Anda, yaitu Anda tidak perlu cd.
tripleee
ya, saya tidak menyadari bahwa sampai jawaban yang diterima menunjukkan bahwa saya bisa saja sudo ls.
strugee

Jawaban:

12

Tidak, tidak ada cara untuk cdke direktori yang hanya memungkinkan root tanpa menjadi root. Seharusnya tidak terlalu banyak direktori yang memiliki batasan ini. Sebagian besar waktu itu adalah akses ke file yang diberikan yang terbatas seperti /etc/shadowfile atau file log tertentu di bawahnya /var/log.

Anda dapat menggunakannya sudo ls <dir>untuk melihatnya bash. Juga saat menggunakan sudountuk menjadi root, Anda biasanya ingin mengatur pengguna ( superintah) bash, jadi gunakan perintah ini sebagai gantinya:

$ sudo su -

Anda juga dapat melakukan hal yang sama dengan -isakelar sudo :

$ sudo -i

kutipan dari halaman manual tentang sudo -i

Opsi -i (mensimulasikan login awal) menjalankan shell yang ditentukan dalam entri passwd (5) dari pengguna target sebagai shell login. Ini berarti bahwa file sumber daya khusus masuk seperti .profile atau .login akan dibaca oleh shell. Jika suatu perintah ditentukan, itu diteruskan ke shell untuk dieksekusi. Kalau tidak, shell interaktif dijalankan.

Untuk file yang tidak dapat Anda akses, Anda dapat menggunakan salah satu dari sudoperintah ini :

$ sudo tail /var/log/messages

$ sudo less /etc/shadow
slm
sumber
3
Mengapa Anda menggunakan sudo su -bukan sudo -i? Keduanya memberi Anda semua hak pengguna super meskipun yang Anda butuhkan hanyalah kemampuan CAP_DAC_READ_SEARCH.
Stéphane Chazelas
@StephaneChazelas - Saya belum pernah melihat saklar itu sebelumnya. Pengantar asli saya sudoadalah melalui lingkungan Solaris dan versi sudoyang ada di sana tidak termasuk saklar ini. Melihat melalui sudo changelog sepertinya opsi itu ditambahkan pada tahun 2004. Kira saya berkencan dengan diri saya sendiri tetapi Anda bertanya 8-). Saya akan mengubah jawaban untuk memasukkan keduanya, terima kasih!
slm
@ StéphaneChazelas saya setuju. Saya lebih suka sudo -Hikarena ia menetapkan direktori home juga (itu tidak menetapkan home secara default pada distro saya, defaultnya bisa bervariasi). Jika tidak, Anda mungkin berakhir dengan root file yang dimiliki di rumah Anda, jika itu menciptakan file baru di sana.
doug65536
5

Tidak, tidak ada. Anda perlu menjalankan shell sebagai root.

Ignacio Vazquez-Abrams
sumber
Dan, seperti yang ditunjukkan dalam komentar, itu tidak ada gunanya cdkecuali Anda menjalankan shell atau proses yang sebanding.
tripleee
0

Benar, kamu tidak bisa. Berikut ini solusinya:

sudo sh -c "cd restricted-dir; some_command"
Tagar
sumber