Làm cách nào để có quyền chỉnh sửa tệp cấu hình hệ thống?


47

Tôi dường như không thể chỉnh sửa và lưu tệp cấu hình trong hệ thống gốc (ví dụ /etc/dhcp/dhcpd.config:); nó chỉ nói "quyền bị từ chối" hoặc tùy chọn lưu bị chặn trong trình soạn thảo văn bản.

Tôi khá chắc chắn tôi là người dùng root, nhưng làm thế nào để đảm bảo? Nếu tôi là người dùng root, làm cách nào để khắc phục điều này?

Câu trả lời:


42

Bạn đang sử dụng trình soạn thảo văn bản nào? Nếu bạn là người dùng root và biết mật khẩu, hãy thử (trong một thiết bị đầu cuối):

  • sudoedit /etc/dhcp/dhcpd.confignếu bạn đang sử dụng một trình soạn thảo dựa trên thiết bị đầu cuối như nanohoặc đang vào máy chủ.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config nếu bạn đang sử dụng trình soạn thảo dựa trên GUI như gedit

Trong cả hai trường hợp, trước tiên bạn cần cung cấp mật khẩu gốc khi được yêu cầu.

Trong Ubuntu 14.04 trở đi, gksudokhông được cài đặt theo mặc định. Bạn sẽ phải cài đặt gksugói (từ Trung tâm phần mềm hoặc qua sudo apt-get install gksu) để có được gói đó.

Trong Ubuntu 17.10, Wayland được mặc định thay vì máy chủ X truyền thống và việc chạy các trình soạn thảo đồ họa khi root là khó khăn. Xem Tại sao không gksu / gksudo hoặc khởi chạy một ứng dụng đồ họa với sudo hoạt động với Wayland? để biết chi tiết.

Trong Ubuntu 18.04, gksudokhông có sẵn trong kho chính thức. Sử dụng sudo -H <text editor>thay vào đó, hoặc các admin://giao thức :

gedit admin:///etc/dhcp/dhcpd.config

15

Nếu bạn không muốn sử dụng thiết bị đầu cuối, bạn có thể gọi chương trình GUI là root, do đó (ví dụ này là dành cho Gedit):

  1. Nhấn Alt+ F2để hiển thị hộp thoại Run.
  2. Nhập gksudotheo sau là tên thực thi của chương trình của bạn (có thể khác với tên được hiển thị bởi GUI). Ví dụ:

    gksudo gedit
    
  3. Trúng Enter.

10

Tôi không thể nghĩ về một trường hợp mà root sẽ nhận được permission denied.

Trong 12.04, bạn có thể làm như thế này: alt+ f2và nhập gksudovào ô xuất hiện như thế này:

Đối thoại F2

Bạn nhận được một hộp như thế này và nhập geditvà nhấp vào ok:

Nhập gedit trong đối thoại Run

Bấm Open:

Mở tab bên trong gedit

Chỉ cần duyệt đến tệp:

mở tập tin đối thoại

Làm xong

Cảnh báo: Có một siêu người dùng / root vì một lý do. Vì vậy, bạn không vô tình đặt một cái gì đó xấu hoặc ra khỏi cấu trúc trong một cái gì đó quan trọng do nhầm lẫn. Bạn nên cực kỳ cẩn thận rằng bất cứ điều gì bạn chỉnh sửa dưới dạng root đều là tệp chính xác mà bạn muốn chỉnh sửa VÀ cú pháp của bạn là hoàn hảo. Nếu các công cụ khác có sẵn để chỉnh sửa, bạn nên sử dụng các công cụ đó. Chẳng hạn, sử dụng visudo lệnh terminal thay vì chỉnh sửa thủ công /etc/sudoers.

Một số tệp có thể bị rối rất dễ khôi phục. Những người khác tương đối phức tạp hoặc bạn phải sử dụng bàn điều khiển phục hồi và rất nhiều dòng lệnh.

Vâng, dòng lệnh console console có vẻ hơi đáng sợ hơn cả cái này . Chỉ cần cẩn thận.


Bạn có thể cần cập nhật cái này cho 13.04 và mới hơn. Một số điều liên quan đến gksu / gksudo đã thay đổi (không chắc điều đó có áp dụng cho câu trả lời của bạn hay không).
Seth

Theo hiểu biết của tôi, sudo hiện xuất khẩu một cách kỳ diệu các biến môi trường HIỂN THỊ và gksu / gksudo đã biến mất hoặc sẽ biến mất. Tôi đã không kiểm tra mặc dù.
RobotHumans

rootcó thể bị từ chối nếu tập tin đã được đặt bất biến bằng cách sử dụng chattrhoặc đôi khi nếu đĩa chỉ đọc.
Chai T. Rex

6

Bạn có thể kiểm tra xem shell hiện tại của bạn có đang chạy bằng root một vài cách khác nhau không

~/ > 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)

Các câu trả lời khác đưa ra những cách tốt để leo thang đến đặc quyền gốc, vì vậy tôi sẽ không lặp lại những điều đó. Giả sử bạn gốc và bạn vẫn không thể chỉnh sửa các tập tin /etc/dhcp/dhcpd.config- sau đó rất có thể là một ai đó hoặc một số chương trình đã sử dụng chattrchương trình để làm cho các tập tin không thay đổi.

Từ trang hướng dẫn chattr :

Không thể sửa đổi tệp có thuộc tính 'i': không thể xóa hoặc đổi tên, không thể tạo liên kết đến tệp này và không có dữ liệu nào có thể được ghi vào tệp. Chỉ có siêu người dùng hoặc một quá trình sở hữu CAP_LINUX_IMMUTABLEkhả năng mới có thể thiết lập hoặc xóa thuộc tính này.

Bạn có thể tìm hiểu bằng cách sử dụng lsattr

lsattr /etc/dhcp/dhcpd.config

Nếu thực sự nó bất biến, bạn có thể tắt nó như thế này:

chattr -i /etc/dhcp/dhcpd.config

3

Nếu bạn đang sử dụng Ubuntu 17.04 trở lên, bạn nên sử dụng phụ trợ quản trị gvfs . Chỉ cần thêm admin://vào phía trước của filepath đầy đủ mà bạn muốn mở trong một ứng dụng như Trình soạn thảo văn bản hoặc ứng dụng Tệp .

Chẳng hạn, để thay đổi cài đặt khởi động, hãy mở

admin:///etc/default/grub

Nếu bạn đang sử dụng Ubuntu 17.10 với Wayland mặc định sudogksunhư được đề cập trong câu trả lời cũ hơn ở đây sẽ không hoạt động.


2

Sử dụng trình soạn thảo văn bản yêu thích của bạn

Bạn có thể sử dụng sudo -ehoặc bí danh của nó sudoeditvới trình soạn thảo văn bản (đồ họa!) Yêu thích của bạn thông qua VISUALbiến môi trường 1 :

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

tương đương với

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

Tất nhiên bạn có thể sử dụng bất kỳ trình soạn khác mà bạn thích, ví dụ leafpad, katehoặc subl.

Một số trình soạn thảo cung cấp tùy chọn dòng lệnh để luôn bắt đầu một phiên bản mới, ngay cả khi một trình duyệt hiện đang chạy. Vì sudoeditchờ quá trình biên tập kết thúc để áp dụng các thay đổi cho tệp đã chỉnh sửa, điều này có thể cần thiết nếu bạn có các phiên bản khác của cùng Trình chỉnh sửa đang chạy:

  • Để sử dụng GEdit VISUAL='gedit -s'.
  • Cho Kate sử dụng VISUAL='kate -n'.

Ưu điểm

  • Không yêu cầu các ứng dụng bổ sung và / hoặc không dùng nữa.
  • Không yêu cầu thay đổi chính sách bảo mật như pkexec(mà bạn cần chỉnh sửa các tập tin là siêu người dùng, điều chính xác mà câu trả lời này đang cố gắng giải quyết).
  • Không yêu cầu thực thi các ứng dụng có khả năng không an toàn với các đặc quyền nâng cao.
  • Sử dụng cấu hình ứng dụng của người dùng hiện tại nhưng gây rối với quyền truy cập tệp cấu hình như sudo -Hv.v.
  • Không quay trở lại dữ liệu cấu hình ứng dụng người dùng của rootngười dùng có thể hoặc không thể nhìn và hành xử chấp nhận được.

Nhược điểm

  • Bạn cần học một lệnh mới ngắn.

1 EDITOR hoặc SUDO_EDITORlàm việc quá nhưng ít ưu tiên hơn hoặc được chuyên môn hóa tương ứng. Xem trang hướng dẫn để biết chi tiết.


0

Để an toàn, hãy sao lưu cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup và sử dụnggksu gedit /etc/dhcp/dhcpd.config

Thay thế geditbằng trình soạn thảo bạn chọn

bạn sẽ nhận được một lời nhắc như thế này

nhắc mật khẩu

Nhập mật khẩu của bạn ở đây.

Một cửa sổ mới mở ra và bạn có thể chỉnh sửa cấu hình của mình ở đó.

Trong trường hợp có lỗi xảy ra, bạn có thể khôi phục nó từ bản sao lưu của mình trong thư mục nhà.

Bạn nhận được "quyền bị từ chối" vì cách Linux xử lý quyền.

Bất cứ điều gì trong $HOMEthư mục thuộc về người dùng, trong khi hầu hết mọi thứ khác thuộc về root.

Các /etc/dhcp/dhcpd.conftập tin bạn đang cố gắng truy cập thuộc về root, và hầu hết các tập tin trong /etc/thuộc về gốc theo mặc định vì lý do an ninh.

Bạn vẫn có thể chỉnh sửa tệp này bằng cách nâng cao quyền của mình.

Để làm điều này, bạn có một số cách:

  • sử dụng sulà viết tắt của người dùng chuyển đổi. Không có bất kỳ thuộc tính nào, nó hoạt động như một lệnh để chuyển sang tài khoản root, nhưng bạn cần nhập mật khẩu của người dùng mà bạn đang chuyển sang và vì root không có mật khẩu theo mặc định trên Ubuntu (vô hiệu hóa tài khoản root) , điều này sẽ không hoạt động trừ khi bạn đã đặt mật khẩu cho root, điều này không được khuyến khích.

  • sử dụng sudomà nâng cao sự cho phép của bạn chỉ cho một lệnh. Điều này thường chỉ được sử dụng cho các ứng dụng dòng lệnh như trình soạn thảo văn bản CLI như vim, nanov.v.

  • sử dụng gksumà nâng cao quyền của bạn chỉ cho một lệnh, nhưng không giống như sudođược sử dụng cho các chương trình đồ họa như trình soạn thảo văn bản GUI như thế nào gedit. nó sử dụng một dấu nhắc đồ họa để tạo điều kiện nhập mật khẩu.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.