Случайно запустил команду
sudo chmod -R o+x /home
на моей Ubuntu 12.10.
Что мне теперь делать? это опасно? У меня нет резервной копии раздела, поэтому я думаю, что эта команда необратима. Так мне переустановить всю систему из-за этой ошибки?
Вы только что изменили права доступа ко всем пользовательским файлам для исполняемых файлов (и каталогов для поиска, что по умолчанию) для всех пользователей - вероятно, не то, что вы хотите, но, вероятно, и не конец света - особенно если вы единственный пользователь на машине.
Можно подумать, что можно сделать find
для каталогов документов и отключить этот исполняемый флаг для обычных файлов, если это вас там беспокоит.
Если система свежая, я мог бы подумать о ее переустановке, чтобы она выглядела красиво и чисто :)
Лучший способ исправить это зависит от деталей вашей системы. К счастью, вы, вероятно, знаете эти детали.
В файлах +x
означает, что их можно запускать как программу. (На самом деле, он предоставляет разрешение на , попробуйте . Если они не являются реальными исполняемыми двоичными файлами или файлами сценариев с строкой хэш-банга , это все равно не удастся.)
Для каталогов (то есть папок) разрешение +x
означает что-то еще. Исполняемые разрешения для папки дают возможность входить в папку и ее подпапки (хотя ее подпапки могут не иметь необходимых разрешений для этого) и пытаться получить доступ к файлам внутри папки (файлы могут иметь или не иметь разрешения, которые позволяют чтобы добиться успеха).
Это был o+x
. o
означает другие . Он управляет разрешениями пользователей, которым не принадлежит файл или папка, а также которые не являются членами «владельца группы» файла или папки.
Если пользователю (скажем, вам) не нужно обмениваться файлами с другими пользователями, тогда безопасно отобрать разрешения на выполнение для других , при условии, что вы только сделайте это везде внутри вашей домашней папки . Ваша домашняя папка - /home/username
, где username
заменяется вашим реальным именем пользователя. /home
сама по себе не является вашей домашней папкой, а является папкой, которая содержит всех домашних папок. Поскольку сам по себе /home
фактически не принадлежит какому-либо человеку-пользователю компьютера, обязательно, чтобы права на исполняемые файлы для другого не были удалены из самого /home
.
Итак, вы можете запустить:
cd ~
~
представляет вашу домашнюю папку. (Оболочка интерпретирует это так, вы можете ввести именно это.)
Затем вы можете выполнить:
chmod -R o-x .* *
Или, если вы хотите, чтобы другие не могли изменить каталог в вашей домашней папке. а также:
chmod -R o-x ~
Это намеренно, что я не написал sudo
. Вы по-прежнему являетесь владельцем файлов в вашей домашней папке, поэтому вам не нужно sudo
, и отключение этого файла поможет избежать случайного изменения прав доступа к неправильным файлам и папкам. (В частности, /home
принадлежит root
, поэтому, отключив sudo
, вы убедитесь, что не случайно изменили разрешения для /home
и не смогли использовать вашу систему.)
Если у вас есть несколько папок, которыми вы делитесь с другими пользователями на машине (если вы это делаете, то вы почти наверняка знаете, вы), затем вы можете использовать вышеуказанный метод, а затем вручную добавить разрешения на выполнение для этих конкретных папок. Но если у вас их слишком много, чтобы это было практично, особенно если вы не беспокоитесь о том, что другие пользователи могут получить доступ к вещам, для которых они не предназначены, вы можете просто забрать разрешения на выполнение из [ 1134] файлы , а не из папок. После этого вы, конечно, можете выборочно удалять права доступа к исполняемым файлам у некоторых папок.
Чтобы убрать права на выполнение для других из всех файлов в домашней папке вашего пользователя, но не в каталогах, выполните:
find ~ -type f -exec chmod o-x \{\} \;
( Вы заметите, что это похоже на одно из предложений SEngstrom . Информацию о том, как это работает, см. В man find
.)