web-dev-qa-db-ja.com

指定した権限でファイルとフォルダーを抽出する

Windowsで7Zipを使用して、多くのサブフォルダーとファイルを含むフォルダーをパックし、VPSにアップロードして、次のコマンドを実行します。

tar -xvzf file.tar.gz

次に、すべての解凍されたファイルとフォルダーに777のアクセス許可があります。フォルダーに755とファイル644のアクセス許可を付与するには、どうすれば取得できますか?

11
Kaspar L. Palgi

tar(1)を通常のユーザーとして実行している場合は、デフォルトでumaskが適用されます。 tar(1)rootとして実行している場合は、_--no-same-permissions_コマンドラインオプションを指定して、tar(1)umaskを尊重するように要求できます。

だから:これを通常のユーザーとして実行する:

_umask 022
tar zxvf file.tar.gz
_

または、これをrootとして実行します。

_umask 022
tar zxvf file.tar.gz --no-same-permissions
_

_umask 022_を_~/.bashrc_、_~/.bash_profile_、または_~/.profile_に貼り付けることができます。 (起動ファイルの詳細については、bash(1)のマンページを参照してください。複雑です。)

umaskの詳細は、シェルのマンページ、umask(2)システムコールマンページ、またはumask(1posix) POSIX提供のユーティリティマンページ(_manpages-posix_がインストールされている場合)にあります。

13
sarnold

ディレクトリのルートで次のコマンドを実行して、ディレクトリとファイルに必要な権限を設定します。

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

閉じ中括弧とバックスラッシュの間のスペースに注意してください

6
alxbrd

chmodで大文字のXを使用すると、ディレクトリのみに実行権限を設定できます。つまり.

chmod -R ugo+X .
2
Stephen Quan

私はこの解決策を見つけました。フォルダーとサブフォルダーの場合:

chmod -R 777 */

そして、すべてのファイル(フォルダーとサブフォルダーにも):

find . -type f -name "*" | xargs chmod 644

これが良い方法でなければ、すべてのコメントを歓迎します。 Linuxの学習を始めたばかりです。

コメントに続いて、特殊文字を適切に処理するより堅牢なソリューションは次のとおりです。

find . -type f -print0 | xargs -0 chmod 644  # For files
find . -type d -print0 | xargs -0 chmod 755  # For directories
1
Kaspar L. Palgi

見つける。 -type f -exec chmod 644 {} \;

0
hamed