Разрешения на основе самого низкого уровня

Требуется несколько переменных или массив. С awk :

awk 'NR==2||NR==3{a[i++]=$0;next} NR==5{print;for(c=0;c<i;c++){print a[c]}next}1' file

  • NR = = 2 | | NR = = 3 , если это линия 2 или строка 3
    • a [i++] = $0; затем заполните массив a и продолжите.
  • NR = 5 , если это линия 5
    • печать сначала печать строки.
    • для (c = 0; c < i; c++) {печати цикла [c]} через массив и печати его содержимого.
  • 1 является истинным условием печати каждой строки.
-121--152378-

Попробуйте:

$ awk '
  FNR == 2 { l2 = $0; next } # Save 2nd line
  FNR == 3 { l3 = $0; next } # Save 3rd line
  FNR == 5 {                 # Print 5th line, follow 2nd, 3rd
    print
    print l2
    print l3
    next
  }
  1                          # Print other lines
' <file

Обратите внимание, что при потере 2-й и 3-й строк файл содержит менее пяти строк.

0
04.08.2018, 23:59
1 ответ

Да, если EUID процесса доступа совпадает с пользователем-владельцем, проверяются только разрешения пользователя. Если нет, но GID процесса совпадают с группой-владельцем, то проверяются разрешения группы. В противном случае используются «другие» разрешения. Мяч останавливается на первом совпадении.

Для пользователя нет особого смысла иметь меньший доступ, чем для группы, поскольку обычно пользователь-владелец может просто изменить разрешения и предоставить себе любой доступ, который ему нравится. (за исключением SELinux и т. д.)

Но в случае группы против других это может иметь смысл :вы можете запретить доступ к определенной группе, разрешив его всем остальным. Например. для файла, принадлежащего someuser:somegroup, с разрешениями rw----r--, члены somegroupне могут получить к нему доступ, но любой, кто не является членом somegroup, может прочитать файл.

2
28.01.2020, 02:31

Теги

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