Problemas de permissão do Linux

0

Estou tentando criar uma tabela MySQL em um disco rígido diferente do padrão. Eu recebo um erro de permissão quando o MySQL tenta criar o arquivo. Acho que posso reduzi-lo às seguintes linhas de comandos shell, que reproduzem o erro no shell:

scott@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -lha
total 8.0K
drwxr-xr-x 2 mysql mysql    4.0K 2011-06-06 14:47 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-rw-rw- 1 mysql mysql       0 2011-06-06 14:47 globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo sudo -u mysql echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo chmod 664 globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -lha
total 12K
drwxr-xr-x 2 mysql mysql    4.0K 2011-06-06 14:47 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-rw-r-- 1 mysql mysql       3 2011-06-06 14:48 globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo sudo -u mysql echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD
bash: /mnt/datadrive/globot/mysql/globot_tick_spies.MYD: Permission denied
scott@landscapesrv01:/mnt/datadrive/globot/mysql$

Por que o usuário não pode mysql editar o arquivo em que o usuário mysql tem permissões de propriedade e nível de usuário?

UPDATE

Ok, os comandos acima são falhos ... Eu posso editar arquivos bem como usuário mysql

scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo sudo -u mysql bash
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -alh
total 8.0K
drwxrwxr-x 2 mysql mysql    4.0K 2011-06-06 15:18 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ touch test
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -alh
total 8.0K
drwxrwxr-x 2 mysql mysql    4.0K 2011-06-06 15:50 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-r--r-- 1 mysql mysql       0 2011-06-06 15:50 test
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ echo hi > test
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ echo hi > test2
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -alh
total 16K
drwxrwxr-x 2 mysql mysql    4.0K 2011-06-06 15:51 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-r--r-- 1 mysql mysql       3 2011-06-06 15:50 test
-rw-r--r-- 1 mysql mysql       3 2011-06-06 15:51 test2

Então, isso funciona bem ... Mas por que não posso criar minha mesa do jeito que gosto?

mysql> CREATE TABLE 'globot_tick_spies' ( 'test' datetime NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY = '/mnt/datadrive/globot/mysql';
ERROR 1 (HY000): Can't create/write to file '/mnt/datadrive/globot/mysql/globot_tick_spies.MYD' (Errcode: 13)

(Desculpe pela confusão acima.)

    
por Scott 06.06.2011 / 21:31

2 respostas

2

O Bash acha que você está tentando redirecionar a saída de "sudo sudo -u mysql echo h" para /mnt/datadrive/globot/mysql/globot_tick_spies.MYD em vez de enviar o texto completo "mysql echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD" a sudo .

O redirecionamento está acontecendo fora do sudo e, portanto, como você, scott , não como mysql .

Tente usar citações como esta:

sudo sudo -u mysql "echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD"
    
por 06.06.2011 / 21:38
1

Eu costumava ter problemas semelhantes que foram resolvidos por chowning da própria pasta mysql, ou seja,

chown mysql /mnt/datadrive/globot/mysql

Eu estou supondo que você não é capaz de criar pastas como o usuário mysql?

    
por 06.06.2011 / 23:04