Linux 文件
Linux 文件的基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
使用ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:
1 | scenery@scenery-PC:~$ ls / -l |
在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
5scenery@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中有许多常用命令,在学习文件操作之前,需要熟悉一些很基础的命令,这些命令在将来的使用中也是必须掌握的。
date显示日期和时间1
2scenery@scenery-PC:~$ date
2019年 03月 14日 星期四 23:42:35 CSTcal显示日历1
2
3
4
5
6
7
8
9scenery@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
31bc简单计算器
如需计算浮点数,需要在bc中执行scale = n1
2
3
4
5
6
7
8scenery@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
.33333333man在线帮助命令1
2
3
4
5
6
7
8
9
10scenery@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键退出sync将内存中的数据写入磁盘一般在关机前执行此命令,系统终端无提示
shutdown关机需要加入时间参数 如:
shutdown nowpwd显示当前所在目录1
2scenery@scenery-PC:~$ pwd
/home/sceneryls显示目录或文件
用参数 -l 可以显示详细信息1
2
3
4
5
6
7scenery@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
...重要的几个热键
- [Tab] — 具有命令补全功能
- [Ctrl]+c — 让当前的程序『停掉』
- [Ctrl]+d — 通常代表着键盘输入结束(End Of File, EOF)另外,也可以用来取代exit
clear清空当前终端屏幕显示
文件属性操作
chgrp更改文件属组
语法:chgrp [-R] 属组名文件名
参数选项-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。1
2chgrp staff /u 将 /u 的属组更改为"staff"。
chgrp -hR staff /u 将 /u 及其子目录下所有文件的属组更改为"staff"。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.logchmod更改文件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=r1
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
>