【问题标题】:Unable into cd in to docker folder in /etc无法进入 cd 到 /etc 中的 docker 文件夹
【发布时间】:2018-03-24 11:40:32
【问题描述】:

我正在学习 docker,但我似乎无法 cd 进入 docker 文件夹。我在 etc 文件夹中,我正在尝试进入 docker 文件夹。它是蓝色文本,表示它是一个目录,我可以进入其他蓝色目录。

DIR_COLORS               makedumpfile.conf.sample  ssh
DIR_COLORS.256color      man_db.conf               ssl
DIR_COLORS.lightbgcolor  mime.types                statetab
dnsmasq.conf             mke2fs.conf               statetab.d
dnsmasq.d                modprobe.d                subgid
docker                   modules-load.d            subuid
dracut.conf              motd                      sudo.conf
dracut.conf.d            mtab    

我什至尝试 sudo cd docker。
但是当我这样做时,命令行什么也不做。我可以 ls 文件夹查看其内容如下:

[user@bucephalus1 etc]$ sudo ls -al docker
total 16
drwx------.   2 root root   21 Mar 22 01:07 .
drwxr-xr-x. 103 root root 8192 Mar 24 10:57 ..
-rw-------.   1 root root  244 Mar 22 01:07 key.json

但我无法 cd 进入 docker,如下所示:

[user@bucephalus1 etc]$ sudo ls -al docker
total 16
drwx------.   2 root root   21 Mar 22 01:07 .
drwxr-xr-x. 103 root root 8192 Mar 24 10:57 ..
-rw-------.   1 root root  244 Mar 22 01:07 key.json
[user@bucephalus1 etc]$ sudo cd docker
[user@bucephalus1 etc]$

有人知道这里发生了什么吗?

【问题讨论】:

    标签: linux docker centos


    【解决方案1】:

    这是正常的,由/etc/docker文件夹的权限引起,如您的问题所述:

    [user@bucephalus1 etc]$ sudo ls -al docker
    total 16
    drwx------.   2 root root   21 Mar 22 01:07 .
    (...)
    

    因为这个文件夹属于root,权限为700。

    你可以这样做:

    $ sudo su -
    root:~# cd /etc/docker
    root:/etc/docker# 
    

    但请注意,修改此文件夹可能容易出错,我不确定是否有任何用例需要这样做。

    此外,来自 askubuntu.com 的相关回答提供了有关 sudo su - 的更多详细信息:
    "sudo-su-vs-sudo-i-vs-sudo-bin-bash-when-does-it-matter-which-is-used"

    【讨论】:

    • 太棒了@ErikMD。感谢您的帮助。
    • @Bucephalus 不客气,感谢您接受我的回答 :) 顺便说一句,我刚刚编辑了我的答案以添加指向您可能感兴趣的详细说明的链接。
    【解决方案2】:

    除了前面的回答说的,cd命令的一些背景知识:

    当你cd时,你应该得到这个错误:

    $ cd /etc/docker/
    bash: cd: /etc/docker/: Permission denied
    

    当你sudo cd /etc/docker/时,你很可能会得到这样的错误:

    $ sudo cd /etc/docker
    sudo: cd: command not found
    

    但我猜可能有一些发行版你不明白,实际上有一个cd 二进制文件。但是,这个二进制文件永远不会起作用,因为它会更改 shell 的子进程的当前目录(即cd 进程的当前目录),而不是 shell 的当前目录。

    也许尝试做which cd 并执行结果。即使您不使用sudo,您很可能会看到无法使用此二进制文件更改目录。

    所以使用例如sudo -s 获取 root shell,然后 cd 左右。

    【讨论】:

    • 是的,你可能是对的@sneep。这个发行版 centOS 似乎没有给我“找不到命令”的反馈。它只是重置为命令行提示符。也感谢您的帮助。
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多