【Linux学习笔记】Chapter 7 Linux文件与目录管理_笔记

来源:互联网 发布:java truststore 编辑:程序博客网 时间:2024/05/22 12:07

【记录整理自《鸟哥的Linux私房菜》】

一、目录与路径
1.相对路径与绝对路径
1)绝对路径:路径的写法一定由根目录(/)写起,比如/usr/share/doc这个目录
a)用途:正确度比较好,如果是写程序(shell script)来管理系统的情况下,务必使用绝对路径的写法。
2)相对路径:不是由/写起。例如由/usr/share/doc要到/usr/share/man下面时,可以写成cd ../man。相对路径意指相对于目前工作目录的路径
a)用途:路径名字比较长的这种比较方便

2.目录的相关操作
1)相关符号
. --->代表此层目录
.. --->代表上一层目录
- --->代表前一个工作目录
~ --->代表“目前用户身份”所在文件夹
~account --->代表account这个用户的文件夹(account是个帐号名称)
2)常见处理目录的命令
  • cd [相对路径或绝对路径] ---切换目录
  • pwd---显示当前目录 Print Working Directory
  • mkdir ---新建一个新的目录 ,必须一层层创建
  • mkdir -p /home/bird/testing/test1 可以依序创建全部
  • rmdir ---删除一个空的目录
  • rmdir -rtest 删除该目录下的所有东西

3.关于执行文件路径的变量: $PATH
Q:为什么可以在任何地方执行/bin/ls这个命令呢?为什么我在任何目录下输入ls就一定可以显示出一些信息而不会说找不到该/bin/ls命令呢?
A:因为环境变量PATH的帮助。

二、文件与目录管理
1.查看文件与目录:ls
1)ls [-aADFhilnrRSt] 目录名称
  • -a :全部的文件,连同隐藏文件一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据
  • -l:列出长数据串,包含文件的属性与权限等数据

2)ls [--color = {never,auto,always}] 目录名称
  • --color=never :不要依据文件特性给予颜色显示
  • --color=always:显示颜色
  • --color=auto:让系统自行依据设置来判断是否给予颜色

3)ls [--full-time] 目录名称
  • --time={atime,ctime}:输出访问时间或者改变权限属性时间(ctime)而非内容更改时间(modification time)

EG:1.将主文件夹下的所有文件列出来,包括属性与隐藏文件
#ls -al
2.不显示颜色,但在文件名末显示出该文件名代表的类型(type)
#ls -alF --color=never ~
3.完整呈现文件的修改时间*(modification time),full time有比较完整的时间格式(与-al比较而言)
#ls -al --full-time ~

2.复制、删除与移动:cp,rm,mv
1)cp(复制文件或目录)
  • #cp [-adfilprsu] 源文件(source) 目标文件(destination)
  • -a :相当于-pdr的意思
  • -i :若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行。
  • -r : 递归持续复制,用于目录的复制行为。
  • #cp [options] source1 source2 source3 … directory


eg : 1、用root身份将主文件夹下的.bashrc复制到/tmp下,并更名为bashrc
#cp ~/.bashrc /tmp/bashrc
#cp -i ~/.bashrc /tmp/bashrc

2、切换目录到.tmp,并将/var/log/wtemp复制到/tmp且查看属性
#cd /tmp
#cp /var/log/wtmp . 【如果想要复制到当前目录,后面的“.”别忘了】
#ls -l /var/log/wtmp wtmp 会显示当前文件夹下的/var/log/wtmp 和wtmp 文件

【没有加参数的情况下,文件的权限和用户组、修改时间可能会有改变。
如果想将文件的所有特性都一起复制过来的话,加上-a,如下所示】

#cp -a /var/log/wtmp wtmp_2
#ls -l /var/log/wtmp wtmp_2



ATTENTION:
  • cp进行数据复制的时候,对于该文件必须具有read权限。而且,默认的条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者通常会是命令操作者本身。比如说,上面的例子中,由于我是root这个身份,那么复制过来的文件所有者与用户组就都变成root所有了。
  • 由于这个特性,因此在当我们进行备份的时候,某些需要注意的特殊权限文件,比如密码文件(/etc/shadow)以及一些配置文件,就不能直接以cp来复制,而必须要加上-a或者-p这种可以完整复制文件权限的参数才可以。复制文件给其他的用户时也要注意文件的权限(读写、执行、文件所有者等等)。

3、复制/etc/这个目录下的所有文件到/tmp下面
#cp /etc/ /tmp 【目录不能直接复制,要加上-r】
#cp -r /etc/ /tmp

4、将1中复制的bashrc创建一个链接文件(symbolic link)
# cp -s bashrc bashrc_slink
# cp -l bashrc bashrc_hlink
# ls -l bashrc*


ATTENTION :
  • -l 就是所谓的硬连接(hard link),-s 则是软连接(symbolic link)
简单来说bashrc_slink(软连接)就是一个快捷方式,这个快捷方式会连接到bashrc,所以会有个 - > 的符号。
bashrc_hlink(硬连接)文件与bashrc的属性与权限完全一样,只是连接数变为了2---i-node
【硬连接见Chapter 8 文件系统】

5、若~/.bashrc 比 /tmp/bashrc 新才复制过来
#cp -u ~/.bashrc .tmp/bashrc
【-u 是 目标文件与源文件有差异时才复制过来,常做备份】

6、将例四中生成的bashrc_slink 复制成为 bashrc_slink_1 与bashrc_slink_2
# cp bashrc_slink bashrc_slink_1
# cp -d bashrc_slink bashrc_slink_2
# ls -l bashrc bashrc_slink*

【-d 复制连接文件的属性,没有参数复制源文件】

7、将主文件夹的 .bashrc 及.bash_history 复制到 /tmp 下面
#cp ~/.bashrc ~/.bash_history /tmp
【可以将多个数据一次复制到同一个目录去,最后面一定是目录】


3、rm(移除文件或目录)
1)#rm [-fir] 文件或目录
  • -f :就是force ,强制删除,忽略不存在的文件,不会存在警告信息
  • -i :互动模式,在删除前会询问用户是否操作
  • -r : 递归模式。最常用在目录的删除了【非常危险的参数!!!】

EG:1、将刚才在cp的范例中创建的bashrc删除
# cd /tmp
# rm -i bashrc
2、通过通配符*的帮忙,将/tmp下面开头为bashrc的文件全部删除
# rm -i bashrc* 【*代表0到无穷多个任意字符】
3、将cp范例中所创建的额/tmp/etc这个目录删除
# rmdir /tmp/etc 【不为空,删不了】
# rmdir -r /tmp/etc 【不想一直按y,可以ctrl+c来结束rm】
# \rm -r /tmp/etc 【在命令前加上\,忽略alias的指定参数
4、删除一个带有 - 开头的文件
# touch ./-aaa- 【touch创建一个空文件】
#ls -l
#rm -aaa-【-是参数,会被系统误判】
#rm ./-aaa-
ATTENTION:
  • rm -r 的时候,因为该文件和目录一定会被root删掉,所以系统不会再次询问的。 
  • 文件名最好不要使用“-”开头,因为一般“-”后面接的都是参数。只能是加上本目录的【./】或者是 rm -- -aaa-


4、MV (移动文件与目录,或更名)
1)#mv [-fiu] source destination
# mv [options] source1 source2 source3 … directory
  • -f : force强制的意思,如果目标文件已经存在,不会询问直接覆盖
  • -i :若目标文件(destination)已经存在,就会询问是否覆盖
  • -u:若目标文件已经存在,且source比较新,才会更新(update)

EG :1、复制一个文件,创建一个目录,将文件移动到目录中
# cd /tmp
# cp ~/.bashrc bashrc
#mkdir mvtest
#mv bashrc mvtest
2、将刚才的目录重命名为mvtest2
#mv mvtest mvtest2【重命名还有个rename命令】
3、再创建两个文件,再全部移动到/tmp/mvtest2 当中
#cp ~/.bashrc bashrc1
#cp ~/.bashrc bashrc2
#mv bashrc1 bashrc2 mvtest2
如果有多个源文件或者目录,则最后一个目标文件一定是目录


三、文件内容查询
1.直接查看文件内容---> cat、tac、nl
1)cat(concatenate) 连续
  • -n :打印出行号,连同空白行也会有行号,与-b的参数不同

EG:1、查看/etc/issue这个文件的内容
# cat /etc/issue
2、如果还想加行号呢?
#cat -n /etc/issue
#cat -b /etc/issue ---->不会显示空白行的行号
3、将/etc/xinetd.conf的内容完整显示出来(包含特殊字符)
#cat -A /etc/xinetd.conf ---> [Tab] - ^I 断行- $ Windows断行^M$


2)tac -----反向显列
  • tac /etc/issue----与cat反向
3)nl -----添加行号打印
  • -b a :类似cat -n ,无论是否为空都显示行号
  • -b t :空的一行不要显示行号(默认)
  • -n : 列出行号表示的方法
  • -n ln :行号在屏幕的最左方显示
  • -n rn:行号在自己字段的最右方显示,且不加0
  • -n rz :行号在自己字段的最右方显示,,加0
  • -w :行号字段占用的位数

EG:1、用nl列出/etc/issue的内容
# nl /etc/issue
# nl -b a /etc/issue --->空行也加行号
#nl -b a -n rz/etc/issue --->默认补六位数
#nl -b a -n rz -w 3 /etc/issue --->改为3位数


2.可翻页查看
1)more --- 一页一页翻动
  • Space空格 :向下翻一页
  • Enter:向下滚动一行
  • /字符串 :在显示的内容中,向下查询“字符串”这个关键字
  • :f :立刻显示出文件名以及目前显示的行数
  • q:立刻离开more,不再显示该文件内容
  • b或者ctrl+b:代表往回翻页,不过这操作只对文件有用,对管道无用
2)less --- 一页一页翻动---界面功能与man类似
  • 空格:向下翻动一页
  • [PageDown] :向下翻动一页
  • [PageUp] :向上翻动一页
  • /字符串:向下查询“字符串”的功能
  • ?字符串:向上查询“字符串”的功能
  • n :重复前一个查询(/或?有关)
  • N:反向重复前一个查询(/或?有关)
  • q:离开

3.数据选取
1)head(取出前几行)
  • #head -n number file --->显示几行
  • #head /etc/man.config --->默认显示前10行
  • #head -n 20 file--->显示前20行
  • #head -n -100 file --->显示出前面的所有行数,但是不包括后100行
2)tail(取出后面几行)
  • #tail -n number file --->后面接数字,代表显示几行
  • #tail -n +100 file--->文件从100行以后都会被列出来
  • #tail -f /var/log/message--->持续监测后面所接的文件名,直到按下ctrl+c

EG:想显示该文件的11到20行内容呢?
A:可以取得前20行,再取后10行。所以结果是 【head -n 20 filename | tail -n 10】


4.非纯文本文件:od
由于执行文件通常是二进制文件(binary file),使得前面的命令来读取它的内容的时候,确实会产生类似乱码的数据。
  • #od -t type filename
  • a :利用默认的字符来输出
  • c:使用ASCII字符来输出
  • d[size]:利用十进制(decimal)来输出数据,每个整数占用size bytes
  • f[size]:利用浮点数(floating)来输出数据,每个数占用size bytes
  • o[size]:利用八进制(octal)来输出数据,每个整数占用size bytes
  • x[size]:利用十六进制(hexadecimal)来输出数据,每个整数占用size bytes

EG: 1、请将/usr/bin/passwd的内容使用ASCII方式来输出
#od -t c /usr/bin/passwd

最左边第一列是以进制来表示bytes数,比如0000020代表开头是第16个bytes 8(2*8)的内容。

2、请将/etc/issue这个文件的内容以八进制列出存储值和ASCII的对照表
#od -t oCc /etc/issue


5.修改文件时间或创建新文件:touch
1)时间参数
每个文件在Linux下都会记录很多的时间参数,其实是有三个主要的变动时间 modification time(mtime)
当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。status time(ctime)
当该文件的“状态”(status)改变时,就会更新这个时间,比如像是权限和属性被更改了,都会更新这个时间。access time (atime)
当“该文件的内容被取用”时,就会更新这个读取时间(access)。比如我们使用cat去读取file的时候,就会更新该文件的atime了。
# ls -l /etc/passwd --->ls 默认显示的是该文件的mtime,也就是这个文件上次被更改的时间

# ls -l --time=atime /etc/passwd

# ls -l --time=ctime /etc/passwd

【在安装过后系统时间可能会被改变,因为中国时间比国际标准时间多快了8个小时,如果安装不正确,我们的系统可能会有8个小时快转,有可能文件就来自8个小时之后。还比如由于BIOS的设置错误,导致系统时间跑到未来时间。】
2)#touch [-acdmt] 文件

EG:1、新建一个空的文件并查看时间
#cd /tmp
#touch testtouch
#ls -l testtouch
2、将~/.bashrc复制成为bashrc,假设复制完全的属性,检查其日期
# cp -a ~/.bashrc bashrc
# ll bashrc;ll --time=atime bashrc;ll --time=ctime bashrc

从上到下:mtime atime ctime 【ll是ls -l的一个别名】
在执行的结果中,数据的内容与属性是被复制过来的,因此文件内容事件(mtime)与原本文件相同。但是由于这个文件是刚才被创建的,因此状态(ctime)与读取时间便呈现现在时间。怎么才能更改这个文件的时间呢?
3、修改2的bashrc文件,将日期调整为两天前。
#touch -d "2 days ago" bashrc
# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
4、将3中的bashrc日期改为2007/09/15 2:02
#touch -t 0709150202
#ll bashrc;ll --time=atime bashrc;ll --time=ctime bashrc
【ctime是记录目前的时间,不变】



四、文件与目录的默认权限与隐藏权限
除了基本的r、w、x权限之外,在Linux的Ext2/Ext3文件系统下,我们还可以设置其他的系统隐藏属性,这部分可以使用chattr来设置,而以lsattr来查看,最重要的属性就是可以设置其不可修改的特性。让文件的所有者都不能修改。

EG:1.你的系统有一个一般身份用户dmtai,他的用户组属于users,他的主文件夹在/home/dmtsai,而你是root,你想将你的~/.bashrc复制给他,他可以怎么做?
A:上一章的权限可知,root虽然可以将这个文件复制给dmtsai,不过这个文件在dmtsai的主文件夹中,却可能让dmtsai没有办法读写。(因为改文件属于root而dmtsai又不能使用chown的原因)此外,我们还担心覆盖掉dmtsai自己的.bashrc配置文件,所以我们的操作可以如下:
  1. 复制文件: cp ~/.bashrc ~dmtsai/bashrc
  2. 修改属性:chown dmtsai:users ~dmtsai/bashrc

2.我想在/tmp下面新建一个目录,这个目录名称为chapter7-1,并且这个目录所有者为dmtsai,用户组为users,此外,任何人都可以进入该目录浏览文件,不过除了dmtsai之外,其他人都不能修改该目录下的文件。
A:因为除了dmtsai之外,其他人都不能修改该目录下的文件,所以整个目录的权限应该是drwx-xr-x才对,因此:
  • 新建目录:mkdir /tmp/chapter7_1
  • 修改属性:chown -R dmtsai:users/tmp/chapter7_1
  • 修改权限:chmod -R 755 /tmp/chapter7_1


1、文件默认权限:umask --- 该默认值需要减掉的权限,注意相加减的时候确认一下权限属性。
umask-----就是指定“目前用户在新建文件或者目录时候的权限默认值”
  • umask($/#) $---0002 # ---0022 (一般与权限相关的是后面三个数字)
  • umask -S (Symbolic) $---u=rwx,g=rwx,o=rx #---u=rwx,g=rx,o=rx

2、 文件隐藏属性:chattr,lsattr
1) chattr(设置文件的隐藏属性)
chattr [+-=] [ASacdistu] +增加一个特殊参数,其他原本存在参数不变。-删除某一个特殊参数 =仅有后面接的参数
  • a:当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性
  • i:可以让一个文件“不能被删除、改名,设置链接也无法写入或添加数据”。对于系统安全性有相当大的帮助,只有root能设置此属性。

EG:1、尝试到/tmp下面创建文件,并加入i的参数,尝试删除。
#cd /tmp
#touch attrtest --->创建一个空文件
#chattr +i attrtest --->给予i的属性
#rm attrtest --->尝试删除
2、请将改文件的i属性取消。
#chattr -i attrttest

2) lsattr(显示文件隐藏属性)
  • -a:将隐藏文件的属性也显示出来
  • -d:如果接的是目录,仅列出目录本身的属性而不是目录内的文件名
  • -R:连同子目录的数据也一起列出来
3、文件特殊属性:SUID,SGID,SBIT

1)SetUID ---文件上
  • 当s这个标志出现在文件所有者的x权限上时,例如上面的/bin/passwd这个文件的权限状态,此时就被称为Set UID,简称为SUID的特殊权限。
  • SUID权限对于一个文件的特殊功能是什么呢?基本上SUID有这样的限制与功能:
  • SUID限制仅对于二进制程序(binary program)有效
  • 执行者对于该程序需要具有x的可执行权限
  • 本权限尽在执行该程序的过程中(run-time)有效
  • 执行者将具有该程序所有者(owner)的权限

EG:一般/etc/shadow不能让一般账户去访问的,但是为什么这个一般用户可以修改文件内的密码呢?这就是SUID的功能。
  1. 一般用户对于/usr/bin/passwd这个程序来说是具有x权限的,表示一般用户能执行passwd;
  2. passwd的拥有者是root这个账号
  3. 一般用户执行passwd的过程中,会暂时获得root权限。
  4. /etc/shadow可以被一般用户所执行的passwd所修改。
【如果yai使用cat去读取/etc/passwd时,能够读取吗? 不能,因为cat不具有SUID的权限

SUID仅可用在二进制程序上,不能够用在shell script上面。】因为shell script只是将很多的二进制执行文件调来执行而已,所以SUID的权限部分,还是要看shell script调用进来的程序的设置,而不是shell script本身。SUID对目录也是无效的。

2)Set GID---目录上
  • 当s标志在文件所有者的x项目为SUID,那s在用户组的x时则成为Set GID。
【查看具有SGID权限的文件:ls - l /user/locate】
  • SGID可以针对文件或者目录来设置,如果是对文件来说,SGID有如下的功能:
  • SGID对二进制程序有效
  • 程序执行者对于该程序来说,需要具备x的权限
  • 执行者在执行的过程中将会获得该程序用户组的支持。
  • 除了二进制程序之外,SGID也可以用在目录上,这也是一种常见的途径。当一个目录设置了SGID的权限后,它会具有如下的功能:
  • 用户若对于此目录具有r与x的权限时,该用户能够进入此目录
  • 用户在此目录下的有效用户组(effective group)将会变成该目录的用户组
  • 若用户在此目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同。

3)Sticky Bit---SBIT
【SBIT目前只针对目录有效,对于文件已经没有效果了】
对于目录的作用是:
  • 当用户对于此目录具有w,x权限,即具有写入的权限时
  • 当用户在该目录下创建文件或者目录的时候,仅有自己与root才有权利删除改文件。
  • 4 为SUID
  • 2为SGID
  • 1为 SBIT

EG:# cd /tmp
# touch test <=创建一个测试用的空文件
# chmod 4755 test ; ls -l test <=加入具有SUID的权限
# chomd 6755 test ; ls -l test <=加入具有SUID/SGID的权限
# chomd 7666 test ; ls -l test <=具有空的SUID/SGID权限
-rwSrwSrwT 1 root root 0 Sep 29 03:06 test (出现大写S和T表示都是空的)


4、查看文件类型:file --- 可以先判断这个文件的格式
如果想知道某个文件的基本数据:例如是属于ASCII或者是data文件、或者是binary,且其中有没有用到动态函数库(share lib)等等信息,就可以利用file这个命令来查看。
#file ~/.bashrc
#file /usr/bin/passwd
#file /var/lib/mlocate.db --->数据文件

5、命令与文件的查询
1)脚本文件名的查询
是根据PATH这个环境变量所规范的路径去查询”执行文件的文件名 “which --- 寻找“执行文件”
1、分别用root与一般账号查询ifconfig这个命令的完整文件名
#which ifconfig
2、用which去找出which的文件名
#which which
3、找出cd这个命令的完整文件名
#which cd
【找不到因为cd是bash内置的命令。但是which是默认查找PATH内所规范的目录,所以当然找不到的,但是可以用type找到】

2)文件名的查找 --- whereis / locate --- 利用数据库查 --- 速度快
find ---- 直接查硬盘 ---速度慢
查找命令中,find不是很常用的,因为是直接查找硬盘,速度较慢。而whereis和locate是利用数据库来查找数据,所以相当快速。
whereis --- 寻找特定文件
1、请用不同的身份找出ifconfig这个文件名
# whereis ifconfig
# su - sai
$ whereis ifconfig
2、只找出与passwd有关的“说明文件”文件名(man page)
#whereis -m passwd

  • locate
1、找出系统中所有与passwd相关的文件名
# locate passwd

find --- find [PATH] [option] [action]
  • 与时间有关的参数
1、将过去系统上面24小时内有改动(mtime)的文件列出
# find /-mtime 0【0代表目前的时间】
2、寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出
# find /etc -newer /etc/passwd

# find /var -mtime +4 --- +4代表大于等于5天前的文件名
# find /var -mtime -4 --- -4代表小于等于4天内的文件名
#find /var -mtime 4 --- 4代表4-5那一天的文件名

    • 与用户或用户组名有关的参数
1、查找/home下面属于sai的文件
# find /home -user sai
2、查找系统中不属于任何人的文件
# find / -nouser # find / -nogroup
    • 与文件权限及名称有关的参数
1、找出文件名为passwd的文件
# find / -name passwd
2、找出/var目录下文件类型为Socket的文件名
# find /var -type s
【socket和FIFO文件,可以用 # find /var -type p # find /var -type s】
3、查找文件中含有SGID或者SUID 或者SBIT的属性
# find /perm +7000
【7000 就是 ---s--s--t 】
【-perm 参数:找出特殊权限的文件。而SUID和SGID都可以设置在二进制程序上,假设我想要将/bin、/sbin这两个目录下只要具有SUID或者SGID的文件都列出来,可以
#find /bin /sbin -perm +6000因为SUID是4分,SGID是2分,总共6分。所以可以用+6000
    • 其他可进行的操作
1、将上个范例中找到的文件使用ls -l 列出来
# find / -perm +7000 -exec ls -l {} \;
2、找出系统中大于1MB的文件
# find / -size +1000k

6、权限与命令之间的关系(important)
1)让用户能进入某目录成为“可工作目录”的基本权限是什么?
  • 可使用的命令:例如cd切换工作目录的命令
  • 目录所需权限:用户对这个目录至少需要具有x的权限
  • 额外要求:如果用户想要在这个目录内利用ls查阅文件名,则用户对此目录还需要r的权限。
2)用户在某个目录内读取一个文件的基本权限是什么?
  • 可使用的命令:cat、more、less
  • 目录所需权限:用户对这个目录至少需要具有x权限
  • 文件所需权限:用户对文件至少需要具有r的权限才行
3)让用户可以修改一个文件的基本权限是什么?
  • 可使用的命令:nano 、vim编辑器
  • 目录所需权限:用户在该文件所在的目录至少要有x权限
  • 文件所需权限:用户对该文件至少要有r,w权限
4)让一个用户可以创建一个文件的基本权限是什么?
  • 目录所需权限:用户在该目录要具有w,x的权限,重点在于w
5)让用户进入某目录并执行该目录下的某个命令的基本权限是什么?
  • 目录所需权限:用户在该目录至少要有x的权限
  • 文件所需权限:用户在改文件至少需要有x的权限

EG:1、让一个用户sai能够进行“cp/dir1/file2/dir2”的命令时,请说明dir1,file1,dir2的最小所需权限。
A:执行cp时,sai要能够读取源文件并写入目标文件。
  • dir1 :至少需要有x权限
  • file1 :至少需要有r权限
  • dir2:至少需要有w,x权限\
2、有一个文件全名为/home/student/www/index.html,各目录的权限如下:
(/home/student属于student这个用户组)
Q:请问sai这个账号(不属于student用户组)能否读取index.html这个文件呢?
A:虽然www与index.html是可以让student读取的权限,但是因为目录结构是由根目录一层一层读取的,因此sai可以进入/home但是却不可以进入/home/student,既然/home/student都不能进入,当然也读不到index.html了,所以答案是不可以。
【将/home/student的权限修改为最小711或者直接给予755就可以了】



阅读全文
0 0
原创粉丝点击