关于执行文件路径的变量 $PATH 应用:
修改$PATH
PATH=$PATH:/usr/local/java/bin
ls 应用:
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
选项与参数:
-a :全部的档案,连同隐藏档,一起列出来
-d :仅列出目录本身,而不是列出目录内的档案数据
-h :将档案容量以较易读的方式(例如 GB, KB 等等)列出来
-i :列出 inode 号码
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小
-R :连同子目录内容一起列出来,等于该目录下的所有档案都会显示出来
-S :以档案容量大小排序,而不是用档名排序
-t :依时间排序,而不是用档名
ls -lrt 按时间由远到近
显示文件的完整时间格式
ls -l --full-time /root/install.log
[root@www ~]# mkdir [-mp] 目录名称
选项与参数:
-m :配置文件案的权限 直接设定,不需要看预设权限 (umask)
-p :帮助你直接将所需要的目录(包括上层目录)递归建立起来!
[root@www tmp]# mkdir -m 711 test2
查看文档:
cat 由第一行开始显示档案内容
tac 从最后一行开始显示,可以看出tac是cat的倒着写
nl 显示的时候,顺遍输出行号
more 一页一页的显示档案内容
less 不more类似,但是比more更好的是,他可以往前翻页
head 叧看头10行
tail 叧看尾巳10行
od 以二进制的方式读取档案内容
more的使用:
[root@www ~]# more /etc/man.config
空格键 (space) :代表向下翻一页;
Enter :代表向下翻『一行』;
/字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
:f :立刻显示出文件名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该档案内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对档案有用,对管线无用
less的使用:
空格键 :向下翻动一页;
[pagedown] :向下翻动一页;
[pageup] :向上翻动一页;
/字符串 :向下搜寻『字符串』的功能;
?字符串 :向上搜寻『字符串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
文档三属性:mtime、ctime、atime
修改档案时间或建置新档: touch
modification time (mtime):
当该档案的『内容数据』变更时,就会更新这个时间!内容数据指的是档案的内容,而不是档案的属性或权限喔
status time (ctime):
当该档案的『状态 (status)』改变时,就会更新这个时间,,举例来说,像是权限与属性被更改了,都会更新这个时间
access time (atime):
当『该档案的内容被取用』时,就会更新这个读取时间 (access)
[root@www ~]# touch [-acdmt] 档案
选项与参数:
-a :仅修订 access time
-c :仅修改档案的时间,若该档案不存在则不建立新档案
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日莆篁时间
-m :仅修改mtime
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]
档案隐藏属性: chattr, lsattr
chattr指令只能在Ext2/Ext3的文件系统上面生效
[root@www ~]# chattr [+-=][ASacdistu] 档案或目录名称
选项与参数:
+ :增加某一个特殊参数,其他原本存在参数则不动
- :移除某一个特殊参数,其他原本存在参数则不动
= :设定一定,且仅有后面接的参数
最常用的两个:
a :当设定a之后,这个档案将只能增加数据,而不能删除也不能修改数据,只有root 才能设定这个属性。
i :这个i可就很厉害了!他可以让一个档案『不能被删除、改名、设定连结也无法 写入或新增资料!』对于系统安全性有相当大的帮助!只有root能设定此属性
A :当设定了A这个属性时,若你有存取此档案(或目录)时,他的讵问时间atime 将不会被修改,可避免I/O较慢的机器过度的存取磁盘,这对速度较慢的计算机有帮助
S :一般档案是异步写入磁盘的(原理请参考第五章sync的说明),如果加上S这个属性时,当你进行栏何档案的修改,该更动会『同步』写入磁盘中
c :这个属性设定之后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存(看来对于大档案似乎蛮有用的)
d :当dump程序被执行的时候,设定d属性将可使该档案(或目录)不会被dump备份
s :档案设定了s属性时,如果这个档案被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了
u :与s相反的,当使用u来配置文件档案时,如果该档案被删除了,则数据内容其实还,存在磁盘中,可以使用来救援该档案
[root@www tmp]# touch attrtest
[root@www tmp]# chattr +i attrtest
连 root 也没有办法将这个档案删除
[root@www tmp]# chattr -i attrtest
lsattr (显示档案隐藏属性)
[root@www ~]# lsattr [-adR] 档案或目录
选项与参数:
-a :将隐藏文件的属性也秀出来
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名
-R :连同子目录的数据也一并列出来
档案特殊权限: SUID, SGID, SBIT
SUID
『-rwsr-xr-x』,此时就被称为Set UID,简称为SUID的特殊权限
SUID 权限仅对二进制程序(binary program)有效
执行者对于该程序需要具有x的可执行权限
本权限仅在执行该程序的过程中有效(run-time)
执行者将具有该程序拥有者(owner)的权限
SUID的应用:
ll /etc/shadow
-r-------- 1 root root 1839 12-21 22:49 /etc/shadow
意思是这个档案仅有root可读且仅有root可以强制写入而已。
那么尝试普通用户修改自己的密码
一般用户对于/usr/bin/passwd这个程序来说是具有x权限的
一般用户执行passwd的过程中,会暂时获取root的权限来修改shadow文档。
既SUID的作用:临时获的root的权限进行读取和写入等操作。
SGID
当s标志在档案拥有者的x项目为SUID,那s在群组的x时则称为SetGID, SGID
[root@www ~]# ls -l /usr/bin/locate
-rwx--s--x 1 root slocate 23856 Mar 15 2007 /usr/bin/locate
与 SUID 不同的是,SGID 可以针对档案或目录来设定!如果是对档案来说, SGID 有如下的功能:
SGID 对二进制程序有用
程序执行者对于该程序来说,需具备x的权限
执行者在执行的过程中将会获得该程序群组的支持
当一个目录设定了SGID的权限后,它将具有如下的功能:
用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录
用户在此目录下的有效群组(effective group)将会变成该目录的群组
用途:若用户在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
Sticky Bit
Sticky Bit, SBIT 目前只针对目录有效,对于档案已经没有效果了
当用户对于此目录具有 w, x 权限,亦即具有写入的权限时
当用户在该目录下建立档案或目录时,仅有自己与root才有权力删除该档案
作用体现:+++====常用++++====
只能够针对自己建立的档案或目录进行删除/更名/移动等动作,而无法删除他人的档案
搜寻的使用======
which
寻找『执行档』
[root@gcp ~]# which ifconfig
/sbin/ifconfig
which 是根据用户所设定的PATH变量内的目录去搜寻可执行文件的
which 不能查找内建命令,如 cd 用type查看是否是内建命令
whereis
寻找特定档案
[root@www ~]# whereis [-bmsu] 档案或目录名
选项与参数:
-b :只找可执行文件(binary)格式的档案
-m :只找在说明文件manual路径下的档案
-s :只找 source 来源档案
-u :搜寻不在上述三个项目当中的其他特殊档案
查找可执行文件用选项-b就OK了。
whereis -b
locate
[root@www ~]# locate [-ir] keyword
-i :忽略大小写的差异
-r :后面可接正规表示法的显示方式
限制:要先updatedb 才能使用。
find
find 是很强大的搜寻指令,但时间花用的很大。
find 的搜索格式
find 绝对路径(/) -type f/d -mtime +2 -name *txt | xargs rm -rf { } /;
-mtime n :n 为数字,意义为在n天之前的『一天之内』被更动过内容的档案
-mtime +n :列出在n天之前(不含n天本身)被更劢过内容的档案档名
-mtime -n :列出在n天之内(含n天本身)被更劢过内容的档案档名
-newer file :file为一个存在的档案,列出比file还要新的档案档名
将过去系统上面24小时内有更动过内容(mtime)的档案列出
[root@www ~]# find / -mtime 0
寻找/etc底下的档案,如果档案日期比/etc/passwd新就列出
[root@www ~]# find /etc -newer /etc/passwd
2. 与使用者或组名有关的参数:
-uid n :n为数字,这个数字是用户的账号 ID,亦即UID
-gid n :n 为数字,这个数字是组名的ID,亦即GID,
-user name :name 为使用者账号名称
-group name :name 为组名
-nouser :寻找档案的拥有者不存在/etc/passwd的人
搜寻 /home 底下属于alice的档案
[root@www ~]# find /home/ -user alice
3、与档案权限及名称有关的参数:
-name filename :搜寻文件名为filenam的档案
-size [+-]SIZE :搜寻比SIZE还要大(+)或小(-)的档案。这个SIZE的规格有
c :代表 byte,
k :代表 1024bytes
要找比50KB还要大的档案,就是『 -size +50k 』
-type TYPE :搜寻档案的类型为TYPE的
类型主要有:一般正规档案(f);装置档案(b, c); 目录(d);连结档(l);socket(s)等
-perm mode :搜寻档案权限『刚好等于』mode的档案,例如:0755
-perm +mode :搜寻档案权限『包含任一mode的权限』 -perm +755 , 644也会被搜索出来
-perm -mode :搜寻档案权限『必须要全部囊括mode的权限』的档案 -perm -0744, 0755会被列出来
eg>. 假设系统中有两个账号,分别是alex和arod,这两个人除了自己群组之外还共同支持一个名为project的群组。假设这两个用户需要共同拥有/home/pro_all目录的开发权限,且该目录不让其他人进入查阅。 请问该目录的权限设定应为何?请先以传统权限说明,再以SGID的功能解析。
目标:了解到为何项目开发时,目录最好需要设定SGID的权限
1、创建用户添加群组
[root@feed ~]# groupadd procject
[root@feed ~]# useradd -G procject alex
[root@feed ~]# useradd -G procject arod
[root@feed ~]# id alex
uid=504(alex) gid=505(alex) groups=505(alex),504(procject)
[root@feed ~]# id arod
uid=505(arod) gid=506(arod) groups=506(arod),504(procject)
2、创建项目目录,增加权限
[root@feed ~]# mkdir /home/pro_all
[root@feed ~]# chgrp procject /home/pro_all
[root@feed ~]# chmod 770 /home/pro_all
[root@feed ~]# ll -d /home/pro_all
drwxrwx--- 2 root procject 4096 02-11 15:59 /home/pro_all
3、给项目目录增加SGID的权限
[root@feed ~]# chmod 2770 /home/pro_all/
[root@feed ~]# ll -d /home/pro_all
drwxrws--- 2 root procject 4096 02-11 16:05 /home/pro_all
实现了修改同组用户的文件
Linux_档案与目录管理
最新推荐文章于 2022-06-17 09:48:44 发布