ファイルの所有者のアクセス許可をグループのアクセス許可にコピーする


25

ファイルのユーザー/所有者のアクセス許可をグループのアクセス許可にコピーするにはどうすればよいですか?

たとえば、アクセス許可が755の場合、775になります。

明確化:755-> 775 123-> 113 abc-> aac

ディレクトリ内のすべてのファイルに対してこれを再帰的に行うことができればボーナスです。

(つまり、ファイルごとに所有者のアクセス許可がグループのアクセス許可にコピーされます。各ファイルには異なるアクセス許可が設定されている場合があります。)


わかりません。グループのアクセス許可が所有者のようになるように、ディレクトリ/ファイルのアクセス許可を変更しますか?その場合は、chmodで遊んでください。必要に応じて、回答でより明確な例を示します。
Anarko_Bizounours

あなたの答えでは、それはすべてのファイルを775に変更します。ファイルの1つが元々123の許可を持っている場合はどうなりますか?次に、775ではなく113に変更する必要があります。質問(755)で使用した許可は単なる例であり、実際の許可は何でもかまいません。これをプログラムで行いたいです。
アナン

chmodの後の数字は単なる数字の許可です。ls -lを実行し、許可として452を取得した場合、単に442 / you_directory /をchmodします。私の答えにリンクしたウィキペディアのページで、すべてが(かなりうまく)説明されています。
Anarko_Bizounours

これは重複の問題のように見える serverfault.com/questions/241082/...
靴紐

回答:


54

g=uグループ権限をユーザー権限と同じにするために使用できます

ls -l file
-rw------- 1 user users 0 Jun 27 13:47 file

chmod g=u file

ls -l file
-rw-rw---- 1 user users 0 Jun 27 13:47 file

そして再帰的に

chmod -R g=u *

またはいくつかのファイル仕様

find /patch/to/change/perms -name '*.txt' -exec chmod g=u {} +

chmodのmanページはあなたの友達です。


それをする良い方法です!xD
Anarko_Bizounoursの

このトリックを聞いたことがない!便利なもの。
スキンプ

そのg=uトリックは、退屈な管理の時間を節約してくれました。+1があります;-)
エドゥルンパスクアル

すべてのユーザーと共有したいユーザーが所有するファイルの束がありました。だから私はやったchmod -R ag=u ${path_to_directory}
トレバーボイドスミス

2

人々が言っ​​たように、ファイルのパーミッションを変更することは危険です。大きな力には大きな責任が伴い、それはすべてシザです。これは私の答えです:

ファイル/ usr / bin / otog:

#!/bin/sh

f=$1
p=`stat -c "%a" $f`
chmod ${p:0:1}${p:0:1}${p:2:1} $f

使用例:

find . -exec otog {} \;

statを使用して数値の許可を取得し、chmodを使用して許可を変更します。

PS:これを行うより良い方法については、Iainの答えをご覧ください!


1
$ {p:0:1} $ {p:0:1} $ {p:2:1}であってはなりませんか?
-minaev

ええ、あなたの権利。それは私のやり方でも奇妙に働いた。
アナン

誰かが下票について説明してください。
アナン

私ではありませんが、私は補償したいと思います。これは有効なソリューションです。
-minaev

1
スクリプトで危険なコマンドを使用する方が、手動で行うよりも安全だと思います。十分にテストされたスクリプトでは、つまり:)です。その一方で、chmod本当に、本当に危険なコマンドではありません。と比較してrm、私は、または、またはrsync --delete他のいくつかを意味します。
-minaev

1

まず、あなたの権利をリストする必要があります。

ls -l /your_directory/
-rwxr-xr-x  1   57 Jul  3 10:13  file1
-rwxr-xr-x  1   57 Jul  3 10:13  file2

結果を数値の許可に変換するには、R = 4、W = 2、X = 1を使用します。

したがって、この2ファイルでは、許可は755です。

権利を取得したら、chmodコマンドを使用して、必要な方法で権利を変更する必要があります。

chmod 775 /your_directory/

このコマンドは、ディレクトリの権限のみを変更し、内部のファイルの権限は変更しません。

内部の権限も変更する場合は、次のコマンドを実行します。

chmod 775 /your_directory/ -fR

-fRは再帰を強制します。(適用する権利とディレクトリ内のファイルが確実な場合にのみ使用してください。)

file1の権限のみを変更する場合:

chmod 775 /your_directory/file1

そして、クッキーが崩れる方法!

/!\注意してください。このコマンドを誤用すると、OSのすべての権限が破壊され、誤動作が発生する可能性があります。/!\

PS:見た目 chmodコマンドについて詳細な情報を検索します。

これがお役に立てば幸いです。


質問に明確化を追加しました。ファイルには同じ所有者権限がない場合があるため、chmodを使用する場合は、chmodに渡す前に所有者権限を抽出する方法が必要です。
アナン

トリッキーですが、ls -lコマンドで許可を与える必要がありますが、この形式は-rw-rw-r--になります。問題は、chmodで作業するためにスクリプトを使用してはならないことです!最初にファイルからすべての許可を取得する必要があります。次に、chmodを使用してグループに適切な権利を付与します。回答を編集して、例を示します。
Anarko_Bizounours
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.