Установить права доступа на основе прав пользователей

Я разобрался с этим с помощью следующего уродливого хака:

$ type -a cd
cd is aliased to `cd $1 >/dev/null'
cd is a shell builtin

Другими словами, добавьте эту строку в свой ~ / .bashrc :

alias cd='cd >/dev/null' 
1
08.09.2017, 00:02
3 ответа

Для этого можно использовать find:

find <dirpath> -perm 700 -type d -exec chmod 755 {} \;  ## For directories
find <dirpath> -perm 600 -type f -exec chmod 644 {} \;  ## For files
3
27.01.2020, 23:18

Вы можете сделать что-то вроде:

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

То есть взять права пользователя, удалить запись бит(& 5или то в группу и другое разрешения.

1
27.01.2020, 23:18

Предполагая, что вы хорошо себя ведете в 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
0
27.01.2020, 23:18

Теги

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