Problemas de permissão ao copiar arquivos

1

Acabei de escrever um arquivo bash simples para copiar um diretório completo para meu diretório pessoal para evitar problemas de permissão ao rastreá-lo com o git.

O script é o seguinte:

#!/bin/bash

working_directory="/opt/lampp/htdocs/vocab/"
target_directory="."

cp -R $working_directory $target_directory

O script é de propriedade do meu nome de usuário local "peter".

-rwxrwx--- 1 peter peter 123 Sep 11 11:02 update.sh

Durante o processo de cópia, recebo um erro que os arquivos da pasta " / opt / lampp / htdocs / vocab / arquivos " não podem ser copiados devido a restrições de permissão.

ls -l /opt/lampp/htdocs/vocab/ retorna

drwxr-xr-x 2 root     root     4096 Sep 10 22:59 css
drwxrwxrw- 2 www-data www-data 4096 Sep 11 11:06 files
drwxr-xr-x 2 root     root     4096 Aug 17 21:33 html
-rw-r--r-- 1 root     root      918 Sep  3 08:28 index.html
...

Como você pode ver o problema que causa o diretório " arquivos " não é possuído por peter nem seu grupo contém peter. Eu verifiquei isso executando o comando groups peter .

Por que eu posso copiar todos os diretórios e arquivos, exceto " arquivos "? Por um lado Peter não tem permissão para fazer qualquer coisa com " arquivos ", porque ele não é o proprietário e não pertence ao grupo, mas por outro lado todos os outros diretórios são de propriedade pela raiz - isso realmente o mesmo caso. peter não pertence ao root, mas ele de alguma forma não tem nenhum problema para copiar esses arquivos e dirs. Por quê?

    
por null 11.09.2015 / 11:29

1 resposta

2

Você não tem permissão para ler o conteúdo da pasta /opt/lampp/htdocs/vocab/files .

Se você iniciar seu script como usuário peter e o grupo e proprietário da pasta for www-data , será necessário definir x (direitos de execução, que são necessários para ver o conteúdo dos diretórios - você "executá-los" quando você acessar seu conteúdo) para os direitos de others .

sudo chmod o+x /opt/lampp/htdocs/vocab/files

E você deve adicionar a opção p para preservar mode, ownership, timestamps .

cp -pR $working_directory $target_directory

(Como alternativa, você pode iniciar seu script com sudo rights)

De man chmod

The letters rwxXst select file mode bits for the affected users: read (r),
write (w), execute (or search for directories) (x), execute/search
only if the file is a directory or already has execute permission for some
user (X), set user or  group  ID on execution (s), restricted deletion flag
or sticky bit (t).  Instead of one or more of these letters, you can specify
exactly one of the letters ugo: the permissions granted to the user who owns
the file (u), the permissions granted to other users who are members of the
file's group (g), and the permissions granted to users that are in neither of
the two preceding categories (o).
    
por A.B. 11.09.2015 / 11:51