http://www.apelearn.com/study_v2/linux_dir_tree.jpg
/bin:里面装的是用户用的命令,root也可以用
/sbin:里面是只有root能用的命令
/boot:系统启动的相关文件,里面有系统启动的关键文件,删除后系统无法启动
/dev:Linux系统下的设备文件
/etc:配置文件的所在目录
/home:用户的家目录
/lib:存系统库文件的
/lib64:存系统的库文件,很多命令都会依赖一些库,查看命令依赖关系:ldd
/media:媒介目录。默认时空的。比如插一个U盘会自动放到这个目录下面去
/mnt:临时挂载目录,默认也是空的。可以把新增的光驱或硬盘挂载到这个目录下面
/opt:空目录
/proc:里面是一些系统进程
/root:root用户家目录
/run:一些进程产生的临时文件,重启就会消失的文件
/srv:空的,存服务产生的文件
/sys:存系统内核的相关文件
/tmp:系统的临时目录,任何一个用户都可以在这个文件夹下读写删除文件
/usr:用户的文件
/var:是一个很重要的目录。经常用的比如/var/log,系统日志。
tree命令:以树形的形式显示一个目录下面有哪些目录和子文件。
tree -L 是可以设置显示最大层数。下面显示一层目录下的结构
[root@zyp01 /]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
ls 命令
ls -l :列出文件详细信息
ls -i :显示文件和目录的inode编号
ls -la:查看所有隐藏文件
ls -lta:时间顺序排序
ls -ld :只列出目录本身
[root@zyp01 ~]# ls -la
总用量 28
dr-xr-x---. 2 root root 135 1月 21 16:57 .
dr-xr-xr-x. 17 root root 224 1月 21 14:40 ..
-rw-------. 1 root root 1420 1月 21 14:41 anaconda-ks.cfg
-rw-------. 1 root root 321 1月 23 15:56 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
ls -al显示的结果详解
第一列:
1.第一个字母或字符的含义如下:
– 表示普通文件
d:目录文件
s:socket文件
l:链接文件
c:字符设备文件
b:块设备文件
s: 通信文件
2. 后面的9个字符代表文件或者目录的权限,字母r w x分别代表读,写,执行权限,其对应的权限数字分别为4 2 1.前3个代表文件或者目录的拥有这的权限,中间的3个代表文件或者目录的所有组的权限,最后的3个代表其他人访问文件的权限。
第二列: 代表文件或者目录的链接数,即目录或者文件下还包含几个目录或者文件数。
第三列: 代表文件或者目录的所有者。
第四列: 代表文件或者目录的所有组。
第五列: 代表文件或者目录的大小,单位为字节(byte)
第六列: 代表文件或者目录的最后修改时间(使用[stat 文件名或者目录名] 用以查看文件或者目录的访问时间access,文件或者目录的修改时间modify,文件或者目录的状态改变时间change)
第七列: 代表文件名或者目录名
不加任何参数,列出目前所有别名设置
[root@zyp01 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
自定义别名
alias zyp=‘ ls -la’
取消自定义
unalias zyp
which命令:
which命令可以查看一个或多个命令、可执行文件的绝对路径,并会显示命令的别名。
需要说明的一点,which命令是通过遍历PATH环境变量路径的方式查找文件的,如果一个命令不存在于PATH中的任何一个路径下,使用which命令是查找不到的。
[root@zyp01 ~]# which cp
alias cp='cp -i'
/usr/bin/cp
之前学习ls -l命令的时候,学习了列出每个位置的含义都是什么。
[root@zyp01 ~]# touch 1.txt
[root@zyp01 ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 1月 29 15:53 1.txt
rw-表示文件所有者权限
中间位r–文件所属组权限
后三位r–其他用户权限
r:读取属性 w: 写入属性 x:执行属性
权限值分别是: r=4 w=2 x=1
所以rw-r–r-- 可表示为644
修改权限命令文件如下:
[root@zyp01 ~]# touch 2.txt
[root@zyp01 ~]# ls -l 2.txt
-rw-r--r--. 1 root root 0 1月 28 17:45 2.txt
[root@zyp01 ~]# chmod 700 2.txt
[root@zyp01 ~]# ls -l 2.txt
-rwx------. 1 root root 0 1月 28 17:45 2.txt
或者:chmod u-rwx,g=rw ,o=r 文件/目录名字
[root@zyp01 ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 1月 29 15:53 1.txt
[root@zyp01 ~]# chmod 777 1.txt
[root@zyp01 ~]# ls -l 1.txt
-rwxrwxrwx. 1 root root 0 1月 29 15:53 1.txt
[root@zyp01 ~]# chmod u=rwx,g=rw,o=r 1.txt
[root@zyp01 ~]# ls -l 1.txt
-rwxrw-r--. 1 root root 0 1月 29 15:53 1.txt
再或者chmod a+x 文件/目录名字
a-x,就是全部去掉x权限,u+w,u-x都可以用。
chmod -R 可以把目录及子目录和文件批量更改权限
在linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw- ,创建目录的默认权限 drwxrwxrwx ,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。
[root@zyp01 ~]# umask
0022
[root@zyp01 ~]# touch 666.txt
[root@zyp01 ~]# chattr +i 666.txt
[root@zyp01 ~]# vi 666.txt
[root@zyp01 ~]# lsattr 666.txt
----i----------- 666.txt
创建set_uid权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限。例如,账号和密码的存放其实是/etc/passwd与/etc/shadow,它们的拥有者是root。在这个权限中,仅有root可以强制写入。一个普通用户zyp01去更新自己的密码时,使用的就是/usr/bin/passwd程序,却可以更新成功。
[root@zyp01 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
[root@zyp01 ~]#
set_uid权限意味着,除了这个文件的所有者之外,其他所属组,其他用户在执行此命令的那一瞬间,拥有所有者的权限。要赋予文件set_uid权限,那么此文件必须要二进制可执行的。例如ls,passwd,vi。
[root@zyp01 ~]# useradd zyp001
[root@zyp01 ~]# su zyp001
[zyp001@zyp01 root]$ ls /root
ls: 无法打开目录/root: 权限不够
[zyp001@zyp01 root]$ ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117680 10月 31 03:16 /usr/bin/ls
[zyp001@zyp01 root]$ chmod u+s /usr/bin/ls
chmod: 更改"/usr/bin/ls" 的权限: 不允许的操作
[zyp001@zyp01 root]$ su root
密码:
[root@zyp01 ~]# chmod u+s /usr/bin/ls
[root@zyp01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117680 10月 31 03:16 /usr/bin/ls
[root@zyp01 ~]# su zyp001
[zyp001@zyp01 root]$ ls /root
123.txt 1.txt 666.txt abc anaconda-ks.cfg
[zyp001@zyp01 root]$ su root
密码:
[root@zyp01 ~]# chmod u-s /usr/bin/ls
[root@zyp01 ~]# su zyp001
[zyp001@zyp01 root]$ ls /root
ls: 无法打开目录/root: 权限不够
[zyp001@zyp01 root]$
1. 什么是inode
文件存储在硬盘上,硬盘最小存储单位叫做“扇区”,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区的读取,而是一次性连续读取多个扇区。即一次性读取一个“块”,这种有多个扇区组成的块,是文件存取的最小单位。文件数据都存储在块中,那么很显然,我们还必须找到一个地方存储文件的元信息,比如文件的创建者,文件的日期,文件的大小等等。这种存储文件元信息的区域就叫做inode。中文叫索引节点
2.inode的内容
[root@zyp01 ~]# stat 666.txt
文件:"666.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:35916385 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2019-01-29 16:21:08.980137999 +0800
最近更改:2019-01-29 16:20:51.077137614 +0800
最近改动:2019-01-29 16:21:03.646137884 +0800
创建时间:-
[root@zyp01 ~]# ls -i 666.txt
35916385 666.txt
目录文件
目录也是一种文件
inode特殊作用
有时,文件名包含特殊字符,无法正常删除,这是,可以直接删除inode。
移动文件或重命名文件,只是改变文件名,不影响inode号码。
打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因为,通常来说,系统无法从inode号码得知文件名。
类似于Windows快捷方式。文件a和文件b的inode号码不一样,但是文件a的内容是文件b的路径。读取文件a时,系统会自动将访问者导向b。
查看系统版本
[root@zyp01 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
/bin相当于/usr/bin的快捷方式
[root@zyp01 ~]# ls -l /bin
lrwxrwxrwx. 1 root root 7 1月 20 16:51 /bin -> usr/bin
ln -s 源文件 创建的软链接文件
Linux系统允许多个文件名指向同一个inode号码。这意味着,可以用不同文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名,但删除一个文件名,不影响另一个文件名的访问。
硬链接不支持对目录进行,只支持对文件,且不能跨分区。
ln 源文件 硬链接文件