Почему я не могу изменить каталог на текущий каталог с отказом в разрешении?

OK, так как по какой-то причине использование переменной для хранения местоположения не работает, я думаю, что лучшим методом будет использование find, чтобы просто найти место, где существует Symantec, тогда вы сможете cat его без проблем и передать весь путь эхом.

for i in `cat /app/scripts/symantec_scripts/list`
do ssh root@$i "uname -n
cat $(find / -maxdepth 2 -name Symantec)/virusdefs/definfo.dat
echo Location is $(find / -maxdepth 2 -name Symantec)/virusdefs/definfo.dat
echo ....................................................................."
done | tee /tmp/symantec_info.`date +"%m%d%y"`

По сути, $(command) выполнит команду как в shell и заменит ее выводом, так $(find / -maxdepth 2 -name Symantec) ищет, начиная с / и спускаясь только на 2 директории вглубь, все, что называется Symantec, и выводит это. Этот вывод просто используется вместо всего оператора $(command).

Весь оператор $(find...) в вашем случае должен выводить что-то вроде /app/Symantec или /opt/Symantec

Это также имеет дополнительное преимущество, позволяя избежать длинного оператора if и найти Symantec, если он находится где-либо еще.

Единственный недостаток - если по какой-то причине у вас есть более одного каталога с именем Symantec в непосредственном корневом каталоге и любом каталоге на уровень выше /. Это приведет к проблемам.

0
15.06.2018, 15:20
2 ответа

El directorio actual, y todos sus directorios principales, deben ser accesibles para el usuario postgres, es decir, tener el bit ejecutable/buscable configurado para cualquier propietario/grupo/otro permiso que se aplique en cada directorio al determinar los permisos de postgresu otorgar ese permiso mediante ACL.

Para verificar los permisos, usenamei:

namei -l /path/to/directory

Consulte ¿Cómo comprobar si un usuario puede acceder a un archivo determinado? para más detalles.

2
20.08.2021, 11:17

Puedes, el usuario postgresno puede.

sudo -u postgrescambia la identificación del usuario -a postgres y luego ejecuta los comandos. en este momento, el usuario postgres no puede acceder al archivo de entrada, ni siquiera al directorio actual.

En su lugar, hazlo de esta manera:

$ sudo -u postgres pg_restore -C -d dvdrental < dvdrental.tar 

De esta manera, su shell abre el archivo en su cuenta antes de que sudo comience y pg_restoreluego accede al contenido del archivo en la entrada estándar

5
20.08.2021, 11:17

Теги

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