1. 绝对路径和相对路径
1) 绝对路径:从根目录开始的路径
【例如】 /etc/inittab #根目录下的etc子目录中的inittab文件
2) 相对路径:不以根目录开始,以相对于当前目录的路径指定一个文件
【例如】 etc/inittab #当前目录下etc子目录中的inittab文件
2. 文件和目录的读写权限
使用ls –l命令,前十位表示文件/目录的读写权限:
u 第1位表示类型,“d”表示目录,“-”表示普通文件,“b”表示设备(块文件);
u 2~4位表示文件所有者的权限;5~7位表示群组内其他成员的权限;8~10位表示组外其他所有人的权限;
u 三位为一组,顺序分别是rwx,其中r表示读,w表示写,x表示执行;
u 2~10位若为“-”表示0,若为字母表示1,如“-rw-rw-rw-”表示此为文件,且存取权限为666;
【注意】Linux系统中规定了4种不同的用户:文件所有者、组群、组外其他用户和超级用户root,一般情况下,root对所有的文件和目录拥有所有权限。
3. 更改文件和目录的拥有者:chown
语法:chown 【-R】 文件的新拥有者 文件名
u -R:对目录及该目录下的所有文件和子目录都进行相同的操作,即递归更改目录的所有者;
① chown rjxy file #把文件file的所有者改为rjxy
② chown –R rjxy dir #把目录dir及该目录下的所有文件和子目录的所有者都改为rjxy
4. 更改文件和目录的组群:chgrp
用法同chown
① chgrp rjxy file #把文件file的组群改为rjxy
② chgrp –R rjxy dir #把目录dir及该目录下的所有文件和子目录的组群都改为rjxy
5. 改变文件和目录的存取权限:chmod
1) 数值模式
语法:chmod 【-R】权限值 文件名1 文件名2 ……
u -R:对目录及该目录下的所有文件和子目录都进行相同的操作;
① chmod 744 file #把文件file的读写权限改为744,即rwxr--r—
② chmod -R 744 dir #把目录dir及该目录下的所有文件和子目录的读写权限改为744
2) 符号模式
chmod {a、u、g、o}{+-=}{rwx} 文件名1 文件名2 ……
u a、u、g、o表示要赋予权限的用户的类,a代表所有的用户,u代表文件的所有者自身,g代表和所有者同组群的用户,o代表组外的其他用户
u +-=用来增加、删除或设置权限,+表示增加权限,-表示删除权限,=表示设置权限
u rwx表示要增加、删除或设置的权限值,r表示读权限,w表示写权限,x表示执行权限
① touch file #新建文件file,其默认读写权限为644(rw-r--r--)
② chmod u+x file #增加所有者对file的执行权(把file的权限改为744)
③ chmod a-r file #删除所有的人对file的读权限(把file的权限改为300)
④ chmod g=rx file #设置组群对file的具有读和执行的权限
6.
echo 平面显示 rm -rf * 删除所有 |
1) 设置文件的隐藏属性:chattr
语法:chattr 【+-=】【ASacdistu】 文件/目录
u +:在原有基础之上添加参数
u -:在原有基础之上删除参数
u =:重新设置参数
u a:可向其增加数据,不能删除/修改数据
u c:文件自动压缩有存储(读取时会自动解压缩)
u d:当dump备份时,该文件/目录不会被备份
u i:不可删除、改名,无法写入数据
u s:删除时彻底删除,相当于windows下的shift+delete
u u:与s相反,删除时放入回收站
① chattr +i /etc/inittab #保护文件inittab不能被做任何修改,执行后,该文件不能被编辑、移动或删除
② chattr –i /etc/inittab #去除对文件inittab的保护
③ chattr +a /root/mylog #保护日志文件mylog,只能向后追加数据,不能修改或删除(可用“>>”向文件中追加数据)
echo qqq >> mylog #用echo命令显示字符串“qqq”,并用>>将字符串“qqq”追加到文件mylog后面
2) 查看隐藏属性:lsattr
语法:lsattr 【-adR】文件/目录
u -R:递归显示子目录
u -a:显示所有文件
u -d:限时目录自身的信息,不显示目录的内容(和ls命令的-d选项作用类似)
① lsattr a #查看文件a的隐藏权限,显示结果:-----a-------e-,其中a表示可向其追加数据,不可删除或修改数据;e表示该文件位于扩展分区,该属性是只读的,不能修改
7. 文件的默认权限
用户创建文件或目录时自动赋予默认读写权限,默认值为666(文件)和777(目录),即每一类用户创建文件时可以为其赋予的默认最大值为6,系统不允许在创建文件时就赋予它执行权限,而要在创建后用chmod命令增加这一权限,这样可以更好地保证系统安全。但是目录的执行权比较特别,如果没有执行权,则用户无法对该目录进行读写,所以目录的最大权限值可以到7。
修改默认权限:umask
语法:umask xyz #xyz为数值,如022,表示从默认权限中取走的权限,即取走了写权限,而非666或777与该数值的差值
系统默认root用户的umask为022,即root用户创建的目录默认读写权限为755,创建的文件默认读写权限为644;普通用户的umask为002,即普通用户创建的目录默认读写权限为775,创建的文件默认读写权限为664。
① su root
umask #显示结果为0022(第一个0为特殊权限)
② su rjxy
umask #显示结果为0002(第一个0为特殊权限)
③ umask 333 #更改当前用户的umask值为333
mkdir test1
touch test2
ls –l #查看新创建的目录和文件的读写权限,目录和文件都为444,即umask为333相当于从默认权限(文件为666,目录为777)中取走了写和执行的权限
④ umask 666
mkdir test2
touch test2
ls –l #从默认权限中取走了读和写权限,则新创建的文件权限为000(没有任何权限),新创建的目录权限为111
8. 文件的特殊权限:setuid,setgid,stick bit
1) setuid和setgid:查看/usr/bin/passwd和/etc/passwd的权限
① ls –l /usr/bin/passwd /etc/passwd #查看/usr/bin/passwd和/etc/passwd文件的读写权限,结果如下
【注意】/usr/bin/passwd是命令,任何用户都可以使用该命令修改个人密码,root用户可以用该命令修改所有用户的密码;/etc/passwd是文件,存放各个用户的账户和密码信息。从读写权限上看,仅root用户对/etc/passwd文件具有修改权限(写权限),但是实际上每个用户都可以通过/usr/bin/passwd修改密码从而修改/etc/passwd文件。
/usr/bin/passwd的读写权限中的“s”,即setuid,表示令普通用户暂时拥有“只有root用户有权执行”的特殊权限。
setgid则表示组群用户都暂时拥有“只有root用户有权执行”的特殊权限。
2) stick bit:
① ls –dl /tmp #查看/tmp目录的读写权限
/tmp目录的读写权限为drwxrwxrwt,其中“t”即为stickbit(粘贴位),表示除非文件的所有者和root用户有权限删除它,除此之外其他用户不能删除和修改这个文件。即/tmp作为用户共有的临时文件夹,任何用户都有读写权限,stick bit可以避免A用户在该目录下创建的临时文件被B用户删除。
u stickbit可以用于共享的目录,可以放开目录的全部权限,每个人都可以使用该目录,但是不能删除其他用户的文件。
【特殊权限举例】
u 使用字符设置特殊权限
① chmod u+s file #设置setuid
② chmod u-s file #删除setuid
③ chmod g+s file #设置setgid
④ chmod o+t file #设置stick bit
u 使用数值设置特殊权限:在普通读写权限值前面添加特殊权限位
setuid setgid stick bit
1 1 1
其中,setuid对应的二进制数值为100(十进制数为4);setgid为010(2);stick bit为001(1)。如需增加某个特殊权限,只需要将对应的十进制数值叠加即可。
① chmod 4644 file #修改文件file的读写权限为644,并设置setuid
② chmod 2644 file #修改文件file的读写权限为644,并设置setgid
③ chmod 1644 file #修改文件file的读写权限为644,并设置stick bit
④ chmod 6644 file #修改文件file的读写权限为644,并设置setuid和setgid
【注意】若文件设置特殊权限后,使用ls -l指令查看到的特殊权限字母不是小写的s和t,而是大写的S和T,则表示此文件的特殊权限没有生效,此时只需为该文件加上可执行权限即可。
9. 查询命令
1) which:搜索系统可执行文件(命令)的详细路径
① which pwd #查看pwd命令的详细路径
2) whereis:搜索可执行文件(命令)、源代码文件、帮助文件及其他文件。
u -b:定位可执行文件
u -m:定位帮助文件
u -s:定位源代码文件
u -u:搜索默认路径下除可执行文件、源代码文件和帮助文件外的其他文件
① whereis tomcat #查找tomcat,若输出为“tomcat:”则表示没有找到
② whereis pwd #查找pwd,显示所有结果
③ whereis -b pwd #查找pwd,只查找可执行文件(命令的二进制文件)
④ whereis -m pwd #查找pwd,只查找帮助文件
⑤ whereis -s pwd #查找pwd,只查找源文件
3) find:在系统特定目录下,查找名字具有某种特征或其具有某种属性的文件。
语法:find 【path】 -option 【-print】 【-exec–ok command】 {} \;
u path:搜索范围,即指出要查找的目录,缺省为当前目录。例如,用“/”表示根目录;
u -execcommand {} \;:将查到的文件执行command命令,“{}”和“\;”之间有空格,“\;”的“;”为半角分号;
u -ok:和-exec相同,但在操作前要询问用户;
【常用选项】
u -name:按文件名查找
u -perm:按执行权限来查找
u -user:按文件所有者查找
u -group:按组查找
u -mtime-n +n n:按文件更改时间查找文件,-n表示n天以内,+n表示n天以前,n表示确切n天
u -atime-n +n n:按文件访问时间查找文件,-n表示n天以内,+n表示n天以前,n表示确切n天
u -ctime-n +n n:按文件创建时间查找文件,-n表示n天以内,+n表示n天以前,n表示确切n天
u -newerfile1 !file2:查找更改时间比file1新,但比file2旧的文件
u -typeb/d/c/p/l/f:查找块设备、目录、字符设备、管道、符号链接和普通文件
u -sizen[ckMG]:查长度为n块的文件(c表示字节B,k表示kB,M表示MB,G表示GB)
① find -name abc #在当前目录下查找名字为abc的文件
② find -name abc‘*’ #在当前目录下查找名字以abc开头的文件,注意通配符“*”用半角单引号括起来
③ find -name ‘*’abc‘*’ #在当前目录下查找名字中包含abc的文件
④ find /etc -perm 644 #在/etc目录中查找权限为644的文件
⑤ find -type f -exec ls -l {} \; #在当前目录下查找所有的普通文件,并在-exec选项中使用ls -l命令将它们列出。