目录与路径
目录的相关操作
- cd:切换目录。
- pwd:显示当前目录。
pwd -p会显示实际的工作目录,而非链接文件本身的目录名。
- mkdir:建立一个新目录。
mkdir -m 744 test可以建立test文件夹,且权限是744.mkdir -p test1/test2/test3可以递归的建立文件夹,而不用一层一层的建立。- 常用-m选项,不用-p,因为-p建立的文件夹文件权限和umask有关。
rmdir:删除一个空目录。
使用
echo $PATH来查看PATH。- 只有在PATH路径下的命令才能直接输入执行。
PATH="${PATH}:/root"这样可以将root加入到PATH中。- usr指的是UNIX System Resource。
-
文件与目录管理
文件与目录的查看:ls
ls命令参数的意义
在默认情况下已经将ll设置成为ls -l的意思。复制,删除与移动:cp(copy)、rm(remove)、mv(move)
cp(复制文件或者目录)
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。若复制时什么也没加就会复制过来最根本的文件,而不是快捷方式。
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- -r:递归复制,此时将复制该目录下所有的子目录和文件。
- -l:不复制文件,只是生成链接文件。
- -u:目标文件比源文件新才复制文件,或者是没有源文件才会复制文件。(有差异才会复制)文件才会复制文件。(有差异才会复制)
- 还可以同时将多个文件复制到一个目录中。最后面一定是目录。
- rm(删除文件或目录)
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。非常危险
mv(移动文件与目录,或重命名)
basename /etc/sysconfig/network就会出现network这个文件。dirname /etc/sysconfig/network就会出现sysconfig这个文件夹。文件内容查看
直接查看内容
cat
- tac
-
可翻页查看
more
-
数据截取
head
-
非纯文本文件
-
修改文件时间或创建新文件
touch
- 修改时间(modification time,mtime):当文件的内容数据发生变化时,就会修改时间。
- 状态时间(status time,ctime):当文件的状态改变时,就会更新该时间。比如权限与属性的改变。
- 读取时间(access time,atime):当该文件的内容被读取时就会更新该读取时间。
- ls -l读取出来的时间时修改时间。如果要查看状态时间就要加上 —time=ctime。查看读取时间就要加上—time=atime。
ls -l --time=atime /etc/tmp/config.cfg - 使用touch后面要是加文件名且文件名存在,就会将mtime,atime,ctime都更改为现在的时间。要是加文件名但是文件不存在,就会创建新的文件。
- 使用
touch -d "2 days ago" filename可以将文件的mtime和atime改为两天前,但是不能更改ctime。 - 最常用的还是建立空白文件,和使用touch改mtime和atime到现在。
文件与目录的默认权限和隐藏权限
在Linux传统的ext2,ext3,ext4文件系统下,可以使用chattr设置隐藏属性(不可修改,文件拥有着也不可修改的属性),使用lsattr来查看。但是在Centos7中利用xfs作为默认的文件系统,没有支持所有的chattr。
文件默认权限:umask
umask就是制定目前用户在建立文件或目录时候的权限默认值。
- 使用
umask的第一位是特殊权限,后三位分别是用户,组用户,其他用户的rwx权限 。或者使用umask -S。 - 若用户建立为文件则默认没有可执行x权限,即只有rw项目,也就是普通文件的默认权限是666;若用户建立的是目录文件,则需要x权限来进入目录,即拥有rwx权限,也就是目录文件的默认权限是777。
注意umask的数字指的是该默认值需要减掉的权限。如果umask是022的话,建立一个普通文件,他的默认权限是666,则建立文件时需要666的权限减去022的权限。
建立文件时:(-rw-rw-rw-)-(——-w—w-)==> -rw-r—r— 建立目录时: (drwxrwxrwx) - (d——w—w-) ==> drwxr-xr-x
使用
umask 222可以将umask的值设置为222。- root用户的umask是为022,一般身份用户的umask是002。
-
文件隐藏属性
chattr命令只能在ext2,ext3,ext4的Linux传统文件系统完整生效。在Centos7.x上的xfs文件系统仅支持部分参数。
- chattr 配置文件隐藏属性。
- 格式:
chattr [+-=] [ASacdistu] name - a 这个文件将只能增加数据,而不能删除和修改数据,且只 有root用户可以使用该命令。
- i 可以让一个文件不能删除,改名,设置链接,也没法写入或新增数据,对于系统安全性有很大的帮助。但是只有root用户才能设置。
- xfs系统仅支持Aadis选项。
- 格式:
lsattr 显示文件隐藏属性
SUID仅对二进制程序文件有效。
- 执行者对于该程序需要具有x的可执行权限。
- 本权限仅在执行该程序的过程中有效。
- 执行者将拥有程序拥有者的权限。
比如有一个文件/usr/bin/shadow这个文件对于mgh来说只有执行的权限,但是这个文件的权限是-rwsr-xr-x。由于有SUID权限,故mgh在执行该文件时就可以暂时拥有该文件拥有者的权限rws,故mgh可以对该文件进行修改。
SGID
当s出现在该文件的用户组的x权限位置时称为Set GID,简称为SGID的特殊权限。
-rwx--s--x
注意SGID可以用在文件上,也可以用在目录上。当SGID设置在文件上有如下功能:
- SGID对二进制程序有用。
- 程序执行者对于该程序来说,需要具备x权限。
- 执行者在执行该程序时会具备该程序用户组的支持。
例如:
-rwx--s--x. 1 root slocate 40496 date /usr/bin/locate-rw-r-----. 1 root slocate 2222222 date /var/lib/mlocate/mlocate.db如果有mgh用户想要查看mlocate.db由于没有r权限所以他没办法直接查看,但是locate命令执行的时候会去/var/lib/mlocate/mlocate.db中查找数据,所以当mgh用户使用locate命令的时候由于在locate命令的用户组这个有s权限,且mgh有x权限,所以可以在执行locate时拥有locate命令的用户组权限。然后去读取mlocate.db的数据,就可以有r的权限。
当SGID用在目录上的时候,将会有以下用途:
- 用户对于此目录需要具有r与x的权限,该用户能够进入此目录。
- 用户在此目录下的有效用户组将变成该目录的用户组。
- 用途:若此用户在此目录下具有w的权限(可以新建文件),则用户新建立的文件,该文件的用户组与此目录的用户组相同。
例如: 假设系统中有两个帐号,分别是 alex 与 arod ,这两个人除了自己群组之外还共同在一个名为 project 的群组。假设这两个用户需要共同拥有 /srv/ahome/ 目录的开发权,且该目录不许其他人进入查阅。 如果/srv/ahome的权限是770,属性是
drwxrwx---. 2 root project 6 date /srv/ahome且alex和arod都在project小组中,此时他们两个都可以在/srv/ahome创建文件。假设在该目录创建文件为abcd,查看abcd的文件权限发现是-rw-rw-r--. 1 alex alex 0 date abcd文件的拥有者和小组均为alex,此时arod对于这个文件来说是其他人没有修改的权限。虽然可以删除他,但是不能编辑。不是我们预期的结果。 如果我们能对/srv/ahome设置SGID权限chmod 2770 /srv/ahome,此时alex在/srv/ahome下建立的1234文件的权限为-rw-rw-r--. 1 alex project 0 date 1234,就是我们想要的结果。
SBIT
当t出现在目录的其他人的权限位置的时候被称为Sticky Bit,简称为SBIT。drwxrwxrwt
- SBIT仅对目录有效。
- 当用户对此目录具有w,x的权限,即具有写入的权限;
- 当用户在该目录下建立文件或目录时,只有root和文件拥有者才有权力删除该目录。
S与T
当给用户给SUID、SGID、SBIT时,虽然给上了这三个权限,但是没有给到x的权限。这三个特殊权限都需要文件或者目录有x的权限,要是没给的话,就会出现S与T。
SUID、SGID、SBIT的权限设置
SUID=4、SGID=2、SBIT=1
假如给一个文件的权限改为-rwsr-xr-x,由于s在用户的x权限上,所以是SUID。有两种方法更改:
- 因此可以采用
chmod 4755 filename来进行更改。 - 采用符号法,即
chmod u=rwxs,go=rx filename如果在该文件的基础上再添加SGID和SBIT权限就需要chmod g+s,o+t filename。观察文件类型
file filename就可以查看文件的类型。例如有ASCII文件,可执行文件,data文件。命令与文件的查找
脚本文件的查找
which which [-a] command
whereis [-bmsu] 文件或者目录名- -l:可以列出whereis查询的几个主要目录。
- -b:只查找二进制格式的文件。
- -m:只查找在说明文件manual路径下的文件。man命令
- -s:只查找source文件。
- -u:查找不是上面三个项目中的其他特殊文件。
- locate / updatedb
locate [-ir] keyword- -i:忽略大小写的差异。
- -S:输出locate所使用的数据库文件的相关信息。
- -r:后面可以接正则表达式的显示方式。
- 也可以使用locate passwd这种,只要有文件的完整路径中有passwd就可以查出来。
- locate查找从数据库中查找,这个数据库每天自动更新一次。手动使用
updatedb更新,updatedb读取/etc/updatedb.conf里面的设置,然后再查找系统硬盘内的文件并更新/var/lib/mlocate内的数据库文件。
- find
find [PATH] [option] [action]- 与时间有关
- -mtime n/+n/-n:n为数字,如果n为0,就是今天往前24小时修改过的文件。+1代表24小时往前修改过的文件。-4代表了4天前那一刻到目前修改过的文件。
- -newer:find file -newer file,用来判断那个文件更新。
- 与用户有关
- -uid n
- -gid n
- -user name
- -group name
- -nouser :查找文件的拥有着不在/etc/passwd中的。
- -nogroup :查找文件的拥有着不在/etc/group中的。当系统内某个用户删除掉了,但是文件没删掉,就可以使用这个命令来查找。
- 与文件与权限有关
- -name filename
- -size [+-]50k
- -type TYPE
- -perm mode: -perm 4755查找所有权限为4755的文件。
- -perm -mode:-perm 4755查找所有权限囊括了4755的文件。比如权限为4775的文件也可以被查找出来。
- -perm /mode:-perm 7000查找包含任一权限的文件。比如权限为4000的文件也可以查找出来。只要含有—-s—s—t中任何一个就可以查找出来。
- 额外的操作
- -exec command:例如:
find / -perm /7000 -exec ls -l {} \;就是先执行find / -perm /7000然后将结果放在{}中,执行ls -l操作。其中的-exec``\都是固定的不能更改。 - 找出 /etc 底下,文件大小介于 50K 到 60K 之间的档案,并且将权限完整的列出 (ls -l):
- -exec command:例如:
- 与时间有关
find /etc -size +50k -a -size -60k -exec ls -l {} \;
注意到 -a ,那个 -a 是 and 的意思,为符合两者才算成功
