Должен исправить полномочия файла в корневом каталоге пользователя

Вы могли попытаться включить отладку Userenv и чтение входа в систему, что происходит негласно. У меня была проблема с программой, которая сцепилась в событие входа в систему, но испытывала таймаут во время его выполнения. Это заставляло Windows ожидать dll для завершения перед таймаутом.

Можно найти информацию о включении входа отладки userenv и как считать его в блоге команды Microsoft Directory Services (Понимающий, как считать журнал userenv - Часть 1 и Понимающий, как считать журнал userenv - Часть 2.

Надеюсь, это поможет!

Править: Я нашел другую полезную статью о Technet: Интерпретация файлы журнала Userenv

24
задан 2 July 2009 в 17:58
9 ответов

Это должно добиться цели:

find /home/user -type d -print0 | xargs -0 chmod 0775
find /home/user -type f -print0 | xargs -0 chmod 0664
51
ответ дан 28 November 2019 в 20:14

находка может добиться цели один с - должностное лицо:

find /home/user -type f -exec chmod 0664 {} \;
find /home/user -type d -exec chmod 0775 {} \;

для предотвращения находят от порождения chmod для каждой записи:

find /home/user -type f -exec chmod 0664 {} +
find /home/user -type d -exec chmod 0775 {} +

(это эффективно называет chmod однажды со списком всех файлов как параметры, а не один chmod на файл),

14
ответ дан 28 November 2019 в 20:14
  • 1
    Медленнее, чем использование xargs, как you' ре, разветвляющее chmod для каждого файла, куда, поскольку xargs выполнит процесс chmod со столькими файлами, сколько это может соответствовать на командной строке. На очень большом дереве это может иметь справедливое значение. –  David Pashley 2 July 2009 в 18:43
  • 2
    Кроме того, print0/xargs-0 обработает даже очень странные имена файлов; не настолько уверенный в находке - должностное лицо. –  sleske 1 December 2009 в 13:38

Этот ответ не решит Вашу проблему, но кто-то мог бы найти это полезным для подобной проблемы, где файлы имеют меньше разрешения, чем они должны.

# chmod -R . u=rwX,g=rX,o=rX

Волшебство является X разрешениями, а не x. chmod страница справочника описывает это таким образом:

выполняйтесь/ищите, только если файл является каталогом или уже имеет, выполняют разрешение для некоторого пользователя

Это не подходит в Вашем случае, как Ваши файлы имеют, выполняют разрешение так, будет соответствовать второму тесту.

8
ответ дан 28 November 2019 в 20:14

В случае, если вы используете ssh, рекомендуется не изменять разрешения ~ / .ssh .

DIR=/home/user
find $DIR -type d -not -path "$DIR/.ssh" -print0 | xargs -0 chmod 0775
find $DIR -type f -not -path "$DIR/.ssh/*" -print0 | xargs -0 chmod 0664
0
ответ дан 28 November 2019 в 20:14

Я создал сценарий из решения freiheit, он добавляет базовую проверку аргументов.

#!/bin/sh

if [ $# -lt 1 ]; then
    echo "USAGE: $0 <path>"
    exit 1
fi

find $1 -type d -print0 | xargs -0 chmod 0755
find $1 -type f -print0 | xargs -0 chmod 0644
1
ответ дан 28 November 2019 в 20:14

На днях я сделал очень простой сценарий bash, потому что мне нужно было исправить разрешения. Почему нет официальной утилиты для сброса базовых разрешений, прав доступа к файлам и папкам без полномочий root?

В сценарии используется поиск до 755 всех папок и 644 библиотек. Затем он проверяет каждый файл с помощью readelf, чтобы увидеть, есть ли у него двоичный заголовок elf. В противном случае он сканирует первые два символа на наличие shebang #! . Он 755 этих экземпляров и 644 все остальное после того, как он проверяет, имеет ли файл уже соответствующее разрешение.

Особые случаи обрабатываются с исключением, например, * .bak для файлов, которые следует игнорировать.

12137]

0
ответ дан 28 November 2019 в 20:14

Альтернативой, которая не дает точного ответа на первоначальный запрос, но более вероятно то, что ОП намеревается сделать, является символическое указание разрешений. Например, Я полагаю, что ОП хочет "удалить доступ на запись для публики и удалить разрешение на исполняемые файлы из всех файлов"

Это возможно, если вы используете символическое представление разрешения.

  • o-w - это "удалить доступ на запись из публичных" ("o" - другие, "-" - удалить, "w" - записать)
  • a-x - это "удалить исполнение для всех только для файлов" ("a" - все, "-" - удалить, "x" - выполнить)

Записывая его таким образом, вместо явной установки "0664", вы избегаете случайного разрешения дополнительных прав доступа для файлов, которые были ранее заблокированы. Например если файл был 0770, то по ошибке он не станет 0664.

Для выполнения первого требования можно просто использовать chmod:

chmod --recursive o-w $dir

Для выполнения второго требования:

find $dir -type f -exec chmod a-x {} +

Или выполнить оба:

find $dir -type f -exec chmod a-x,o-w {} +
find $dir -type d -exec chmod o-w {} +
0
ответ дан 28 November 2019 в 20:14

Я нашел упрощенное решение C-оболочки. Это может быть не совсем верно, но должно работать для большинства каталогов. Оно предполагает, что команда Unix 'file' работает, и находит исполняемые файлы для сброса их обратно к разрешениям на выполнение:

find /home/user -type d | xargs chmod 0775
find /home/user -type f | xargs -0 chmod 0664
find /home/user -type f -exec file {} \; | grep executable | cut -d":" -f1 | xargs chmod 0775
0
ответ дан 28 November 2019 в 20:14

Я использую этот скрипт https://github.com/TheKito/Scripts/blob/master/FixHomesDirectoryPermissions.sh

#!/bin/bash
HME=/home
for i in $(ls "$HME");
do
        if [ -d "$HME/$i" ]; then
                echo "$i";
                chown -R $i "$HME/$i"
                chgrp -R $i "$HME/$i"
                find "$HME/$i" -type d -exec chmod 0770 "{}" \;
                find "$HME/$i" -type f -exec chmod 0660 "{}" \;
        fi
done;
0
ответ дан 5 January 2021 в 16:02

Теги

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