Каким-то образом папка / var / www / html была преобразована в двоичный файл? Как мне конвертировать обратно?

443
user103292

Я пытался перенести некоторые файлы из домашнего каталога в папку / var / www / html. Это было невозможно из-за настроек разрешений, так как система говорила, что я не являюсь владельцем папки. Поэтому после поиска в Интернете решения я попытался выполнить следующие команды:

sudo chmod 766 -R /var/www/html sudo chmod 766 -R /var/www/ sudo chmod 766 -R /var sudo chmod 766 -R /var/ sudo chown pi /var/www/html 

Вывод ls -l / var / www / html и файла / var / www / html запрещен.

Позже я вижу, что все папки в / var / были преобразованы в двоичные файлы. Я перезапустил систему. Тогда я смог восстановить их, но только до / var / www. Папка / var / www / html была еще двоичным файлом. Как мне преобразовать его обратно в папку? Я использую Ubuntu 16.04

0
Используйте вашу резервную копию, чтобы восстановить всю структуру каталогов. Ipor Sircer 6 лет назад 2
@IporSircer Тогда? user103292 6 лет назад 0
Ни `chmod`, ни` chown` не преобразуют «папку» (директорию) в двоичный файл. Что бы ни случилось, должно быть что-то еще. И как повернуть его обратно зависит от того, что произошло. Можете ли вы отредактировать ваш вопрос с помощью `ls -l / var / www / html` и` file / var / www / html`? dirkt 6 лет назад 1
@ dirkt сделано. Я получил разрешение отказано. Не удалось опубликовать фотографию, у меня недостаточно очков репутации. Вывод: «ls: невозможно получить доступ» / var / www / html: разрешение запрещено, и «/ var / www / html: невозможно открыть` / var / www / html '(разрешение запрещено) »соответственно. user103292 6 лет назад 0
Если вы получили «разрешение запрещено», как вы узнали, что это бинарный файл? Повторите (1) как root и (2) для каждого родительского каталога (то есть сократите путь), пока не получите результат. Также попробуйте `ls -ld / var / www / html` и т. Д. Вместо этого, чтобы получить разрешения на случай, если * это * каталог. dirkt 6 лет назад 0
@dirkt Первоначально у него был значок папки. Затем позже он изменился на значок с символом текстового файла и 1 и 0 на нем. Я проверил свойства и там написано "Binary (application / octet-stream)". user103292 6 лет назад 0
Вывод @dirkt `ls -ld / var / www / html`:` ls: невозможно получить доступ '/ var / www / html': разрешение запрещено`. user103292 6 лет назад 0
@dirkt упс я попробовал еще раз как root. Выходные данные `ls -l / var / www / html`,` file / var / www / html` и `ls -ld / var / www / html` имеют значение` -rwxrw-rw- 1 root root 11321 Sep 25 11: 49 index.html`, `/ var / www / html: directory` и` drwxrw-rw- 2 root root 4096 сент. 25 11:49 / var / www / html` соответственно. user103292 6 лет назад 0

1 ответ на вопрос

1
dirkt

Как вы получили на ls -ld /var/www/htmlвыходе

drwxrw-rw- 2 root root 4096 Sep 25 11:49 /var/www/html 

это означает, что у вас есть каталог ( d), который rwдоступен для чтения и записи всем ( ), но доступен только для поиска ( x) пользователем root. Так что это не бинарный файл. Я не знаю, какую программу вы использовали, которая показывает значки и свойства папок, но что бы это ни было, это неправильно.

Это произошло потому, что вы установили разрешения для этого каталога и всех его родительских каталогов 766(что является восьмеричным rwxrw-rw-). По крайней мере, в случае /var, это абсолютно неправильно, потому что это лишит права на поиск всех некорневых частей системы, и это может сломать вещи.

Урок, который вы должны извлечь из этого, состоит в том, чтобы не слепо следовать некоторым рецептам, которые вы нашли в Интернете, не понимая, что вы делаете .

Итак, ваша первая задача - прочитать man chmod(все) и понять, какие права доступа к файлам, и как они различаются для файлов и каталогов. Если этого недостаточно, обратитесь к Google за объяснениями, пока не поймете это.

Ваша следующая задача состоит в том, чтобы установить права доступа /var, /var/wwwи /var/www/htmlк чему - то, что имеет смысл ( в зависимости от ваших потребностей). Для этого вам нужно ответить на вопрос «кто должен иметь возможность читать / писать / искать в этих каталогах». В случае /var, вы должны получить что-то вроде 755. Если нет, подумайте еще раз.

И, наконец, вы должны выполнить снова, chown pi /var/www/htmlчтобы сменить владельца этого каталога с пользователя rootна пользователя pi, потому что он не работал. Вы можете использовать, ls -dчтобы проверить, сработало ли это. И пока вы занимаетесь этим, подумайте, к какой группе он должен принадлежать (к каким группам piпринадлежит пользователь ?). Читайте man chownи man chgrp.

Спасибо, Диркт, это сработало. Я постараюсь последовать твоему совету в следующий раз. Но любая идея, почему папка была показана в виде двоичного файла. user103292 6 лет назад 0
Извините, не знаю. dirkt 6 лет назад 0

Похожие вопросы