То, что у вас есть, выглядит плохо, но ни Bash, ни sed не слишком хорошо играют с расщеплением на нескольких разделителях; лично я бы использовать AWK и упростить сценарий немного (с помощью изменения AWK IFS становится излишним, обратите внимание, что вам не нужна точка с запятой в конце отчетности в Bash):
#!/bin/bash
read post
declare -A myArr
while read name value; do
myArr[$name]=$value
done < <(<<<"$post" awk -F= '{print $1,$2}' RS='&|\n')
Команда AWK:
Считывает $post; Разделяет записи по последовательностям амперстанформ / строк новой строки (разделение на строки новой строки - это трюк, чтобы предотвратить остановку цикла while в последней пустой записи); Разделяет поля на последовательностях равных знаков; Печать полей, разделенных разделителем по умолчанию, пробелом.% cat script.sh
#!/bin/bash
read post
declare -A myArr
while read name value; do
myArr[$name]=$value
done < <(<<<"$post" awk -F= '{print $1,$2}' RS='&|\n')
printf '%s %s\n' "${myArr[name]}" "${myArr[age]}"
% bash script.sh
name=myName&age=myAge
myName myAge
%
Правильные разрешения для /bin/su должны быть: -rwsr-xr-x
-rwsr-xr-x 1 root root 40128 May 17 2017 /bin/su*
Чтобы исправить эту конкретную проблему, вы должны:
Изменить владельца файла на root: root Изменить права на файл для -rwsr-xr-xЭто можно сделать, используя:
sudo chown root:root /bin/su
sudo chmod 4755 /bin/su
Первая команда, которая изменяет владельца файла на быть root. Следующая команда изменит разрешение на чтение / выполнение любым пользователем и установит бит s в команду /bin/su. Q: Почему выполнение chown на /bin/su также удалило биты set-user-id / set-group-id?
A: При выполнении дизайна chown может удалить бит set-user-id / set-group-id. Когда эти биты установлены, выполнение такого файла приведет к запуску файла как владельца двоичного файла, а не к владельцу процесса, который выполняет файл. Изменение владельца файла (или группы) без удаления set-user-id бит приведет к тому, что файл будет выполнен как другой пользователь, а затем запланирован изначально, что может привести к обнаружению безопасности.
-rwsr-xr-x
chown POSIX standardUnless chown is invoked by a process with appropriate privileges, the set-user-ID and set-group-ID bits of a regular file shall be
очищается после успешного завершения; биты set-user-ID и set-group-ID других типов файлов могут быть удалены. В пользовательской странице Ubuntu chown предлагается запустить info coreutils 'chown invocation', чтобы получить полную документацию chown
13.1 ‘chown’: Change file owner and group
=========================================
‘chown’ changes the user and/or group ownership of each given FILE to
NEW-OWNER or to the user and group of an existing reference file.
Synopsis:
....
The ‘chown’ command sometimes clears the set-user-ID or set-group-ID
permission bits. This behavior depends on the policy and functionality
of the underlying ‘chown’ system call, which may make system-dependent
file mode modifications outside the control of the ‘chown’ command. For
example, the ‘chown’ command might not affect those bits when invoked by
a user with appropriate privileges, or when the bits signify some
function other than executable permission (e.g., mandatory locking).
When in doubt, check the underlying system behavior.
Правильные разрешения для /bin/su должны быть: -rwsr-xr-x
-rwsr-xr-x 1 root root 40128 May 17 2017 /bin/su*
Чтобы исправить эту конкретную проблему, вы должны:
Изменить владельца файла на root: root Изменить права на файл для -rwsr-xr-xЭто можно сделать, используя:
sudo chown root:root /bin/su
sudo chmod 4755 /bin/su
Первая команда, которая изменяет владельца файла на быть root. Следующая команда изменит разрешение на чтение / выполнение любым пользователем и установит бит s в команду /bin/su. Q: Почему выполнение chown на /bin/su также удалило биты set-user-id / set-group-id?
A: При выполнении дизайна chown может удалить бит set-user-id / set-group-id. Когда эти биты установлены, выполнение такого файла приведет к запуску файла как владельца двоичного файла, а не к владельцу процесса, который выполняет файл. Изменение владельца файла (или группы) без удаления set-user-id бит приведет к тому, что файл будет выполнен как другой пользователь, а затем запланирован изначально, что может привести к обнаружению безопасности.
-rwsr-xr-x
chown POSIX standardUnless chown is invoked by a process with appropriate privileges, the set-user-ID and set-group-ID bits of a regular file shall be
очищается после успешного завершения; биты set-user-ID и set-group-ID других типов файлов могут быть удалены. В пользовательской странице Ubuntu chown предлагается запустить info coreutils 'chown invocation', чтобы получить полную документацию chown
13.1 ‘chown’: Change file owner and group
=========================================
‘chown’ changes the user and/or group ownership of each given FILE to
NEW-OWNER or to the user and group of an existing reference file.
Synopsis:
....
The ‘chown’ command sometimes clears the set-user-ID or set-group-ID
permission bits. This behavior depends on the policy and functionality
of the underlying ‘chown’ system call, which may make system-dependent
file mode modifications outside the control of the ‘chown’ command. For
example, the ‘chown’ command might not affect those bits when invoked by
a user with appropriate privileges, or when the bits signify some
function other than executable permission (e.g., mandatory locking).
When in doubt, check the underlying system behavior.