Interpretação do asterisco na linha de comando - permissões?

0

Ubuntu 16.04.6 LTS

Estranho no começo, mas acho que reduzi meu problema a uma questão de permissões e como o asterisco (*) é interpretado na linha de comando por causa disso.

Eu estava analisando originalmente os arquivos de log do apache, mas recriei a pergunta da seguinte maneira.

Dois usuários: usuário1 e usuário2

O usuário2 possui a pasta em questão, com as seguintes permissões:

user2@server-01:~$ ls -lahd myFolder/
drwxrwx--- 2 user2 user2 4.0K Aug 28 13:22 myFolder/

A pasta contém vários arquivos, nomeados com uma convenção de nomenclatura que pode ser seguida. ie

user2@server-01:~/myFolder$ ls -l
total 0
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_1
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_2
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_3
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_4
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_5
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 def_1
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 def_2
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 def_3
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 def_4
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 def_5

Se eu quiser apenas analisar ou listar os arquivos 'abc' na pasta, é claro que podemos fazer isso (como usuário2):

user2@server-01:~/myFolder$ ls -l abc*
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_1
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_2
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_3
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_4
-rw-rw-r-- 1 user2 user2 0 Aug 28 13:24 abc_5

Agora, o usuário do usuário1 está configurado da seguinte maneira (observe que ele é um sudoer):

user1@server-01:~$ id
uid=1004(user1) gid=1004(user1) groups=1004(user1),27(sudo)

Obviamente, nosso usuário1 não poderá listar o conteúdo myFolder, a menos que preceda o comando com sudo. Como isso:

user1@server-01:~$ ls /home/user2/myFolder
ls: cannot open directory '/home/user2/myFolder': Permission denied

user1@server-01:~$ sudo ls /home/user2/myFolder
abc_1  abc_2  abc_3  abc_4  abc_5  def_1  def_2  def_3  def_4  def_5

Finalmente, minha pergunta é como o usuário1 lista apenas os arquivos 'abc', porque o comando sudo, as permissões de diretório ou algo relacionado à segurança não está interpretando o asterisco no comando abaixo, da maneira normal?

user1@server-01:~$ sudo ls /home/user2/myFolder/abc_*
ls: cannot access '/home/user2/myFolder/abc_*': No such file or directory

Ou estou entendendo completamente a situação?

specificRope
fonte
1
Duplicado de unix.stackexchange.com/questions/101847/…
Gerald Schneider
kickass ... Muito obrigado!
relevanteRope

Respostas:

0

Excelente explicação aqui: https://unix.stackexchange.com/questions/101847/cannot-expand-asterisk-without-proper-permission

Vamos precisar chamar o shell com sudo e passar o comando inteiro com a bandeira -c

[user1@server-01 ~]$ sudo sh -c 'ls -l /home/user2/myFolder/abc*'
-rw-rw-r--. 1 user2 user2 0 Aug 28 14:01 /home/user2/myFolder/abc_1
-rw-rw-r--. 1 user2 user2 0 Aug 28 14:01 /home/user2/myFolder/abc_2
-rw-rw-r--. 1 user2 user2 0 Aug 28 14:01 /home/user2/myFolder/abc_3
-rw-rw-r--. 1 user2 user2 0 Aug 28 14:01 /home/user2/myFolder/abc_4
-rw-rw-r--. 1 user2 user2 0 Aug 28 14:01 /home/user2/myFolder/abc_5
specificRope
fonte