Tôi đang cố gắng chỉnh sửa nguồn.list bằng vi biên tập nhưng gặp lỗi sau khi lưu tệp:
/etc/apt/sources.list" E212: Can't open file for writing
Tôi đang cố gắng chỉnh sửa nguồn.list bằng vi biên tập nhưng gặp lỗi sau khi lưu tệp:
/etc/apt/sources.list" E212: Can't open file for writing
Câu trả lời:
For some reason the file you are writing to cannot be created or overwritten.
The reason could be that you do not have permission to write in the directory
or the file name is not valid.
Vim có một hệ thống trợ giúp tích hợp. Tôi chỉ trích dẫn những gì nó nói :h E212
.
Bạn có thể muốn chỉnh sửa tệp dưới dạng siêu người dùng sudo vim FILE
. Hoặc nếu bạn không muốn rời khỏi phiên vim hiện tại của mình (và hiện có quyền sudo phù hợp), bạn có thể phát hành:
:w !sudo tee % > /dev/null
Mà sẽ lưu các tập tin.
HTH
Thay vì mất tất cả các thay đổi của bạn và mở lại bằng sudo. Xem bản demo này về cách lưu những thay đổi đó:
Bản demo thiết lập một lần để tạo tệp chỉ đọc sở hữu gốc cho người dùng thấp hơn:
sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el
Đầu tiên mở tệp như người dùng bình thường:
vi temp.txt
Sau đó thực hiện một số thay đổi cho tập tin, nó cảnh báo bạn chỉ đọc. Sử dụng lệnh này.
:w !chmod 777 %
Sau đó viết tệp:
:wq!
Các quyền được mở rộng và tệp được lưu. Bạn cần dấu chấm than vì bạn đang chỉnh sửa tệp gốc với tư cách là người dùng ít hơn.
Giải thích về những gì lệnh đó làm:
Chữ: w có nghĩa là ghi tệp. Tiếng nổ có nghĩa là bắt đầu diễn giải như vỏ. chmod có nghĩa là quyền thay đổi, 777 có nghĩa là quyền đầy đủ ở mọi nơi. Phần trăm có nghĩa là tên tệp hiện tại.
Nó áp dụng sự thay đổi. Và nó hỏi nếu bạn muốn tải lại. Nhấn "O" cho "Ok". Không tải lại hoặc bạn sẽ mất các thay đổi của bạn.
Đối với tôi đã có một giải pháp khá đơn giản. Tôi đã cố gắng chỉnh sửa / tạo một tập tin trong một thư mục không tồn tại. Vì tôi đã có trong thư mục nên tôi đang cố chỉnh sửa / tạo tập tin.
I E pwd folder/file
và đang gõ
sudo vim folder/file
và đúng hơn là nó đang tìm thư mục trong thư mục và không lưu được.
Hoặc có lẽ bạn đang ở trên một fs gắn kết chỉ đọc
Tôi đã tham khảo Zsolt ở cấp 2, tôi nhập:
:w !sudo tee % > /dev/null
và sau đó trong tình huống của tôi, tôi vẫn không thể sửa đổi tệp, vì vậy nó đã nhắc thêm "!". vì vậy tôi nhập
:q!
sau đó nó hoạt động
đối với tôi đã làm việc thay đổi hệ thống tập tin từ Chỉ đọc trước khi chạy vim:
bash-3.2# mount -o remount rw /
Khi bạn mở tệp trong vim, sử dụng sudo. tức là: sudo vim textfile. Điều này sẽ giải quyết vấn đề.
thay đổi người dùng để root
sodu su -
duyệt đến vv
vi sudoers
tìm kiếm người dùng root trong phần đặc quyền người dùng. bạn sẽ nhận được nó như thế nào
root ALL=(ALL:ALL) ALL
thực hiện cùng một mục cho tên người dùng của bạn. nếu tên người dùng của bạn là 'myuser' thì hãy thêm
myuser ALL=(ALL:ALL) ALL
nó sẽ trông giống như
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
lưu nó thay đổi người dùng root thành người dùng của bạn. Bây giờ hãy thử tương tự khi bạn gặp vấn đề về sudoers
Có thể tệp bạn đang truy cập đã có bản sao trao đổi (hoặc phiên bản trao đổi) đã có trong cùng thư mục
Do đó trước tiên hãy xem liệu một tập tin ẩn có tồn tại hay không.
Ví dụ, xem các loại tệp sau
.system.conf.swp
Bằng cách sử dụng lệnh
ls -a
Và sau đó, xóa nó bằng ...
rm .system.conf.swp
Thông thường, tôi khuyên bạn nên bắt đầu sử dụng các đặc quyền siêu người dùng bằng cách sử dụng ...
sudo su
Tôi đã gặp lỗi này khi tôi sử dụng git rm
trên một tập tin trong một thư mục.
Tôi đã ở một cái gì đó như ~ / gitRepo / code / newFeature
Trong newFeature chỉ có một tệp. Tôi đã làm một git rm
tập tin đó sau đó cố gắng tạo một tập tin mới myNewFile bằng vi.
Ubuntu cho tôi thấy vẫn còn trong thư mục newFeature nhưng thực sự git rm
đã xóa toàn bộ thư mục.
Tôi đã phải thoát ra khỏi vi, điều hướng lên một thư mục và sau đó tạo lại thư mục newFeature.