chmod 700 -R ~ - это безопасно?

2829
Anon

Я думаю о том, чтобы сделать 'chmod 700 -R ~'. Это может быть опасно? Что может случиться, чего я не ожидаю? Кроме того, есть ли способ сохранить все файлы на $ HOME для -rwx ------?

3
Почему бы просто не `chmod go-rx ~`? Нет необходимости возвращаться. (FWIW, некоторым системам это может не понравиться, например, когда пользователи публикуют веб-сайты, используя `~ / Sites` или` ~ / www` или что-то в этом роде - тогда http-серверу нужен доступ к `~` - но вы знаю, если ты это сделал). Daniel Beck 10 лет назад 3
Конечно, если кто-то вчера сделал копию одного из общедоступных файлов Anon, восстановить его невозможно. Но что, если кто-то сделал жесткую ссылку на один из его файлов? `chmod`ing домашний каталог не повлияет на это; ему нужна рекурсия, чтобы сделать связанный файл закрытым. Scott 10 лет назад 0
Вам не нужно делать рекурсивный `chmod`. `chmod 700 ~` будет держать все любопытные глаза в вашем домашнем каталоге. mtak 10 лет назад 1
@mtak: Ммм, а вы _читали_ существующие комментарии? Scott 10 лет назад 0
Как насчет выполнения `chmod 700 / home / *` вместо рекурсивного. Так как если доступ к разрешению родительского каталога запрещен, другие пользователи не смогут получить доступ к своим подкаталогам. Если рекурсия требуется после создания новой папки в домашней папке `~`, мы должны изменить ее разрешение. Может быть трудно отслеживать все новые папки и обновлять их разрешения. @Scott alper 6 лет назад 0

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

4
Scott

The main problem I can think of is that that command will set the execute bit on all files, even those that aren’t executable.  So, if you have a file called foo, and someday you want to do cat foo or print foo and you accidentally type just foo, the shell will try to execute foo; i.e., interpret it as a shell script.  This will probably just explode in your face harmlessly, but if foo contains anything that looks like a shell command, you could get harmful results.

A lesser issue is that if you have a file that you want to preserve, and last year you did a chmod 444 to protect it from yourself, the chmod 700 will restore your write bit, and make it easier for you to clobber the file accidentally.

The solution to both issues is to do chmod go= -R ~ or chmod go-rwx -R ~, which will turn off all bits for group and others, but leave your access alone.

Могу ли я запустить `chmod 700 / home / *` вместо рекурсивного. Поскольку доступ к родительскому каталогу запрещен, другие пользователи не смогут получить доступ к своим подкаталогам. @Scott alper 6 лет назад 1
0
Brendan Stennett

Вроде как старый, но вы можете использовать chmod 700для папок и chmod 600файлов, и это решило бы проблему добавления бита выполнения для всех обычных файлов (вам нужно выполнить для папок ls).

find ~ -type d -print0 | xargs -0 chmod 700 find ~ -type f -print0 | xargs -0 chmod 600 
Эта команда GNU coreutils имеет тот же эффект: `chmod -R ~ go-rwx, u + rwX`. Сначала удаляются разрешения для группы и мира, затем добавляются чтение и запись для пользователя и выполнение в каталогах. Предупреждение: ожидается, что некоторые файлы будут иметь бит выполнения (например, в `~ / bin /` или `node_modules / bin /`). Lekensteyn 10 лет назад 2