Bagaimana cara saya mendapatkan izin untuk mengedit file konfigurasi sistem?

47

Sepertinya saya tidak dapat mengedit dan menyimpan file konfigurasi di sistem root (mis .:) /etc/dhcp/dhcpd.config; itu hanya mengatakan "izin ditolak" atau opsi simpan diblokir di editor teks.

Saya cukup yakin saya adalah pengguna root, tetapi bagaimana saya memastikannya? Jika saya pengguna root, bagaimana cara memperbaikinya?

Matthew Wilson
sumber

Jawaban:

42

Editor teks mana yang Anda gunakan? Jika Anda adalah pengguna root dan tahu kata sandinya, coba (di terminal):

  • sudoedit /etc/dhcp/dhcpd.configjika Anda menggunakan editor berbasis terminal seperti nanoatau sedang ssh'ing ke server.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config jika Anda menggunakan editor berbasis GUI seperti gedit

Dalam kedua kasus tersebut, Anda harus terlebih dahulu memberikan kata sandi root saat diminta.

Di Ubuntu 14,04 dan seterusnya, gksudotidak diinstal secara default. Anda harus menginstal gksupaket (baik dari Pusat Perangkat Lunak atau via sudo apt-get install gksu) untuk mendapatkannya.

Di Ubuntu 17.10, Wayland adalah default daripada server X tradisional, dan menjalankan editor grafis sebagai root sulit. Lihat Mengapa tidak gksu / gksudo atau meluncurkan aplikasi grafis dengan sudo bekerja dengan Wayland? untuk detail.

Di Ubuntu 18.04, gksudotidak tersedia di repositori resmi. Gunakan sudo -H <text editor>sebagai gantinya, atau yang admin://protokol :

gedit admin:///etc/dhcp/dhcpd.config
Christopher Kyle Horton
sumber
15

Jika Anda tidak ingin menggunakan terminal, Anda dapat memanggil program GUI sebagai root (contoh ini untuk Gedit):

  1. Tekan Alt+ F2untuk memunculkan dialog Run.
  2. Ketik gksudodiikuti dengan nama yang dapat dieksekusi dari program Anda (yang mungkin berbeda dari nama yang ditampilkan oleh GUI). Sebagai contoh:

    gksudo gedit
    
  3. Hit Enter.
Scott Severance
sumber
10

Saya tidak bisa memikirkan kasus di mana root akan mendapatkan permission denied.

Di 12,04 Anda dapat melakukannya seperti ini: alt+ f2dan masukkan gksudodalam kotak yang muncul seperti ini:

Dialog F2

Anda mendapatkan kotak seperti ini dan masuk geditdan klik ok:

Ketikkan gedit di dialog Run

Klik Open:

Buka tab di dalam gedit

Cukup telusuri ke file:

buka dialog file

Selesai

Peringatan: Ada pengguna-super / root karena suatu alasan. Ini agar Anda tidak sengaja menempatkan sesuatu yang buruk atau keluar dari struktur pada sesuatu yang penting karena kesalahan. Anda harus sangat berhati-hati bahwa apa pun yang Anda edit sebagai root adalah file yang benar yang ingin Anda edit DAN bahwa sintaks Anda sempurna. Jika alat lain tersedia untuk diedit, disarankan untuk menggunakannya. Misalnya, gunakan visudo perintah terminal daripada mengedit secara manual /etc/sudoers.

Beberapa file yang bisa rusak mudah dipulihkan. Lainnya relatif rumit atau Anda harus menggunakan konsol pemulihan dan banyak baris perintah.

Ya, baris perintah konsol pemulihan tampaknya sedikit lebih menakutkan daripada ini . Hati-hati.

RobotHumans
sumber
Anda mungkin perlu memperbarui ini untuk 13,04 dan yang lebih baru. Beberapa hal yang berkaitan dengan gksu / gksudo telah berubah (tidak yakin apakah itu berlaku untuk jawaban Anda atau tidak).
Seth
Ini pemahaman saya sudo sekarang secara ajaib mengekspor DISPLAY variabel lingkungan dan gksu / gksudo telah atau akan hilang. Saya belum memeriksa.
RobotHumans
rootbisa mendapatkan izin ditolak jika file telah ditetapkan tidak dapat digunakan menggunakan chattratau kadang-kadang jika disk hanya-baca.
Chai T. Rex
6

Anda dapat menguji apakah shell Anda saat ini berjalan sebagai root beberapa cara berbeda

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

Jawaban lain memberikan cara yang baik untuk meningkatkan hak akses root, jadi saya tidak akan mengulanginya. Dengan asumsi Anda adalah root dan Anda masih tidak dapat mengedit file /etc/dhcp/dhcpd.config- kemudian sangat mungkin seseorang atau beberapa program telah menggunakan chattrprogram untuk membuat berubah berkas.

Dari halaman manual chattr :

File dengan atribut 'i' tidak dapat dimodifikasi: tidak dapat dihapus atau diganti namanya, tidak ada tautan yang dapat dibuat ke file ini dan tidak ada data yang dapat ditulis ke file. Hanya pengguna super atau proses yang memiliki CAP_LINUX_IMMUTABLEkemampuan yang dapat mengatur atau menghapus atribut ini.

Anda dapat mengetahuinya dengan menggunakan lsattr

lsattr /etc/dhcp/dhcpd.config

Jika memang itu tidak berubah, Anda dapat mematikannya seperti ini:

chattr -i /etc/dhcp/dhcpd.config
pbr
sumber
3

Jika Anda menggunakan Ubuntu 17.04 atau lebih tinggi, disarankan untuk menggunakan backend admin gvfs . Cukup tambahkan admin://ke bagian depan file penuh yang ingin Anda buka di aplikasi seperti Editor Teks atau aplikasi File .

Misalnya, untuk mengubah pengaturan boot, buka

admin:///etc/default/grub

Jika Anda menggunakan Ubuntu 17.10 dengan Wayland default, sudodan gksuseperti yang disebutkan dalam jawaban yang lebih lama di sini tidak akan berfungsi.

Jeremy Bicha
sumber
2

Gunakan Editor Teks Favorit Anda

Anda dapat menggunakan sudo -eatau aliasnya sudoeditdengan editor teks favorit Anda (grafis!) Melalui VISUALvariabel lingkungan 1 :

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

yang setara dengan

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

Tentu saja Anda dapat menggunakan editor lain yang Anda sukai, misalnya leafpad, kateatau subl.

Beberapa editor menawarkan opsi baris perintah untuk selalu memulai instance baru, bahkan jika ada yang sedang berjalan. Karena sudoeditmenunggu proses editor untuk berhenti menerapkan perubahan pada file yang diedit, ini mungkin diperlukan jika Anda memiliki contoh lain dari Editor yang sama berjalan:

  • Untuk penggunaan GEdit VISUAL='gedit -s'.
  • Untuk Kate gunakan VISUAL='kate -n'.

Keuntungan

  • Tidak memerlukan aplikasi tambahan dan / atau usang.
  • Tidak memerlukan perubahan kebijakan keamanan seperti pkexec(di mana Anda harus mengedit file ... sebagai pengguna super, hal yang tepat yang coba dipecahkan oleh jawaban ini).
  • Tidak memerlukan eksekusi aplikasi yang berpotensi tidak aman dengan hak istimewa yang ditingkatkan.
  • Menggunakan konfigurasi aplikasi pengguna saat ini tetapi mengacaukan dengan izin akses file konfigurasi seperti sudo -Hdll.
  • Tidak jatuh kembali ke data konfigurasi aplikasi pengguna dari rootpengguna yang mungkin atau mungkin tidak terlihat dan berperilaku diterima.

Kekurangan

  • Anda perlu mempelajari perintah baru yang singkat.

1 EDITOR atau SUDO_EDITORbekerja juga tetapi kurang prioritas atau lebih khusus masing-masing. Lihat halaman manual untuk detailnya.

David Foerster
sumber
0

Agar aman, gunakan kembali cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup dan jalankangksu gedit /etc/dhcp/dhcpd.config

Ganti geditdengan editor pilihan Anda

Anda akan mendapatkan prompt seperti ini

kata sandi prompt

Masukkan kata sandi Anda di sini.

Jendela baru terbuka dan Anda dapat mengedit konfigurasi di sana.

Jika terjadi kesalahan, Anda dapat memulihkannya dari cadangan di folder beranda.

Anda mendapatkan "izin ditolak" karena cara Linux menangani izin.

Apa pun yang ada di $HOMEfolder itu milik pengguna, sedangkan hampir semua yang lain milik root.

The /etc/dhcp/dhcpd.conffile yang Anda coba akses milik root, dan sebagian besar file dalam /etc/milik akar secara default untuk alasan keamanan.

Anda masih dapat mengedit file ini dengan meningkatkan izin Anda.

Untuk melakukan ini, Anda memiliki sejumlah cara:

  • gunakan suyang merupakan singkatan dari pengguna sakelar. Tanpa atribut apa pun, itu berfungsi sebagai perintah untuk beralih ke akun root, tetapi Anda harus memasukkan kata sandi pengguna yang Anda gunakan, dan karena root tidak memiliki kata sandi secara default di Ubuntu (secara efektif menonaktifkan akun root) , ini tidak akan berfungsi kecuali Anda telah menetapkan kata sandi untuk root, yang tidak disarankan.

  • menggunakan sudoyang meninggikan izin Anda hanya untuk satu perintah. Ini umumnya digunakan hanya untuk aplikasi baris perintah seperti editor teks CLI seperti vim, nanodll

  • menggunakan gksuyang meninggikan izin Anda hanya untuk satu perintah, tetapi tidak seperti sudodigunakan untuk program grafis seperti editor teks GUI seperti gedit. ia menggunakan prompt grafis untuk memudahkan memasukkan kata sandi.

Amith KK
sumber
0
sudo < editor > < filelocation >

misalnya:

sudo -H gedit etc/dhcp/dhcpd.config
pengguna392272
sumber