Linux

    技术2026-01-04  7

    关于执行文件路径的变量 $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 实现了修改同组用户的文件

    最新回复(0)