Linux 最优秀的地方之一就在于他的多用户多任务环境。而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要了。
Linux 一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有read/write/execute 等权限。
那么, 在 Linux 底下这么多的目录/文件,到底每个目录/文件代表什么意义呢?底下就来一一介绍呢!
5.1 使用者与群组
1. 文件拥有者
各自拥有的权利
一个测试例子(了解即可)
在root用户下通过
useradd -d /home/test test
创建了一个test用户,指定了家目录是/home/test。然后使用test用户建立一个文件
touch file.txt
那么这个file.txt是属于test用户的,如果我在root用户下再建立一个jifen用户,指定家目录是/home/jifen
[root@VM-4-7-centos ~]# useradd -d /home/jifen jifen
那么jifen这个用户就没有权限查看我的file.txt文件。实质上根本没有权限访问 /home/test目录。
[jifen@VM-4-7-centos ~]$ ll /home/test/
ls: cannot open directory /home/test/: Permission denied
2. 群组概念
共同拥有的权利
3. 其他人
其实就是没啥交集的一个用户了
** Linux 系统里面账号、密码、群组信息的存储文件位置**
Linux 系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,都是记录在/etc/passwd 这个文件内的。
至于个人的密码则是记录在/etc/shadow 这个文件下。
此外,Linux 所有的组名都纪录在/etc/group 内!
不要随便删除这三个文件啊!
5.2 Linux 文件权限概念
5.2.1 Linux 文件属性
[权限][连接][拥有者][群组][文件容量][修改日期][文件名/文件夹名]
第一个字符代表这个文件是『目录、文件或链接文件等等』:
o 当为[ d ]则是目录,例如上表档名为『.config』的那一行;
o 当为[ - ]则是文件,例如上表档名为『initial-setup-ks.cfg』那一行;
o 若是[ l ]则表示为连结档(link file);
o 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
o 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
o 第一组为『文件拥有者可具备的权限』,
o 第二组为『加入此群组之账号的权限』;
o 第三组为『非本人且没有加入本群组之其他账号的权限』。
第五栏为这个文件的容量大小,默认单位为 bytes;
如果想要显示完整的时间格式,使用
[test@VM-4-7-centos ~]$ ls -l --full-time
total 8
-rwxr-xr-x 1 test test 601 2021-01-19 14:12:35.915116966 +0800 loadods.pl
drwxrwxr-x 5 test test 4096 2021-01-20 09:43:25.375335422 +0800 soft
[test@VM-4-7-centos ~]$
语言修改:中文并没有办法在纯文本的终端机模式中正确的显示,
所以此栏会变成乱码。 那你就得要使用『export LC_ALL=en_US.utf8』来修改语系
5.2.2 如何改变文件属性与权限(经常使用)
chown :改变文件拥有者,或者群组
chmod :改变文件的权限
例如:把test用户下的loadods.pl文件的所属群组从test改为root
[root@VM-4-7-centos ~]# ll /home/test/loadods.pl
-rwxr-xr-x 1 test test 601 Jan 19 14:12 /home/test/loadods.pl
[root@VM-4-7-centos ~]#
[root@VM-4-7-centos ~]#
[root@VM-4-7-centos ~]# chown test:root /home/test/loadods.pl
[root@VM-4-7-centos ~]#
[root@VM-4-7-centos ~]# ll /home/test/loadods.pl
-rwxr-xr-x 1 test root 601 Jan 19 14:12 /home/test/loadods.pl
[root@VM-4-7-centos ~]#
改变权限, chmod
1. 数字类型改变文件权限
Linux 文件的身份: owner/group/others 三种身份
文件权限 read/write/execute 权限
文件的权限字符为:『-rwxrwxrwx』
各权限的分数对照表如下:
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
2. 符号类型改变文件权限
u, g, o 来代表三种身份的权限!
a 则代表 all 亦即全部的身份!
读、写、执行的权限就可以写成 r, w, x
利用『chmod a+x filename』 ,就可以让该程序拥有执行的权限了
例如:给test.txt文件赋予所有用户都可以写的权限
[test@VM-4-7-centos lianxi]$ ll
total 0
-rw-rw-r-- 1 test test 0 Jan 20 18:24 test.txt
[test@VM-4-7-centos lianxi]$
[test@VM-4-7-centos lianxi]$
[test@VM-4-7-centos lianxi]$
[test@VM-4-7-centos lianxi]$ chmod a+x test.txt
[test@VM-4-7-centos lianxi]$ ll
total 0
-rwxrwxr-x 1 test test 0 Jan 20 18:24 test.txt
5.2.3 目录与文件之权限意义:
权限对文件的重要性
r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
x (eXecute):该文件具有可以被系统执行的权限。
权限对目录的重要性
目录主要的内容在记录文件名列表
r (read contents in directory):,表示你可以查询该目录下的文件名数据
w (write):可以对该目录,以及目录下的文件CURD
x (eXecute): 目录的 x 代表的是用户能否进入该目录成为工作目录(即可cd 进入该目录,执行比如start.sh等文件)
5.3 Linux 目录配置
最上层(/)及次层(/usr, /var)的目录内容应该要放置的文件或目录数据
可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据
不可分享的:自己机器上面运作的装置文件等, 仅与自身机器有关
/ (root, 根目录):与开机系统有关;
/usr (unix software resource):与软件安装/执行有关;
/var (variable):与系统运作过程有关。
自己安装的额外软件,习惯放置在/usr/local
/home 这是系统默认的用户家目录,比如test用户,默认的家目录是:/home/test
必须存在的目录
可以存在的目录
/var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件。
在其他次目录层级内,就可以随开发者自行来配置
5.3.2 目录树(directory tree)(了解)
5.3.3 绝对路径与相对路径
绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc; 相对路径:是以『你当前所在路径的相对位置』来表示的。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法
例如:当前在/home/test/soft路径下,想去进入/home/test/data_option路径写法:
cd ../data_option/
其中: 要回到上一层 (../)
[test@VM-4-7-centos soft]$
[test@VM-4-7-centos soft]$ pwd
/home/test/soft
[test@VM-4-7-centos soft]$
[test@VM-4-7-centos soft]$ cd ../
.cache/ .config/ data_option/ lianxi/ soft/ .ssh/
[test@VM-4-7-centos soft]$ cd ../data_option/
[test@VM-4-7-centos data_option]$ pwd
/home/test/data_option
[test@VM-4-7-centos data_option]$
说明:
. :代表当前的目录,也可以使用 ./ 来表示;
.. :代表上一层目录,也可以 ../ 来代表。
《本小节完》