Linux 文件

Linux 文件的基本属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

使用ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

1
2
3
4
5
scenery@scenery-PC:~$ ls / -l
总用量 970072
drwxr-xr-x 2 root root 4096 3月 1 18:48 bin
drwxr-xr-x 3 root root 4096 3月 2 23:34 boot
drwxrwxr-x 2 root root 4096 3月 1 16:57 cdrom

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

  • [ r ]代表可读(read)
  • [ w ]代表可写(write)
  • [ x ]代表可执行(execute)

要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]

文件属性
|类型|属主|用户组|其他用户|
|:-:|:-:|:-:|:-:|
|d|rwx|r-x|rw-|
|0|123|456|789|

从左至右用0-9这些数字来表示

  • 第0位确定文件类型
  • 第1-3位确定该文件的所有者拥有该文件的权限。
  • 第4-6位确定所有者的同组用户拥有该文件的权限
  • 第7-9位确定其他用户拥有该文件的权限。

文件所有者和所有者同组用户(属主 属组)

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组

文件所有者以外的用户又可以分为文件所有者的同组用户其他用户
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

1
2
3
4
5
scenery@scenery-PC:~$ ls / -l
总用量 970072
drwxr-xr-x 2 root root 4096 3月 1 18:48 bin
drwxr-xr-x 3 root root 4096 3月 2 23:34 boot
drwxrwxr-x 2 root root 4096 3月 1 16:57 cdrom

在以上实例中,bin文件是一个目录文件,属主和属组都为root。
属主有可读、可写、可执行的权限(rwx);
与属主同组的其他用户有可读和可执行的权限(r-x);
其他用户也有可读和可执行的权限(r-x)。

Linux 基础命令

Linux中有许多常用命令,在学习文件操作之前,需要熟悉一些很基础的命令,这些命令在将来的使用中也是必须掌握的。

  1. date 显示日期和时间

    1
    2
    scenery@scenery-PC:~$ date
    2019年 03月 14日 星期四 23:42:35 CST
  2. cal 显示日历

    1
    2
    3
    4
    5
    6
    7
    8
    9
    scenery@scenery-PC:~$ cal
    三月 2019
    日 一 二 三 四 五 六
    1 2
    3 4 5 6 7 8 9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    31
  3. bc 简单计算器
    如需计算浮点数,需要在bc中执行scale = n

    1
    2
    3
    4
    5
    6
    7
    8
    scenery@scenery-PC:~$ bc
    bc 1.07.1
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    scale = 8
    1/3
    .33333333
  4. man 在线帮助命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    scenery@scenery-PC:~$ man date
    DATE(1) User Commands DATE(1)

    NAME
    date - print or set the system date and time

    SYNOPSIS
    date [OPTION]... [+FORMAT]
    date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
    ...

    man进入帮助文档后,用arrow key翻页,q键退出

  5. sync 将内存中的数据写入磁盘

    一般在关机前执行此命令,系统终端无提示

  6. shutdown 关机

    需要加入时间参数 如:shutdown now

  7. pwd 显示当前所在目录

    1
    2
    scenery@scenery-PC:~$ pwd
    /home/scenery
  8. ls 显示目录或文件
    用参数 -l 可以显示详细信息

    1
    2
    3
    4
    5
    6
    7
    scenery@scenery-PC:~$ ls /bin -l
    总用量 12480
    -rwxr-xr-x 1 root root 1113504 4月 5 2018 bash
    -rwxr-xr-x 1 root root 748968 8月 29 2018 brltty
    -rwxr-xr-x 1 root root 34888 1月 30 2017 bunzip2
    -rwxr-xr-x 1 root root 2062296 1月 18 02:16 busybox
    ...
  9. 重要的几个热键

    • [Tab] — 具有命令补全功能
    • [Ctrl]+c — 让当前的程序『停掉』
    • [Ctrl]+d — 通常代表着键盘输入结束(End Of File, EOF)另外,也可以用来取代exit
  10. clear 清空当前终端屏幕显示

文件属性操作

  1. chgrp 更改文件属组
    语法:
    chgrp [-R] 属组名文件名
    参数选项
    -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

    1
    2
    chgrp staff /u            将 /u 的属组更改为"staff"
    chgrp -hR staff /u 将 /u 及其子目录下所有文件的属组更改为"staff"
  2. chown 更改文件属主,也可以同时更改文件属组
    语法:
    chown [–R] 属主名 文件名
    chown [-R] 属主名:属组名 文件名

    进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@www ~] cd ~
    [root@www ~]# chown bin install.log
    [root@www ~]# ls -l
    -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
    ```

    将install.log的拥有者与群组改回为root:
    ``` bash
    [root@www ~]# chown root:root install.log
    [root@www ~]# ls -l
    -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
  3. chmod 更改文件9个属性

    Linux文件属性有两种设置方法,一种是数字,一种是符号。
    Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

    我们可以使用数字来代表各个权限,各权限的分数对照表如下:

    • r:4
    • w:2
    • x:1

    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的.例如当权限为: [-rwxrwx—] 分数则是:
    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= — = 0+0+0 = 0

    所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

    chmod [-R] xyz 文件或目录
    选项与参数:
    xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
    -R : 进行递归(recursive)的持续变更,亦即连同此目录下的所有文件都会变更

    如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

    1
    2
    3
    4
    5
    [root@www ~]# ls -al .bashrc
    -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
    [root@www ~]# chmod 777 .bashrc
    [root@www ~]# ls -al .bashrc
    -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc

    用符号类型改变文件权限
    |chmod|身份|变更|权限|文件/目录|
    |:-:|:-:|:-:|:-:|:-:|
    |chmod|user group other all |+ - = |r w x |test.log|
    举例:chmod u=rwx,g=rx,o=r

    1
    2
    3
    4
    5
    6
    > [root@www ~]# ls -al .bashrc
    > -rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
    > [root@www ~]# chmod a+w .bashrc
    > [root@www ~]# ls -al .bashrc
    > -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
    >