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 * を使用して、シェルにカレントディレクトリの内容に * を展開させたいと思います。これはカレントディレクトリ内のすべてのファイル/フォルダのパーミッションを変更しますが、フォルダの内容は変更されません。

また、カレントディレクトリのパーミッションを変更してから、カレントディレクトリとその中のすべてのサブフォルダを再帰的に変更します。このスタイルと最初のスタイルは、私自身が最も頻繁に使用していることに気づくものです。

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 .

% mkmeowner dirpath1 dirpath2
  • それはあなたのパスにある次のスクリプト.mkmeownerを必要とします。

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
9