2012-08-15 20:46:33 +0000 2012-08-15 20:46:33 +0000
58
58

Как chown/chmod все файлы в текущем каталоге?

Я пытаюсь изменить права собственности и разрешения некоторых файлов (и каталогов) в текущем каталоге. Я попробовал это:

chown username:groupname .

…ожидая, что это повлияет на все файлы в текущем каталоге, но вместо этого повлияет только на каталог, в котором я нахожусь (что является противоположностью того, что я хочу сделать). Я хочу изменить его на все файлы, не затрагивая при этом директорию, в которой я нахожусь.

Как я могу получить chown и chmod все файлы в текущей директории?

Ответы (3)

98
98
98
2012-08-15 20:48:16 +0000

Вы хотите использовать chown username:groupname *, и пусть оболочка развернет * в содержимое текущей директории. Это изменит разрешения для всех файлов/папок в текущей директории, но не для содержимого папок.

Вы также можете сделать chown -R username:groupname ., которая изменит разрешения на текущую директорию, а затем рекурсивно опустить ее внутрь и все подпапки, чтобы изменить разрешения.

chown -R username:groupname * изменит разрешения на все файлы и папки рекурсивно, оставив при этом саму текущую директорию в покое. Этот стиль и первый стиль - то, что я использую чаще всего.

9
9
9
2012-08-15 20:48:05 +0000

Я думаю, вы хотите этого:

chown username:groupname *

Если вы также хотите рекурсивно менять подкаталоги, вам понадобится переключатель -R (-r устарел):

chown -R username:groupname *

0
0
0
2019-03-15 14:44:38 +0000

chown здорово, если ты суперпользователь. У меня была проблема, когда кто-то другой запустил make в моем каталоге, и теперь у меня есть некоторые файлы, которые я не мог изменить. Вот мой обходной путь, который работает с файлами и каталогами, хотя он оставляет каталоги лежащими с суффиксом .mkmeowner, если он не может их удалить.

  • Следующий сценарий меняет собственность на файлы и каталоги, переданные ему, чтобы быть принадлежащим текущему пользователю, пытаясь обойти проблемы с разрешениями, делая новую копию каждого каталога или файла, не принадлежащего текущему пользователю, удаляя (или пытаясь delete) исходный файл, и переименовывая его соответствующим образом.
  • Целью этого является аббревиатура для “сделать меня владельцем”. Я не использую подчёркивания, потому что их трудно набирать.

Примеры:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Для этого требуется следующий скрипт mkmeownerone.

mkmeowner:

#!/bin/bash
["x$1" == "x-h"] || ["x$1" == "x--help"] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
    change ownership of directories or files to current user.
    Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
    find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done

mkmeownerone:

#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
    cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
    exit 0
fi
exit 1

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

6
10
8
5
7