0

Правильное использование mkdir -m -p и chown вместе

28

Я хотел бы создать каталог с помощью bash-скрипта и одновременно установить режим доступа 00755. Я использую следующую команду:

mkdir -p -m=00755 "/dir/dir2"

Правильно ли я использую эти команды вместе, и могу ли я также добавить команду chown в ту же строку, когда создаю каталог?

3 ответ(ов)

1

Команда, которую вы указали, используется для создания директории с определёнными параметрами прав доступа и владельца в Unix-подобных системах. Давайте разберём её по частям.

Команда install в данном случае выполняет несколько функций. Вот что означает каждая часть вашей команды:

  • -d: указание на то, что вы хотите создать директорию.
  • -m 0755: установка прав доступа для директории. В данном случае 0755 означает, что владелец директории имеет право на чтение, запись и выполнение, а остальные пользователи (члены группы и все остальные) могут читать и выполнять, но не могут записывать.
  • -o someuser: назначение владельца директории пользователю с именем someuser.
  • -g somegroup: назначение группы для директории как somegroup.
  • /dir/dir2: путь, по которому будет создана директория.

Полная команда будет выглядеть так:

install -d -m 0755 -o someuser -g somegroup /dir/dir2

Эта команда создаст директорию /dir/dir2, если она не существует, с правами 0755 и назначит указанного пользователя и группу в качестве владельца.

Если у вас есть какие-либо дополнительные вопросы или вам нужна помощь с другими командами, не стесняйтесь спрашивать!

0

Если вы хотите установить владельца во время создания, вы можете просто выполнить команду от имени этого пользователя, например, с помощью sudo:

sudo -uTHE_USER mkdir -p -m=00755 "/dir/dir2"

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

0

Да, это должно сработать. Что касается команды chown, просто следуйте за ней после &&. Символ && похож на ;, но следующая команда выполняется ТОЛЬКО в том случае, если предыдущая команда завершилась успешно (код выхода 0).

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь