这两天学校事情比较多,跟老师打交道也是弄得有些心烦意乱,能帮学生办的事总要着各种理由推来推去,不提了,翻篇。linux学习也是越来越难了,这两天有个想法,有个简单的linux项目能操作下现在学的知识,应该能更好入门吧。再学几章找个服务配配,就这么定了。
linux文件与目录管理
目录的相关操作:
.:代表此层目录;
..:代表上一层目录;
-:代表前一个工作目录;
~:代表“目前用户身份”所在文件夹。
~account:代表account这个用户的主文件夹(account是个账号目录)
处理目录的命令:
cd:切换目录(change directory);
pwd:显示当前目录(print working directory);
mkdir:新建一个目录(make directory);
rmdir:删除一个空的目录(remove directory)。
执行文件路径的变量:$PATH
echo $PATH:查询文件的路径;
PATH=”$PATH”:/root:将/root加入PATH当中;
不同身份用户默认的PATH不同,默认能够随意执行的命令也不同;
PATH是可以修改的,所以一般用户还是可以通过修改PATH来执行某些位于/sbin或/usr/sbin下的命令来查询;
使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查询PATH来得正确;
命令应该要放置到正确的目录下,执行才会比较方便;
本目录(.)最好不要放到PATH当中。
文件与目录管理的常用命令:
ls:查看文件与目录,-a全部文件、-d目录本身、-l列出长数据串;
cp:复制文件或目录,-a全部内容及属性复制、-i目标文件已存在,会先询问、-r递归持续复制,用于目录的复制;
rm:删除文件或目录,-f是force意思,不出现警告信息、-i互动模式,删除前会询问用户、-r递归删除,用在目录的删除。
mv:移动文件与目录或更改名字,-f是force意思,直接覆盖、-i移动时会询问、-u目标文件已存在,source比较新,才会更新。
文件内容的查询命令:
cat:由第一行开始显示文件内容(concatenate),-b打印行号,空白行每行号、-n打印行号,空白行也有行号、-a相当于vET的整合参数,列出特殊字符,结尾段行$显示,[tab]键以^I显示。
tac:从最后一行开始显示,与cat相反;
nl:显示时输出行号;
more:一页一页显示内容,“Space”向下翻一页、“Enter”向下滚动一行、“/string”向下查询“字符串”这个关键字、“:f”立刻显示出文件名和目前所在行数、“q”立刻离开more、不再显示内容、“b或ctrl+b”往回翻页。
less:与more类似,比more功能更多;“Space”向下翻一页、“PageDown”向下翻一页、“PageUp”向上翻一页、“/string”向下查询“字符串”、“?string”向上查询“字符串”、n重复前一个查询(与/或?有关)、“q”离开less。
head:只看头几行,-n [数字]显示头几行;
tail:只看尾几行,-n [数字]显示几行;
od:以二进制的方式读取文件内容。
修改文件时间或创建新文件:touch
modification time(mtime):文件的内容数据更改时的时间;文件默认的时间
status time(ctime):文件的状态(权限和属性)改变时的时间;
access time(atime):文件被访问时跟新的时间。
文件默认权限:umask
用户创建“文件”默认没有执行(x)的权限,只有r、w,最大权限为666;
用户创建“目录”默认所有权限均开放,为777。
例如:umask 002;touch test1;mkdir test2;
则-rw-rw-r-- test1;drwxrwxr-x test2。
文件的隐属性:chattr,lsattr
设置文件的隐藏属性:chattr [+-=][参数] filename。+:增加某一个参数、-删除某一个参数、=仅有后面接的参数。a:文件只能增加数据,不能删除、修改数据,只有root才能设置这个属性。i:使一个文件不能被删除、修改、设置连接,只有root才能设置这个属性。
显示文件的隐藏属性:lsattr [参数] filename。-a:显示文件的隐藏属性。-R连同子目录的数据一起显示。
文件的特殊权限:SUID、SGID、SBIT
SUID(set uid):
SUID权限仅对二进制程序文件(binary program)有效;
执行者对于改文件需要有x的权限;
本权限仅在执行改文件的过程中(run-time)有效;
执行者将具有该文件所有者(owner)的权限。
SGID(set gid):
文件:SGID对二进制程序有用;
程序执行者对于改程序来说,须具备x的权限;
执行者在执行的过程中将会获得改程序用户组的支持。
目录:用户若对于此目录具有r与x的权限时,该用户能够进入此目录;
用户在此目录下的有效用户组将会变成该目录的用户组;
用户在此目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同。
SBIT(sticky bit):针对目录有效
当用户对于此目录具有w,x权限,即具有写入的权限时,用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件。
文件具有SUID特殊权限时,代表当用户执行此二进制文件时,执行过程中用户暂时具有程序拥有者的权限。
目录具有SGID特殊权限时,代表用户在这个目录下面新建的文件用户组都会与该目录的用户组名同名。
目录具有SBIT特殊权限时,代表用户在这个目录下面新建的文件只有自己与root才能够删除。
SUID/SGID/SBIT权限设置:
SUID=4;SGID=2;SBIT=1 chmod 4755 fileneme或chmod u=rexs,g=rx,o=rx filename;则文件权限为“-rwsr-xr-x”。“s”代表拥有者有“x”的权限,“S”代表拥有者没有“x”(空的)的权限。取消特殊权限,chmod u-s filename;则文件权限为“-rwxr-xr-x”。
查看文件类型:file filename。
查询命令与文件所在目录:
which filename寻找“执行文件”所在目录;
whereis [参数] filename寻找“特定文件”所在目录,-b只找二进制格式文件、-m只找说明文件manual路径下的文件、-s只找source源文件、-u查找不再上述选项中的文件。
locate filename,locate依据/var/lib/mlocate内的数据库记载,找出用户输入的关键字文件名,updatedb根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件。
find [PATH] [option] [action],参数-atime、-ctime、-mtime、-uid、-gid、-name等。
权限与命令间的关系:
1.让用户能进入某目录成为“可工作目录”的基本权限是什么?
可使用的命令:例如cd等切换目录的命令。
目录所需权限:至少要具有x的权限。
2.用户在某个目录内读取一个文件的基本权限是什么?
可使用的命令:例如cat、more、less等。
目录所需权限:至少要具有x的权限。
文件所需权限:至少要有r的权限。
3.用户可以修改一个文件的基本权限是什么?
可使用的命令:例如vi编辑器等。
目录所需权限:在该文件所在目录至少要有x的权限。
文件所需权限:要具有r、w的权限。
4.一个用户可以创建一个文件的基本权限是什么?
可使用的命令:touck、mkdir等。
目录所需权限:要具有w和x的权限,w最重要。
5.用户进入某目录并执行该目录下的某个命令的基本权限是什么?
目录所需权限:要具有x的权限。
文件所需权限:要具有x的权限。
1.什么是绝对路径与相对路径?
A.绝对路径是以根目录(/)为起点,相对路径以其他目录为起点,是相对于目前工作目录的路径。
2.如何更改一个目录的名称?例如由/home/test1变为/home/test2。
A.mv /home/test 1 /home/test2。
3.PATH这个环境变量的意义是什么?
A.用来指定执行文件执行的时候,指令搜寻的目录路径。
4.umask 有什么用处与优点?
A.可拿掉的权限,设定创建目录和文件时的权限=默认权限-umask权限,可以提高系统的安全性。
5.当一个使用者的umask分别为033与044,他所建立的文件与目录的权限是什么?
A.umask=----wx-wx(033);文件默认权限为666=rw-rw-rw-;目录默认权限为777=rwxrwxrwx;所以建立文件的权限是(rw-rw-rw-)-(----wx-wx)=(rw-r--r--);建立目录的权限是(rwxrwxrwx)-(----wx-wx)=(rwxr--r--)。
6.什么是SUID ?
A.SUID权限仅对二进位程式有效;
执行者对于该程式需要具有x的执行权限;
本权限仅在执行该程式的过程中有效(run-time);
执行者将具有该程式拥有者(owner) 的权限。
7.当我要查询/usr/bin/passwd这个文件的传统权限、文件类型和文件的隐藏属性,可以使用什么命令来查询?
A.ls -al /usr/bin/passwd;file /usr/bin/passwd;lsattr /usr/bin/passwd。
8.尝试用find找出目前linux系统中所有具有SUID的文件有哪些?
A.find -perm +4000 -print。
9.找出/etc下,文件大小介于50K到60K之间的文件,并且将权限完整的列出。
A.find /etc -size +50k -a -60k -exec ls -l {}\;-a代表and。
10.找出/etc下,文件容量大于50K 且文件所属人不是root的文件名,且将权限完整的列出。
A.find /etc -size +50k -a ! -user root -exec ls -l {}\;! 代表的是反向选择。
11.找出/etc下,容量大于1500K以及容量等于0的文件。
A.find /etc +1500k -o -size 0,-o代表or。