как мне получить / установить разрешение ntfs из командной строки (или скрипта) в Linux?

Вам не нужно искать в grep код цвета, опция -d - это только список каталогов.

Похоже, это делает то, что вы хотите:

$ tree --du -d -shaC | grep -Ev '(  *[^ ]* ){2}\['
.
├── [  18]  dir1
├── [  30]  dir2
├── [ 205]  junk
│   ├── [  18]  dir1
│   ├── [  30]  dir2
│   └── [  76]  dir3
├── [ 119]  merge
└── [  20]  stuff

 4.4K used in 10 directories

Команда grep удаляет все строки, в которых дважды встречается (один или более пробелов, за которыми следует не пробел, за которым следует пробел), а затем [.

Если вам нужна глубина 1, измените количество ссылок внутри фигурных скобок {} на {1}, а не на {2}. То же самое, если вам нужна глубина 3, измените ее на {3}.

Вы можете превратить это в функцию оболочки, например, так:

mytreedu() {
  local depth=''

  while getopts "L:" opt ; do
      case "$opt" in
          L) depth="$OPTARG" ;;
      esac
  done

  shift "$((OPTIND-1))"

  if [ -z "$depth" ] ; then
      tree --du -d -shaC "$@"
  else   
      local PATTERN='(  *[^ ]* ){'"$depth"'}\['
      tree --du -d -shaC "$@" | grep -Ev "$PATTERN"
  fi
}

Это использует getopts для "кражи" любой опции -L и ее аргумента из командной строки tree, если таковая имеется. Если в командной строке нет опции -L n, то это тоже работает.

Все остальные опции и args передаются команде tree.

Строка local PATTERN=... строка на самом деле не нужна. Я сделал ее такой только для того, чтобы убедиться, что она поместится на одной строке и не будет разрываться на слова здесь, на U&L. Регулярное выражение может и, вероятно, должно просто идти непосредственно на tree | grep ... строке.

Запустите его следующим образом:

mytreedu 

или

mytreedu -L 2 /path/to/dir/
1
25.04.2018, 13:58
1 ответ

Вы вообще не можете, если вы заранее не знаете, какой SID будет у вашего пользователя при новой установке Windows (, что непредсказуемо, как UID в системах UNIX ).

Предполагая, что у вас есть какой-то способ узнать, какой у вас будет SID, вы можете функционально воспроизвести права собственности и базовые ACE, используя обычные команды UNIX и функцию сопоставления имен пользователей NTFS -3G. См. раздел «Сопоставление пользователей» справочной страницы NTFS -3G для получения информации о том, как это настроить. После того, как это настроено, вы можете использовать обычные команды UNIX для управления владельцем и основными разрешениями файлов (IIRC, разрешение на чтение POSIX преобразуется в разрешения Windows «Чтение» и «Чтение и выполнение», а запись POSIX преобразуется в «Изменить»., но больше ничего не помню ).

Насколько мне известно, из Linux невозможно скопировать все Windows ACE.

Небольшое замечание: возможно, вы также захотите скопировать альтернативные потоки данных NTFS. Вы можете легко сделать это с помощью инструментов UNIX, которые поддерживают Linux xattrs (при условии, что вы не укажете параметр streams-interfaceдля NTFS -3G, по умолчанию они будут отображаться как xattrs ).

0
28.01.2020, 00:36

Теги

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