![命令行上星号的解释-权限?](https://linux22.com/image/742023/%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%8A%E6%98%9F%E5%8F%B7%E7%9A%84%E8%A7%A3%E9%87%8A-%E6%9D%83%E9%99%90%EF%BC%9F.png)
Ubuntu 16.04.6 LTS
一开始觉得很奇怪,但我认为我已将问题缩小到权限问题以及如何在命令行上解释星号(*)。
我最初正在分析 apache 日志文件,但重新创建了如下问题。
两个用户:user1 和 user2
User2 拥有该文件夹,并具有以下权限:
user2@server-01:~$ ls -lahd myFolder/
drwxrwx--- 2 user2 user2 4.0K Aug 28 13:22 myFolder/
该文件夹包含一堆文件,以可遵循的命名约定命名。即
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
如果我只想分析或列出文件夹中的“abc”文件,我们当然可以这样做(作为用户 2):
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
现在,user1 的用户配置如下(注意他们是 sudoer):
user1@server-01:~$ id
uid=1004(user1) gid=1004(user1) groups=1004(user1),27(sudo)
当然,我们的 user1 将无法列出 的内容myFolder
,除非我们在命令前面加上sudo
。像这样:
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
最后,我的问题是,user1 如何仅列出“abc”文件,因为 sudo 命令、目录权限或安全性方面的某些内容无法以正常方式解释以下命令中的星号?
user1@server-01:~$ sudo ls /home/user2/myFolder/abc_*
ls: cannot access '/home/user2/myFolder/abc_*': No such file or directory
或者我完全误解了情况?
答案1
这里有很好的解释:https://unix.stackexchange.com/questions/101847/cannot-expand-asterisk-without-proper-permission
我们需要使用 sudo 调用 shell,并使用 -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