ユーザー権限に基づいて権限を設定する

ユーザー権限に基づいて権限を設定する

私のシステムのデフォルトのumask設定により、ファイル権限は常にグループにデフォルトで付与され、他の人にはアクセス権がありません。一般的には問題ありませんが、他の人がアクセスする必要があるソフトウェアをインストールすると迷惑になります。インストール後のアクセス許可に基づいてツリー内のすべてのファイルとフォルダのアクセス許可をリセットする簡単な方法はありますか?

書き込みを除くデフォルトでユーザーをコピーします。

rwx------ to rwxr-xr-x
rw------- to rw-r--r--

答え1

findこれを行うには、次の方法を使用できます。

find <dirpath> -perm 700 -type d -exec chmod 755 {} \;  ## For directories
find <dirpath> -perm 600 -type f -exec chmod 644 {} \;  ## For files

答え2

次のことができます。

find . ! -type l -print0 |
  perl -0 -lne '
    $m = (lstat$_)[2] & 07777;
    $u = ($m >> 6) & 5;
    chmod $m | $u | ($u<<3), $_'

つまり、ユーザー権限を取得して削除します。書くビット(& 5)とまたはそれが到着するグループそしてその他権限。

答え3

あなたが善良なUNIXユーザーであり、ファイル名にスペースがないとします。

for file in $(find . -type f -o -type d)
do \
    user_perm=$(stat -c %a $file |cut -c1)
    other_perm=$(($user_perm&5))
    chmod $user_perm$other_perm$other_perm $file
done

関連情報