Восстановление прав доступа (ACL)

Status
Not open for further replies.

serbahil

Cadet
Joined
Oct 26, 2017
Messages
4
Добрый день. Есть СХД на базе ThecusOS, с данной СХД идет бэкап данных и каталогов на СХД под FreeNas 9.10 U6, права доступа записываются в файл с помощью утилиты getfacl. Задача восстановить эти права на системе под управлением уже FreeNas, но, естественно, команда setfacl --restore тут уже не работает. Есть ли решение данной проблеме?
 

chs

Guru
Joined
Apr 18, 2017
Messages
500
А почему не работает-то ?
ACL не подходят ? Утилита то есть в FreeBSD. man setfacl
Могут различаться ключики, ну и конечно сами ACL.
 

serbahil

Cadet
Joined
Oct 26, 2017
Messages
4
Различаются ключи, а точнее, я вообще не нашел как в FreeBSD сделать восстановление прав из файла. В ubuntu и CentOS восстанавливаются нормально, с помощью ключа --restore, причем синтаксис самих acl, что в CentOS, что в FreeBSD один.
 
Last edited:

chs

Guru
Joined
Apr 18, 2017
Messages
500
ну в man по setfacl предлагается
getfacl file1 | setfacl file2
Как будет с директориями - неясно ...
Есть конечно в man-е строка -
Code:
  The setfacl utility sets discretionary access control information on the
  specified file(s).  If no files are specified, or the list consists of
  the only ‘-’, the file names are taken from the standard input.

Но как это будет работать с выводом getfacl непонятно.

Ну я бы скриптик написал - который преобразует файл выхода getfacl в команды setfacl
 

anodos

Sambassador
iXsystems
Joined
Mar 6, 2014
Messages
9,554
ну в man по setfacl предлагается
getfacl file1 | setfacl file2
Как будет с директориями - неясно ...
Есть конечно в man-е строка -
Code:
  The setfacl utility sets discretionary access control information on the
  specified file(s).  If no files are specified, or the list consists of
  the only ‘-’, the file names are taken from the standard input.

Но как это будет работать с выводом getfacl непонятно.

Ну я бы скриптик написал - который преобразует файл выхода getfacl в команды setfacl

setfacl работает одинокого на файлах и директориях, но setfacl не рекурсирует, и флаги ACL (f,d) не может применяется к файлам.
 

serbahil

Cadet
Joined
Oct 26, 2017
Messages
4
Файл с правами выглядит таким образом, в CentOS, Ubuntu и Debian, восстановление из него производится с помощью команды:
setfacl --restore=/raid0/acl/acl-okb
upload_2017-11-15_11-26-14.png

Если есть идеи, как это реализовать для FreeNas 9.10, я с радостью прочитаю.
 

chs

Guru
Joined
Apr 18, 2017
Messages
500
Ну как-то так

Code:
#!/usr/local/bin/perl

my $file,$cmd;

while (<>) {
  chomp();
  if (/^\# file: (.+)$/) {
	print "setfacl -m $cmd $file\n" if $cmd;
	$file = $1;
	$file =~ s/ /\\ /g ;
	$cmd = '';
  }
  next if /^#/;
  next if /^\s*$/;

  $cmd .=',' if $cmd;
  $cmd .="$_";
}
print "setfacl -m $cmd $file\n" if $cmd;



Разберитесь только с '\' в названии групп. Ну и , если такие есть, разнице в ACL.

P.S. И да - я никакой ответственности не несу :) Проверьте сначала на тесте.
 
Last edited:

serbahil

Cadet
Joined
Oct 26, 2017
Messages
4
Ну как-то так

Code:
#!/usr/local/bin/perl

my $file,$cmd;

while (<>) {
  chomp();
  if (/^\# file: (.+)$/) {
	print "setfacl -m $cmd $file\n" if $cmd;
	$file = $1;
	$file =~ s/ /\\ /g ;
	$cmd = '';
  }
  next if /^#/;
  next if /^\s*$/;

  $cmd .=',' if $cmd;
  $cmd .="$_";
}
print "setfacl -m $cmd $file\n" if $cmd;



Разберитесь только с '\' в названии групп. Ну и , если такие есть, разнице в ACL.

P.S. И да - я никакой ответственности не несу :) Проверьте сначала на тесте.

В общем, немного запоздало, но суть такая. Изучив MAN по setfacl в RHEL и FreeNAS, пришел к выводу, что это совершенно разные программы от разных авторов, но с одинаковым названием, поэтому такие атрибуты, как в RHEL использоваться не могут. Поэтому, script only)
 

BaT

Explorer
Joined
Jun 16, 2017
Messages
62
Ну, было бы наивно ожидать, что это одна и та же утилита. На самом деле, все еще хуже :) Судя по всему, в Линуксе ACL в формате POSIX 1.e, в то время как во FreeNAS практически эксклюзивно NFSv4. Точнее, ядро-то POSIX 1.e ACL поддерживает, а вот ZFS уже нет.

В общем, нужно скриптовать и очень вдумчиво.
 
Status
Not open for further replies.
Top