jinhucheung / blog

学习笔记
6 stars 3 forks source link

Linux 学习之文件与目录管理 #16

Open jinhucheung opened 8 years ago

jinhucheung commented 8 years ago

Index

jinhucheung commented 8 years ago

1. 目录与路径

1.1 相对路径与绝对路径

1.2 特殊的目录符号

注意 : 根目录的上层目录(..)就是其本身

1.3 关于执行文件路径的变量

  1. 环境变量PATH的含义 当我们在执行一个命令时,可以直接输入命令名执行,即使不在此命令的目录下又没有输入命令的绝对路径,为什么? 原因是:当我们直接输入命令名时,系统会去搜索PATH变量下包含的目录,找到第一匹配的命令程序就调用.

  2. PATH的结构 PATH由一堆目录所组成,每个目录中间用:隔开,每个目录有顺序之分.

  3. 查看环境变量PATH 首先我们来查看当前用户的环境变量PATH是什么?执行以下命令

root@kumho-Inspiron-3421:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

kumho@kumho-Inspiron-3421:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

从上面可以知道,不同用户的PATH可以不一样 echo命令有打印的功能, $代表后面接变量,不然echo PATH直接输出PATH

  1. 修改PATH路径中 下面将/root加入到PATH路径中
PATH="$PATH":/root
  1. PATH的总结
    • 不同身份用户默认PATH不同,默认能够执行的命令也不同
    • PATH可以修改
    • 使用绝对路径或相对路径直接执行某个命令,比PATH更准确
    • 命令应该放到正确的目录下,执行较方便
    • 从安全考虑,本目录(.)最好不要加到PATH当中
jinhucheung commented 8 years ago

2. 文件与目录管理

2.1 切换目录与显示当前目录

2.2 新建目录与删除目录

2.3 查看文件与目录

2.4 复制文件/目录以及创建连接文件

2.5 移除文件/目录

2.6 移动文件/目录或者更名

2.7 取得路径的文件/目录名

2.8 新建文件与修改文件/目录的时间

2.9 查看文件类型

jinhucheung commented 8 years ago

3. 文件内容查阅

文件分为纯文本文件/二进制文件/数据格式文件,当我们查阅文件内容时,需要以合适的命令去查阅,以下分为纯文本与二进制文件查阅

jinhucheung commented 8 years ago

4. 文件与目录的默认权限/隐藏属性/特殊权限

4.1 文件默认权限:umask

当我们新建一个新的文件/目录时,其默认权限是怎么指定的,这与umask有关 umask:指定目前用户在新建文件/目录时的权限默认值(不同用户的权限默认值不同)

root@kumho-Inspiron-3421:~# umask
0022
root@kumho-Inspiron-3421:~# umask -S
u=rwx,g=rx,o=rx
  1. 第一种方式:是分数查询,第1个数字表示特殊权限,第2-4个数字一般权限,这组分值表示最大权限默认值需要减掉的权限,比如root用户的umask是0022,那么root新建文件时的默认权限是666去掉022,即644(不要认为是单纯的相减)
  2. 第二种方式:是字符查询,这里的每组分值就是当前用户新建目录时的默认权限值
    • 设置目前用户的权限默认值 执行umask 默认分值
    • 例子 假设某用户的umask是003,请问该用户新建文件/目录的权限是什么? 1) 新建文件的权限是664 2) 新建目录的权限是774
jinhucheung commented 8 years ago

4.2 文件隐藏属性 : chattr/lsattr

jinhucheung commented 8 years ago

4.3 文件特殊权限:SUID/SGID/SBIT

请先观察下面3个文件属性

-rwsr-xr-x 1 root root 45420  1月 27 08:51 /usr/bin/passwd
-rwxr-sr-x 1 root mlocate 34452  6月 20  2013 /usr/bin/mlocate
drwxrwxrwt 6 root root 20480  7月 19 16:31 /tmp

发现了吗? /usr/bin/passwd的user权限是rws /usr/bin/mlocate的group权限是r-s /tmp的others权限是rwt 这里的s以及t就是特殊权限,每个身份对应的特殊权限是固定的,不可能出现rwt这情况.

jinhucheung commented 8 years ago

5. 命令与文件查找

5.1 查找命令

查找命令完整的文件名可用which或type,这两个命令都是通过PATH变量来查找文件名.(正是通过PATH,不同的用户可能找到的结果不一样)

5.2 查找文件

查找文件的完整文件名可以使用whereis/locate/find,其中whereis/locate会到数据库文件去查找(所有查找文件前,最好更新下数据库updatedb),find会直接查找文件系统(在硬盘中查找,较慢)

5.3 find的使用

jinhucheung commented 8 years ago

6. 权限与命令间关系

jinhucheung commented 8 years ago

7. 情景模拟

假设系统有两个账号,分别是kumho与jinhu,这两个人除了自己用户组之外还共同支持一个名为project的用户组.假设这两个用户共同拥有/home/project目录的开发权,而且该目录不许其他人进入查阅.请问该目录权限应设置为什么?

  1. 新建用户及用户组
root@kumho-Inspiron-3421:~# groupadd project
root@kumho-Inspiron-3421:~# useradd -G project jinhu
root@kumho-Inspiron-3421:~# id jinhu
uid=1001(jinhu) gid=1002(jinhu) 组=1002(jinhu),1001(project)
root@kumho-Inspiron-3421:~# id kumho
uid=1000(kumho) gid=1000(kumho) 组=1000(kumho),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
root@kumho-Inspiron-3421:~# user
useradd  userdel  usermod  users    
root@kumho-Inspiron-3421:~# man usermod
root@kumho-Inspiron-3421:~# usermod -aG project kumho
root@kumho-Inspiron-3421:~# id kumho
uid=1000(kumho) gid=1000(kumho) 组=1000(kumho),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare),1001(project)
  1. 创建目录及修改权限
root@kumho-Inspiron-3421:~# mkdir /home/project
root@kumho-Inspiron-3421:~# ls -dl /home/project/
drwxr-xr-x 2 root root 4096  7月 18 21:53 /home/project/
root@kumho-Inspiron-3421:~# chgrp project /home/project
root@kumho-Inspiron-3421:~# ls -dl /home/project/
drwxr-xr-x 2 root project 4096  7月 18 21:53 /home/project/
root@kumho-Inspiron-3421:~# chmod 2770 /home/project
root@kumho-Inspiron-3421:~# ls -dl /home/project
drwxrws--- 2 root project 4096  7月 18 21:53 /home/project