Como posso fazer este script bash criar um arquivo pertencente a um usuário comum?

0

Eu tenho um programa bash simples, a estrutura do arquivo é:

$ tree

.
├── includes
│   └── vimrc.vim
└── test_sourcing_vimrc.sh

.

file: test_sourcing_vimrc.sh

#! /bin/bash

self_dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

sudo -s -u lando cat includes/vimrc.vim > test_output

.

file: includes/vimrc.vim (contains a .vimrc content)

" vim settings

set number
set laststatus=2
syntax enable

Minha intenção é

  • execute o script como usuário raiz (o script precisa desses privilégios por outros motivos), por exemplo, sudo ./test_sourcing_vimrc.sh

  • sudo para um usuário não-root "lando" - que já existe

  • cat do conteúdo de includes/vimrc.vim em um novo arquivo test_output
  • test_output deve pertencer a "lando", mas é de propriedade de root, por exemplo, -rw-r--r-- 1 root root 5620 Sep 24 19:00 test_output

Como posso obter esse script para criar um arquivo de propriedade do usuário não root correto?

    
por the_velour_fog 24.09.2015 / 09:13

2 respostas

1

Outra solução é:

sudo install -o lando -m0775 -p -S includes/vimrc.vm test_output

O -m0775 define as permissões que o arquivo copiado recebe; essas permissões são, na verdade, o padrão, de modo que podem ser omitidas, se forem as que você deseja. O -p faz com que o tempo de modificação do arquivo copiado seja o mesmo que o original. O -S faz com que, se test_output já existir, ele não seja danificado, a menos que o install já tenha conseguido copiar o arquivo de origem. Dependendo de suas necessidades, elas podem ser desnecessárias. Estou observando-os de qualquer maneira para os outros que podem se deparar com essa questão e ter necessidades um pouco diferentes.

Por fim, como o script que o contém já está sendo executado como root, você pode omitir o sudo inicial.

    
por 24.09.2015 / 13:07
0

resolvido

alterado

sudo -s -u lando cat includes/vimrc.vim > test_output

para

sudo -s -u lando <<EOF
cat includes/vimrc.vim > test_output
EOF
    
por 24.09.2015 / 09:23

Tags