Ошибка разрешения папки

Вы можете использовать списки для создания каталогов, и это может стать довольно диким.

Некоторые примеры, чтобы заставить людей задуматься об этом:

mkdir sa{1..50}
mkdir -p sa{1..50}/sax{1..50}
mkdir {a-z}12345 
mkdir {1,2,3}
mkdir test{01..10}
mkdir -p `date '+%y%m%d'`/{1,2,3} 
mkdir -p $USER/{1,2,3} 
50 каталогов от sa1 до sa50 но каждая из каталогов будет содержать 50 раз sax1 через sax50 (-p создаст родительские каталоги, если их не существует). 26 каталогов из списка с разделителями-запятыми от a12345 до z12345 делают dirs 1, 2 и 3. 10 каталогов с test01 до [ f4]. то же, что и 4, но с текущей датой в качестве каталога и 1,2,3 в нем. то же, что и 4, но с текущим пользователем в качестве каталога и 1,2,3 в нем.

Итак, если я правильно понял и вы хотите создать некоторые каталоги, а внутри них - новые каталоги, тогда вы можете сделать это:

mkdir -p sa{1..10}/{1,2,3}

и получить sa1, sa2, ..., sa10 и внутри каждый из них 1, 2 и 3.

0
задан 16 October 2017 в 19:19

4 ответа

Справочники требуют флагов исполняемого файла, поэтому попробуйте sudo chmod -R 776 /tmp/test.

Linux / Unix требует бит выполнения, чтобы пользователь мог ввести каталог и получить доступ к его содержимому, включая список того, что внутри него , Флаги запуска каталога ведут себя иначе, чем флаг чтения файла.

Однако файлы внутри могут быть 666.

5
ответ дан 18 July 2018 в 05:12

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

4 (r--): Содержимое каталога может быть показано (ls) 2 (-w-): содержимое каталога может быть изменено (create / delete / rename) 1 (--x): Доступ к каталогу возможен с помощью cd или аналогичного.

Обратите внимание, что для каталогов разрешение w не вступит в силу, если не установлен x.

В вашем случае ваше разрешение установлено на бит 6 (rw-), который имеет следующие эффекты:

Вы можете видеть содержимое данной папки Вы не можете видеть метаданные для папки Вам не разрешено cd в эту папку или любые дочерние папки. Вы не можете редактировать метаданные (поскольку x не предоставляется). Вы не можете открывать какой-либо файл в этой части дерева каталогов

Чтобы исправить это, просто добавьте бит x в файл:

chmod a+x /path/to/file

Это также объясняет, почему разрешение папки по умолчанию - 0755 или 0775, в то время как файлы имеют тенденцию быть 0644 или 0664: папки, в отличие от файлов, эффективно бесполезны без x.

3
ответ дан 18 July 2018 в 05:12

Справочники требуют флагов исполняемого файла, поэтому попробуйте sudo chmod -R 776 /tmp/test.

Linux / Unix требует бит выполнения, чтобы пользователь мог ввести каталог и получить доступ к его содержимому, включая список того, что внутри него , Флаги запуска каталога ведут себя иначе, чем флаг чтения файла.

Однако файлы внутри могут быть 666.

5
ответ дан 24 July 2018 в 18:16
  • 1
    Привет @Dorian ваш делает хорошо, но можете ли вы дать мне возможность предотвратить пользователей при выполнении сценария. – Shameerariff 17 October 2017 в 02:26
  • 2
    @Shameerariff Чтобы установить разрешения только для файлов, а не для каталогов, попробуйте find . -type f -exec chmod 644 {} \; в корневой папке, где вы хотите установить разрешения. НЕ ИСПОЛЬЗУЙТЕ ЭТО ТОЛЬКО ВЕЗДЕ! Он должен найти все ваши файлы и установить права на чтение и запись и игнорировать каталоги. – Dorian 17 October 2017 в 06:12
  • 3
    спасибо за вашу любезную помощь, но все же я могу создать и выполнить скрипт. Эта папка предназначена для общего пользователя, я не хочу, чтобы какой-либо пользователь создавал или выполнял какой-либо скрипт по причине безопасности. Пожалуйста, извините меня, я разработчик не SysAdmin, поэтому мой подход в этом случае может быть идиотским для профессионального администратора sys. – Shameerariff 17 October 2017 в 07:49
  • 4
    @Shameerariff Не беспокойтесь! И я извиняюсь за свой первоначальный ответ. Повторите попытку, но с sudo chmod -R 776 /tmp/test. Это установит read-write-execute (77) для владельца и группы и read-write (6) для «всех остальных». Теперь я думаю, что пользователь может написать новый файл, но не сделать его исполняемым. У меня нет машины Linux, чтобы проверить ее самостоятельно, но это должно сработать. – Dorian 17 October 2017 в 18:12
  • 5
    Теперь разрешение для обычного пользователя исчезло. Теперь это выглядит как ls -l / tmp / test ls: невозможно получить доступ к '/ tmp / test / db': Permission denied ls: невозможно получить доступ к '/ tmp / test / test': Permission denied ls: невозможно получить доступ к '/ tmp / test / sp ': Permission denied ls: невозможно получить доступ к' /tmp/test/test.sh ': разрешение отклонено всего 0 d ????????? ? ? ? ? ? db d ????????? ? ? ? ? ? sp d ????????? ? ? ? ? ? контрольная работа -????????? ? ? ? ? ? test.sh – Shameerariff 17 October 2017 в 20:25

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

4 (r--): Содержимое каталога может быть показано (ls) 2 (-w-): содержимое каталога может быть изменено (create / delete / rename) 1 (--x): Доступ к каталогу возможен с помощью cd или аналогичного.

Обратите внимание, что для каталогов разрешение w не вступит в силу, если не установлен x.

В вашем случае ваше разрешение установлено на бит 6 (rw-), который имеет следующие эффекты:

Вы можете видеть содержимое данной папки Вы не можете видеть метаданные для папки Вам не разрешено cd в эту папку или любые дочерние папки. Вы не можете редактировать метаданные (поскольку x не предоставляется). Вы не можете открывать какой-либо файл в этой части дерева каталогов

Чтобы исправить это, просто добавьте бит x в файл:

chmod a+x /path/to/file

Это также объясняет, почему разрешение папки по умолчанию - 0755 или 0775, в то время как файлы имеют тенденцию быть 0644 или 0664: папки, в отличие от файлов, эффективно бесполезны без x.

3
ответ дан 24 July 2018 в 18:16
  • 1
    Я получил ваш вариант, на самом деле ваше объяснение было настолько хорошим. Есть ли способ предотвратить выполнение пользователем каких-либо скриптов BASH. – Shameerariff 17 October 2017 в 02:28
  • 2
    @Shameerariff Это другой вопрос, и его лучше всего спросить. Однако вы захотите сделать это, отменив выполнение всех сценариев оболочки в этой папке. – Kaz Wolfe 17 October 2017 в 02:37
  • 3
    Вы правы, можете ли вы дать мне решение по этому комментарию, спасибо заранее – Shameerariff 17 October 2017 в 03:39

Другие вопросы по тегам:

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