当我进入任何文件夹时“权限被拒绝”

Awa*_*hti 5 permissions bash directory cd-command

每当我cd folder_name/任何目录上尝试bash 时,它都会出现此错误:

-bash: cd: folder_name/: Permission denied

执行权限授予所有文件夹,因此这似乎不是问题。例如在Desktop/输出上运行 stat :

  File: 'Desktop/'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 807h/2055d  Inode: 13107232    Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/caffeine)   Gid: ( 1000/caffeine)
Access: 2017-12-07 14:39:42.715820915 +0500
Modify: 2017-12-06 01:16:13.985722935 +0500
Change: 2017-12-06 01:16:13.985722935 +0500
 Birth: -
Run Code Online (Sandbox Code Playgroud)

其他一些可能相关的信息:

  1. 我可以毫无问题地读取或写入任何目录中的文件。
  2. mkdir正常执行,但我无法cd进入新文件夹。
  3. rmdir 正常执行。
  4. 我可以通过导航到该文件夹​​并从中打开终端来打开特定文件夹中的终端。

那么谁能说出问题是什么?

提前致谢。

编辑: type -a cd显示以下输出:

cd is a function
cd () 
{ 
    echo "-bash: cd: $1: Permission denied"
}
cd is a shell builtin
Run Code Online (Sandbox Code Playgroud)

Vid*_*uth 2

您可能是恶作剧的受害者,恶作剧可能是由您的同事或有权访问您的计算机的人完成的。

Bash 函数可以隐藏原始 shell 内置命令,正如您所看到的那样type -a cd。它向您表明它首先找到了一个可能在某处声明的函数。

cd is a function
cd () 
{ 
    echo "-bash: cd: $1: Permission denied"
}
cd is a shell builtin
Run Code Online (Sandbox Code Playgroud)

从这个输出中,您可以看到有人在某个地方声明了一个 shell 函数,名为cdwhichshadows now the shellbuilt-in command cd。在某些情况下,这样的事情可能有助于使命令更加通用或实现额外的功能,但在这种情况下,这是出于恶意(我的猜测)。这可以在系统上的几个地方完成:

  • /etc/bash.bashrc
  • /etc/profile
  • 中的任何文件/etc/profile.d/
  • /etc/environment
  • ~/.bashrc
  • ~/.profile
  • ~/.bash_aliases
  • 执行或源自这些文件的任何其他文件

找到这个的一种可能方法是grep/etc/和 in 中进行递归搜索/home/

grep -r 'bash: cd: $1: Permission denied' /home/*
sudo grep -r 'bash: cd: $1: Permission denied' /etc/*
Run Code Online (Sandbox Code Playgroud)

这可能会产生这样的输出:

$ grep -r 'bash: cd: $1: Permission denied' /home/*
/home/videonauth/.bashrc:    echo "-bash: cd: $1: Permission denied"
Run Code Online (Sandbox Code Playgroud)

在此示例中,您似乎可以~/.bashrc通过引导输出的路径看到该行或函数grep。这可能会或可能不会产生结果,具体取决于整个事物隐藏的程度。还有其他方法可以隐藏此类函数声明,但可能不太容易找到。