Сначала необходимо понять, что разрешения основаны на файлах.
Если вы хотите, чтобы файл /var/example.txt
был доступен для чтения GM
и записи для FTP
, вы можете установить его владельца на FTP
( chown FTP /var/example.txt
) и установите его разрешения на 644
( chmod 644 /var/example.txt
или chmod u + rw, o + r /var/example.txt
). Это сделает файл доступным для чтения всем, но только для записи по FTP.
Если вы хотите, чтобы GM
имел доступ для чтения, вам нужно будет поместить обоих пользователей в одну группу
и установить разрешение на 640
.
Для получения дополнительных сведений о правах доступа к файлам обратитесь к странице руководства chmod
.
Делать это в preexec
было бы слишком поздно. К тому моменту код уже был разобран. Если вы измените его, его нужно будет снова проанализировать (и, возможно, zsh
потребуется запросить дополнительные строки для завершения кода).
Возможно, здесь вы можете сделать это в виджете accept-line
, то есть непосредственно перед тем, как редактор строки передаст строку парсеру оболочки:
accept-line() {
emulate -L zsh # default zsh behaviour locally
set -o extendedglob # with extendedglob for ## (= ERE +) below
BUFFER=${BUFFER##[[:blank:]]##} # remove leading blanks
# remove blanks after newlines in case a multiline buffer is accepted
# for instance after a safe-paste or a newline entered with <Alt+Ret>
BUFFER=${BUFFER//$'\n'[[:blank:]]##/$'\n'}
# call original accept-line
zle .$WIDGET
}
zle -N accept-line