Как изменить права доступа к папке и ее подпапкам / файлам за один шаг

avatar
Adam Halasz
18 сентября 2010 в 02:31
4494319
20
2027

Я хотел бы изменить права доступа к папке и всем ее подпапкам и файлам за один шаг (команду) в Linux.

Я уже пробовал команду ниже, но она работает только для указанной папки:

chmod 775 /opt/lampp/htdocs

Есть ли способ установить chmod 755 для /opt/lampp/htdocs и всего его содержимого, включая подпапки и файлы?

Кроме того, в будущем, если я создам новую папку или файл внутри htdocs, как можно автоматически установить разрешения для этого на 755?

Я тоже смотрел на этот вопрос о переполнении стека:

Как я могу установить chmod по умолчанию в терминале Linux?

Источник
jww
16 июня 2014 в 10:01
0

Вы пытаетесь написать команду в сценарии? Возможно, bash, csh или zsh?

HelloGoodbye
20 января 2016 в 10:58
4

Вы намеревались написать chmod 75 /opt/lampp/htdocs или это действительно должно быть chmod 755 /opt/lampp/htdocs?

Akash Kandpal
29 декабря 2017 в 07:25
0

sudo chown -R username: group directory ............. Это изменит владельца (как пользователя, так и группу) всех файлов и каталогов внутри каталога и самого каталога.

timelmer
1 мая 2018 в 20:38
9

@ArthurDent, потому что этот вопрос (хотя и совершенно верный и полезный) больше подходит для сайта SE, ориентированного на систему, такого как SuperUser или ServerFault. Это напрямую не связано с программированием.

Arthur Dent
2 мая 2018 в 15:42
38

@timelmer Конечно, но я спрашиваю еще раз, почему используются теги «permissions», «folder» и «cmod»? Когда cmod можно было бы использовать «специально» для программирования?

Joffrey
1 августа 2018 в 14:44
3

@timelmer Разве этот вопрос не касается программирования на bash?

timelmer
2 августа 2018 в 17:59
11

Если вы хотите быть действительно разборчивым, Bash на самом деле является языком сценариев, но также и php, который SO, похоже, не возражает.

Patrick Sanan
6 мая 2019 в 15:17
1

Так где же ссылка на этот (очевидно, очень полезный) вопрос на более подходящем сайте SE?

Anonymous Type
3 августа 2019 в 02:59
0

И то, и другое. вопрос о сценарии и тема конфигурации. Поэтому его закрыли и не перенесли.

jave.web
6 февраля 2020 в 00:52
1

Команды @timelmer linux являются программированием, кто бы ни сказал иначе, вероятно, действительно любит добавлять эти сумасшедшие ** команды в ядро ​​и дистрибутивы Linux. В любом случае имя программы + аргументы - это языковая конструкция, и даже с точки зрения естественного языка это само определение программирования x).

Javid Sattar
1 марта 2020 в 13:50
1

эта работа для меня -> sudo chmod -R -f 777 / home / $ USER / $ APP_ROOT

Shekhar
5 мая 2020 в 10:49
0

runwithcode.com/category/communication-commands

Ilya Levin
26 января 2021 в 09:58
0

В моем случае мне также нужно было добавить флаг «x» для исполняемых скриптов: find . -type f -name "*.sh" -exec chmod +x {} \;

Ответы (20)

avatar
WombleGoneBad
16 июля 2012 в 20:42
3253

Остальные ответы верны, поскольку chmod -R 755 установит эти разрешения для всех файлов и подпапок в дереве. Но зачем вам ? Это может иметь смысл для каталогов, но зачем устанавливать бит выполнения для всех файлов?

Я подозреваю, что вы действительно хотите установить каталоги на 755 и либо оставить файлы в покое, либо установить их на 644. Для этого вы можете использовать команду find. Например:

Чтобы изменить все каталоги на 755 (drwxr-xr-x):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Чтобы изменить все файлы на 644 (-rw-r--r--):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

Несколько слов: (спасибо @ tobbez)

  • chmod 755 {} указывает команду, которая будет выполняться find для каждого каталога
  • chmod 644 {} указывает команду, которая будет выполняться find для каждого файла
  • {} заменяется на путь
  • ; точка с запятой сообщает find, что это конец команды, которую предполагается выполнить
  • \; точка с запятой экранирована, иначе она будет интерпретирована оболочкой вместо find
Nilzor
15 марта 2013 в 10:14
260

Кто-нибудь хочет объяснить, что означает {} \; в конце строки?

tobbez
29 марта 2013 в 15:46
340

@Nilzor chmod 644 {} \; указывает команду, которая будет выполняться find для каждого файла. {} заменяется путем к файлу, а точка с запятой обозначает конец команды (экранирована, иначе она будет интерпретирована оболочкой вместо find).

FlavorScape
28 июня 2013 в 00:31
27

«но зачем устанавливать бит выполнения для всех файлов?» Почему бы и нет? Я новичок в Ubuntu / Linux ...

Alexandr Kurilin
26 июля 2013 в 03:11
15

@FlavorScape Womble устанавливает бит выполнения исключительно для каталогов, возвращаемых find. Разрешение на выполнение в каталоге позволяет классу пользователей отображать содержимое этого каталога и делать в него cd. Вообще говоря, вы хотите, чтобы и r, и x в каталоге были доступны вам, даже если могут быть странные крайние случаи, когда вы устанавливаете только один или другой. См. Это руководство для получения дополнительной информации: nixsrv.com/llthw/ex23

JGarrido
8 января 2014 в 18:26
29

За исключением sleepynate, в каждом ответе пренебрегали аспектом его вопроса, касающимся настройки разрешений для файлов / папок, созданных в будущем .

Ejoso
26 мая 2014 в 06:41
1

@tobbez не использует {} \; передать вывод find в команду chmod? Другими словами, я думаю, что {} \; задает параметры (файл / путь), которые передаются из команды find, которые впоследствии будут получены, в данном случае, конвейером команды chmod.

felwithe
14 июля 2014 в 23:25
0

Потому что я скачал репозиторий с плохими разрешениями. Сотни файлов, половина из них должна быть исполняемой. Поэтому я бы chmod их всех, чтобы построить проект.

mckenzm
12 декабря 2014 в 01:49
1

Хм .. неприятный вопрос по наследству. Далее, что с fstab? Как правило, многие приложения LAMP (например, WP) хотят или ожидают 755 для всего, что находится под docroot, а 600 управляются в порядке исключения в другом месте. Но проверьте монтирование CIFS, поскольку chmod можно игнорировать, несмотря на сообщение об успешном выполнении. (Не предлагать удаленное хранилище под www или в другом месте.)

jackvsworld
21 июля 2015 в 04:01
0

@mckenzm Было ли это тонким намеком (установите липкий бит , и содержимое унаследует разрешения ?)

mckenzm
21 июля 2015 в 08:05
0

Да, стараясь не болтать, ни один из ответов также не охватывает флаги v или c, которые при использовании рекурсивно подтверждают или повторяют измененные артефакты. Хорош для оценки «дрейфа». Как старый пользователь WP, мне понравился плагин "Serverbuddy", который проверял сайт на 755. Я не хотел вдаваться в подробности chown или липких битов, или следующего, что мы знаем, что мы говорим о ACL и сторонних схемах. chmod 755 -Rc {target} работает.

Goose
18 мая 2016 в 13:33
3

Для этого мне пришлось сделать /path/to/directory/*, чтобы заставить его работать. Надеюсь, это кому-то поможет.

sun
1 сентября 2016 в 11:58
3

По крайней мере, заполнитель следует заключить в одинарные кавычки, чтобы потенциально существующие пробелы в именах файлов не приводили к появлению нескольких аргументов; то есть: -exec chmod 755 '{}' \; -… и при использовании одинарных кавычек для заполнителя легче запомнить возможность экранирования точки с запятой с помощью одинарных кавычек; то есть: -exec chmod 755 '{}' ';'

bgStack15
1 сентября 2016 в 15:25
0

Duckduckgo показывает этот ответ для поиска linux make directories public and files public chmod

Jake Hm
16 декабря 2016 в 15:03
1

Разве вы не хотите 755 в каталоге исполняемых скриптов?

Mark Kramer
9 марта 2017 в 00:38
1

Когда я это делаю, новые файлы, которые создаются внутри каталога, не наследуют правильные разрешения, эта команда отлично работает с любыми существующими файлами, но каждый раз, когда я создаю новый файл, мне нужно запускать команду снова.

6005
12 октября 2017 в 22:21
0

У меня это не работает :( он перебирает кучу пустых строковых каталогов. Я думаю, это потому, что я в fish, а не в bash. Мне нужно просто вернуться к bash.

Liam Wheldon
16 мая 2018 в 12:59
0

Чтобы добавить, я также добавил -maxdepth 1 к команде, чтобы ускорить ее в моем случае, поскольку мне нужно было применить только к новым папкам, созданным в корне целевого объекта, а не ко всем существующим подпапкам тех (которые уже имели разрешение, иначе не существовало бы)

Accountant م
11 июля 2018 в 00:27
1

«Это может иметь смысл для каталогов» , если это никому не понятно, то есть потому, что пользователю необходимо разрешение на выполнение в каталоге, чтобы просмотреть / открыть его. источник

G-Man Says 'Reinstate Monica'
13 октября 2018 в 02:03
0

Связанный: Измените все права доступа к папке с помощью одной команды atU & L.

Smart Coder
17 июня 2019 в 17:45
1

найти . -type d -exec chmod 777 {} \;

Javid Sattar
1 марта 2020 в 13:54
0

эта работа для меня -> sudo chmod -R -f 777 / home / $ USER / $ APP_ROOT

Peter Mortensen
5 сентября 2021 в 10:44
0

chmodcommand.com может использоваться для перевода восьмеричной странности. Например, https://chmodcommand.com/chmod-755/, https://chmodcommand.com/chmod-644/ и https: // chmodcommand .com / chmod-777 /.

avatar
Pawel Cioch
31 января 2021 в 06:23
-1

Использование:

sudo chmod -R a=-x,u=rwX,g=,o= folder

Владелец rw, другие без доступа и каталог с rwx. Это удалит существующий символ 'x' в файлах.

Символьное вычисление chmod объясняется в Chmod 744 .

avatar
Jakub A Suplicki
19 ноября 2020 в 03:44
6

Для тех, кто все еще борется с проблемами с разрешениями, перейдите на один уровень каталога cd .. из корневого каталога вашего проекта, добавьте себя (пользователя) в каталог и дайте разрешение на редактирование всего внутри (проверено на macOS).

Для этого вы должны запустить эту команду (предпочтительно):

sudo chown -R username: foldername .*

Примечание: для несохраненных на данный момент изменений может потребоваться сначала перезапустить редактор кода, чтобы сохранить возможность без запроса пароля.

Также помните, что вы можете нажать Tab , чтобы увидеть параметры при вводе имени пользователя и папки, чтобы упростить себе задачу.


Или просто:

sudo chmod -R 755 foldername

но, как упоминалось выше, вам нужно быть осторожным со вторым методом.

Imran Faruqi
12 июня 2021 в 18:13
0

Простой, но эффективный ответ.

JEEVA RAJA PAUL
3 сентября 2021 в 09:15
0

Большое спасибо. Это сильно сэкономило мне время

avatar
Alberto Salvia Novella
10 ноября 2020 в 19:07
0

Для уже созданных файлов:

find . \( -type f -exec chmod g=r,o=r {} \; \) , \( -type d -exec chmod g=rx,o=rx {} \; \)

Для будущих созданных файлов:

sudo nano /etc/profile

И установить:

umask 022

Общие режимы:

  • 077: u = rw, g =, o =
  • 007: u = rw, g = rw, o =
  • 022: u = rw, g = r, o = r
  • 002: u = rw, g = rw, o = r
avatar
MD SHAYON
12 октября 2020 в 15:34
1

Вы можете изменить разрешения с помощью следующей команды:

sudo chmod go=rwx /opt/lampp/htdocs
avatar
Debian.
16 июня 2014 в 09:34
2

Все очень просто.

В Терминале перейдите в файловый менеджер. Пример: sudo nemo. Перейдите к /opt/, а затем нажмите Свойства Разрешение . А затем Другое . Наконец, перейдите для создания и удаления и доступа к файлам на чтение и напишите и нажмите кнопку Применить ... И это работает.

Vikranth Inti
18 мая 2020 в 18:22
1

что такое sudo nemo?

Brice M. Dempsey
24 октября 2020 в 07:49
1

nemo - графический файловый менеджер для Cinnamon. Он может быть установлен или не установлен и требует наличия графической среды.

avatar
Sanchit Gupta
30 апреля 2014 в 00:22
14

chmod -R 755 directory_name работает, но как сохранить новые файлы в 755? Разрешения файла становятся разрешениями по умолчанию.

Kavindu Gayantha
3 октября 2019 в 14:49
0

Я сделал это, но не могу открыть терминал оттуда. Я не могу это исправить.

avatar
ravi ranjan
19 апреля 2014 в 15:43
172

Вы можете использовать -R с chmod для рекурсивного обхода всех файлов и подпапок.

Вам может понадобиться sudo, поскольку это зависит от LAMP, установленного текущим пользователем или другим:

sudo chmod -R 755 /opt/lampp/htdocs
lomse
29 сентября 2016 в 11:52
17

Почему-то sudo chmod 755 -R /directory не работал, а sudo chmod -R 755 /directory работал. Странный. Кстати, я использую Mac OS X.

orionrush
5 декабря 2016 в 16:51
8

По моему опыту, это правильно. Флаг должен появляться сразу после chmod, а не где-либо в строке.

Sandip Patel - SM
11 октября 2017 в 07:37
1

Выше написанная команда неверна. Правильная рекурсивная команда: sudo chmod -R 755 / opt / lampp / htdocs Примечание: -R должно быть до 755

Anonymous Type
3 августа 2019 в 03:08
1

нужно редактировать, не работает в mac osx без педантичного синтаксиса.

elad silver
10 октября 2019 в 18:02
0

ИСПОЛЬЗОВАНИЕ OSX: sudo chmod 777 logs / -R ПОЛУЧЕНИЕ: chmod: -R: НЕ ДОЛЖНО БЫТЬ такого файла или каталога: sudo chmod -R 777 logs /

avatar
NikolaiDante
12 января 2014 в 04:03
11

Вы хотите убедиться, что соответствующие файлы и каталоги имеют chmod-ed / разрешения для них подходят. Для всех каталогов вы хотите

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

И для всех изображений, JavaScript, CSS, HTML ... ну, вы не должны их выполнять. Так что используйте

chmod 644 img/* js/* html/*

Но для всего кода логики (например, кода PHP) вы должны установить такие разрешения, чтобы пользователь не мог видеть этот код:

chmod 600 file
avatar
Viktor
7 января 2014 в 11:39
8

Я думаю, Адам спрашивал, как изменить значение umask для всех процессов, которые пытаются работать в каталоге /opt/lampp/htdocs.

Пользовательская маска режима создания файла (umask) используется для определения прав доступа к вновь создаваемым файлам. Его можно использовать для управления правами доступа к файлам по умолчанию для новых файлов.

, поэтому, если вы будете использовать какую-либо программу FTP для загрузки файлов в /opt/lampp/htdocs, вам необходимо настроить свой FTP-сервер для использования нужной umask.

Если файлы / каталоги должны быть созданы, например, с помощью PHP, вам необходимо изменить код PHP:

<?php
    umask(0022);
    // Other code
?>

Если вы будете создавать новые файлы / папки из сеанса Bash, вы можете установить значение umask в своем профиле оболочки ~ / .bashrc файл.

Или вы можете настроить маску в файле /etc/bashrc или /etc/profile для всех пользователей.

Добавьте в файл следующее:

umask 022

Sample umask Values and File Creation Permissions
If umask value set to    User permission     Group permission     Others permission
000                            all                 all                   all
007                            all                 all                   none
027                            all             read / execute               none

А чтобы изменить права доступа для уже созданных файлов, вы можете использовать find .

avatar
chrisfargen
17 ноября 2013 в 05:47
23

Вот еще один способ установить для каталогов значение 775, а для файлов - 664.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

Может показаться длинным, но довольно круто по трем причинам:

  1. Сканирует файловую систему только один раз, а не дважды.
  2. Обеспечивает лучший контроль над тем, как обрабатываются файлы по сравнению с тем, как обрабатываются каталоги . Это полезно при работе со специальными режимами , такими как липкий бит, который вы, вероятно, захотите применить к каталогам, но не к файлам.
  3. Использует метод прямо со страниц man (см. Ниже).

Обратите внимание, что я не подтвердил разницу в производительности (если таковая имеется) между этим решением и простым использованием двух команд поиска (как в решении Питера Мортенсена). Однако видеть подобный пример в руководстве обнадеживает.

Пример со страницы man find:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and direct‐
tories into /root/suid.txt and large files into /root/big.txt.

Ура

StR
21 сентября 2017 в 12:44
0

Теперь, как превратить это в сценарий оболочки, чтобы мы могли запустить openmod $ folder?

seanahern
26 октября 2018 в 20:38
0

Народ, пользуйтесь, пожалуйста, xargs. Это экономит тысячи вызовов процессов.

Amit Naidu
15 октября 2020 в 02:47
0

{} + может делать то же самое с find, что и xargs в целом.

avatar
Prabhu
29 июля 2013 в 10:47
6

Есть два варианта поиска файлов и применения к ним chmod.

Первый - это find файл и применяется chmod, как он находит (как предлагает @WombleGoneBad).

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Второе решение - создать список всех файлов с помощью команды find и передать этот список команде chmod (как предложено @lamgesh).

chmod 755 $(find /path/to/base/dir -type d)

Обе эти версии работают нормально, пока количество файлов, возвращаемых командой find, невелико. Второе решение отлично смотрится и более читабельно, чем первое. Если файлов много, второе решение возвращает ошибку: Argument list too long.

Итак, я предлагаю

  1. Используйте chmod -R 755 /opt/lampp/htdocs, если вы хотите изменить права доступа для всех файлов и каталогов одновременно.
  2. Используйте find /opt/lampp/htdocs -type d -exec chmod 755 {} \;, если количество файлов, которые вы используете, очень велико. Параметр -type x выполняет поиск только определенного типа файла, где d используется для поиска каталога, f для файла и l для ссылки.
  3. Используйте chmod 755 $(find /path/to/base/dir -type d) в противном случае
  4. В любой ситуации лучше использовать первый
avatar
Iam Zesh
27 февраля 2013 в 06:42
31

Вы можете рассмотреть этот ответ, данный ником на суперпользователе, и использовать «один chmod» для всех файлов / папок, например:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
Lothar
26 апреля 2015 в 23:29
9

Предупреждение, легко попасть в ограничения командной строки.

Oleg Abrazhaev
16 июля 2015 в 08:49
1

У меня такая ошибка: -bash: / bin / chmod: слишком длинный список аргументов

miravalls
22 февраля 2018 в 08:13
3

Было бы лучше использовать параметр -exec для find, чтобы преодолеть ошибку Argument list too long.

G-Man Says 'Reinstate Monica'
13 октября 2018 в 02:06
0

Связанный: Измените все права доступа к папке с помощью одной команды atU & L.

Vagif
25 сентября 2020 в 20:44
1

Согласитесь с @miravalls - найдите. -type d -exec chmod 755 {} \; && найти. -type f -exec chmod 644 {} \;

avatar
Pete
31 января 2013 в 20:39
421

Если вы хотите установить разрешения для всех файлов на a+r, а для всех каталогов на a+x, и сделать это рекурсивно через все дерево подкаталогов, используйте:

chmod -R a+rX *

X (то есть заглавная X, а не маленькая x!) Игнорируется для файлов (если они уже не исполняются для кого-то), но используется для каталогов.

Aaron Adams
3 апреля 2013 в 22:53
31

Отличный ответ. Просто обратите внимание, что * не будет соответствовать скрытым файлам (имена начинаются с точки). В таком случае, возможно, имеет смысл использовать. (для текущего каталога).

chadoh
4 августа 2013 в 00:09
26

Это правильный ответ. В моем случае я хотел установить все каталоги на 775 и все файлы на 664 . Отличный ответ @ Pete привел меня к документам chmod, где я понял, что могу использовать chmod -R g+wX .. Браво!

Benoit Duffez
30 января 2014 в 15:50
9

Это не приведет к удалению x в файлах, если он у них уже есть.

Matt Browne
21 января 2015 в 19:25
7

Если это не совсем понятно, X в верхнем регистре означает «сделать исполняемыми все каталоги» (но не файлы).

nunks
19 декабря 2016 в 19:59
7

@BenoitDuffez, если ваша цель - также удалить исполняемый бит из файлов, вы можете комбинировать директивы, такие как «a-x + rX», чтобы удалить «x» из всего, а затем установить «r» для всего и «x» только для каталогов. .

Rohmer
30 марта 2017 в 19:47
2

В chmod -R a+rX и chmod -R g+wX, a - это все, а g - это группа. Также есть u пользователь / владелец и o другие. В этих командах вы добавляете бит чтения / записи и бит выполнения (заглавная буква X означает «только если файл является каталогом»).

isaaclw
9 апреля 2019 в 19:10
0

Большой. Итак, что я регулярно хочу сделать, когда я повторно chmod мою папку: sudo chmod -R u+rwX,g+rwX,o+rX . установка 664 для файлов и 775 для папок.

Pawel Cioch
31 января 2021 в 06:20
0

sudo chmod -R a=-x,u=rwX,g=,o= folder установит владельца rw, других без доступа, каталог с rwx. Это очистит существующие x в файлах

Evan Morrison
23 июля 2021 в 23:09
1

поскольку я почти уверен, что это тот ответ, который хочет большинство людей, я бы хотел, чтобы его можно было переместить в начало ... Чтобы найти все эти ответы, требуется время!

avatar
wmartin
10 июля 2012 в 09:33
12

Для Mac OS X 10.7 (Lion) это:

chmod -R 755 /directory

И да, как говорят все остальные, будьте осторожны при этом.

avatar
Pramendra Gupta
18 сентября 2010 в 02:40
87

Правильная рекурсивная команда:

sudo chmod -R 755 /opt/lampp/htdocs

-R: изменить каждую подпапку, включая текущую папку

shareef
7 февраля 2017 в 07:56
1

привет ты уверен насчет текущей папки ты одна, несмотря на путь?

elad silver
10 октября 2019 в 18:01
0

ИСПОЛЬЗОВАНИЕ OSX: sudo chmod 777 logs / -R ПОЛУЧЕНИЕ: chmod: -R: НЕ ДОЛЖНО БЫТЬ такого файла или каталога: sudo chmod -R 777 logs /

avatar
sleepynate
18 сентября 2010 в 02:38
59

chmod 755 -R /opt/lampp/htdocs рекурсивно установит разрешения. Невозможно автоматически установить разрешения для файлов только в этом каталоге, которые создаются после того, как вы установили разрешения, но вы можете изменить разрешения для файлов по умолчанию для всей системы, установив umask 022.

Scott Prive
2 июня 2015 в 21:19
11

Ответ sleepynate - ЕДИНСТВЕННЫЙ правильный. На плакате было задано два вопроса: 1) Как исправить разрешения для файлов и папок и 2) как изменить настройки по умолчанию (то есть «будущие» файлы). Как сказал Нейт, первый - с "chmod", а второй - с "umask". Я бы также добавил, что НЕЛЬЗЯ изменить umask только в 1 каталоге ... umask - это «все или ничего» для каждого пользователя. Однако ничто не мешает вам создать нового пользователя, который поделится с вами группами, так что вы можете просто «sudo -u someuser [create file]». Это немного нестандартно, но это прекрасный обходной путь.

Sebastian Schlicht
29 июля 2015 в 19:35
0

Думаю, вы правы, но не может ли inherit быть решением во многих случаях или он будет работать исключительно с NTFS-3G?

Jason Goal
1 ноября 2018 в 22:58
0

без разрешения папки могут быть созданы в будущем, возможно, вы не сможете скопировать папку, скажем, myforlder из других мест (например, ПК) в этот целевой каталог (на сервере), потому что он попытается создать новую папку в целевом каталоге с именем myfolder, для которой у вас нет разрешения. Поскольку у меня есть root, я просто использую chown -R username:usergroup /directory.

avatar
Nate Starner
18 сентября 2010 в 02:37
21

Использование:

sudo chmod 755 -R /whatever/your/directory/is

Однако будьте осторожны с этим. Если вы измените права доступа к неправильным файлам / папкам, это может действительно навредить вам.

avatar
Steve Robillard
18 сентября 2010 в 02:36
823

Отметьте опцию -R

chmod -R <permissionsettings> <dirname>

В будущем вы сможете сэкономить много времени, сначала проверив страницу руководства:

man <command name>

Итак, в этом случае:

man chmod
Steve Robillard
18 сентября 2010 в 02:53
38

это означает страницу руководства и является командой Linux, которая показывает страницу руководства для команды (у большинства команд Linux есть страница руководства). попробуйте man ls или man man.

Einar Ólafsson
25 января 2012 в 09:51
8

У меня это не сработало в Терминале в Mac OS X. Там я сделал "chmod -R <настройки разрешений> <имя> *", и это сработало.

Sudhir
9 ноября 2012 в 06:06
4

См. Также ответ @WombleGoneBad ниже. Вы захотите по-разному установить разрешения для файлов и папок.

ely
5 марта 2013 в 22:36
148

Я думаю, что к настоящему времени на самом деле быстрее разместить здесь или использовать Google, чем использовать man. В частности, для чего-то вроде grep, где, если вы новичок в man, поиск примеров в документе может занять очень много времени, но Google или SO предоставляют примеры в течение нескольких секунд.

Konstantin
13 августа 2014 в 07:34
0

Отличный ответ, чувак! Не могли бы вы уточнить, как начать с папки, в которой я сейчас нахожусь?

iOS Developer
27 мая 2015 в 14:53
2

Первые 2 строчки ответа хороши. Но проверка правильности вызова в Stack Overflow намного быстрее, чем просмотр страниц руководства.

Dodgie
3 октября 2015 в 00:06
0

@Adam Для подобных вопросов вам действительно следует использовать команду man.

ϹοδεMεδιϲ
24 апреля 2016 в 08:41
0

@SteveRobillard Одна проблема с решением, когда дело доходит до разрешения x / выполнение, когда вы выполняете -x; вы не хотите случайно сделать прямо не cd способным.

Soundfx4
5 мая 2016 в 18:28
17

Для справки: те, кто не знаком с Linux, могут быть не знакомы с человеком. Я знаю только о его существовании, но попытка понять, как его использовать, потребовала бы приключений в Google сама по себе. Возможно, стоящее предприятие, но вы должны понимать, что я нашел ЭТО ОЧЕНЬ пост через Google, и он ответил на ТОЧНЫЙ вопрос, который я задавал. Ресурсы, друг мой. Ресурсы бесценны. И вы можете подумать, что это было бессмысленно, и что он должен был просто проверить этого человека, но это помогло мне и СОТНИ другим людям (даже тысячам). Пожалуйста, примите это во внимание.

landed
8 июня 2017 в 17:34
4

Слишком много раз я вижу, что «проверьте справочную страницу» как способ пристыдить вас, что на самом деле довольно раздражает.

Steve Robillard
8 июня 2017 в 19:40
0

@landed это не для того, чтобы кого-то стыдить, оно предназначено для того, чтобы показать им, как ловить рыбу, а не дать им рыбу (то есть, как помочь себе).

Seth
23 мая 2019 в 13:18
0

Пожалуйста, о, пожалуйста, используйте страницы руководства. Они оооочень полезны. Люди думают, что ответ типа man chmod призван посрамить. Они не. Часто ответ тут же. Надо просто читать. Это раздражает, когда тебя просят почитать для кого-то другого. Вы получите большую помощь, если объясните, почему у вас все еще есть вопрос после прочтения страницы руководства.

avatar
Topera
18 сентября 2010 в 02:35
85

Чтобы установить все подпапки (рекурсивно), используйте -R

chmod 755 /folder -R

И используйте umask, чтобы установить значение по умолчанию для новых папок / файлов. cd / папка маска 755

sleepynate
18 сентября 2010 в 02:42
25

НЕ УСТАНАВЛИВАЙТЕ свой umask на 755! Вы не сможете перечислять, читать или использовать какие-либо файлы или каталоги, которые вы создаете!

Patrick Mutwiri
27 октября 2015 в 18:17
4

это устанавливает все в 755, включая файлы.!

svin83
8 октября 2017 в 10:28
0

@sleepynate О чем ты вообще говоришь? 755 означает, что владелец может читать, писать и выполнять, а все другие пользователи могут читать и выполнять, но не могут писать в объект.

sleepynate
14 сентября 2018 в 15:59
4

@NicHartley @ svin83 umask - это биты, которые будут замаскированы за пределами разрешений, поэтому это фактически инверсия chmod. λ ~ → umask 022 λ ~ → umask -S u=rwx,g=rx,o=rx λ ~ → umask 755 λ ~ → umask -S u=,g=w,o=w

Peter Mortensen
6 сентября 2021 в 19:02
0

В зачеркивании не должно быть необходимости (для этого и нужна история изменений). Ответ должен выглядеть так, как если бы он был написан сегодня.