使用者与群组
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35keNpnT3FEVPpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2QTN1MjMzAjMwITNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Linux给使用者、群组、其他人分配了不同的权限
ls -al指令
ls -al
这条指令
表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为『 . 』的文件)
返回了七列:
第一列是文件类型权限
由四部分组成
第一个字符代表了文件类型
符号 | 文件类型 |
---|---|
d | directory 目录 |
- | 文件 |
l | link file 链接文件 |
b | 装置文件里面的可供储存的接口设备(可随机存取装置) |
c | 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置) |
后面九个字符三三一组,
第一组为『文件拥有者可具备的权限』
第二组为『加入此群组之账号的权限』
第三组为『非本人且没有加入本群组之其他账号的权限』
r读w写x可执行
第二栏表示有多少文件链接到这一节点(i-node)
这部分文件系统一章细说
第三栏表示这个文件(或目录)的拥有者账号
第四栏表示这个文件的所属群组
第五栏表示这个文件的容量大小,默认bytes
第六栏表示这个文件的建档日期或最近修改日期
第七栏表示这个文件的档名
例题:
-rw-r–r-- 1 root root 238 Jun 18 17:22 test.txt
这是个文件,拥有者root可以读写,所属群组为root,其他人只能读
-rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai
这是个文件,拥有者test1可以读写执行,所属群组testgroup可以读可以执行不能写,其他人仅能读
drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/
这是个目录,拥有者test1可读写执行,所属群组testgroup可读可执行不能写,其他人虽然有r,但是不能执行,所以不能进入此目录
文件属性和权限
chgrp #改变文件所述群组
chown 改变文件拥有者
chmod 改变文件的权限,SUID,SGID,SBID等等的特性
chgrp
用man指令查看指令详情
option常用-R,将同目录下的所有文件和目录都变成这个群组
例如
chown
同样常用的options为-R
chown bin initial-setup-ks.cfg --修改拥有者为owner
chown root:root initial-setup-ks.cfg --修改拥有者和群组为root
举例说明chgrp和chown的使用场景
如使用cp拷贝了一个文件,想给另一个人,但是复制之后的拥有者和所属群组都不变,此时就需要更改拥有者和群组
cp .bashrc .bashrc_test
ls -al .bashrc*
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Jun 3 00:04 .bashrc_test
chmod
chmod -R 777 d083562
我终于知道之前实习的时候d博发给我的代码是啥意思了…我当时以为7是指7组
实际是rwx=4+2+1=7
r:4 w:2 x:1
xyz设为777就是让这个目录变成所有人都可以读写执行了
也可以使用符号来改变文件权限
chmod u=rwx,go=rx .bashrc ##让.bashrc的user权限为rwx,群组成员和其他人为rx
chmod a+w .bashrc #让所有人都添加写的权限
chmod a-x .bashrc #所有人都去掉执行的权限
Linux目录配置
Linux目录配置的依据–FHS
Filesystem Hierarchy Standard(文件系统层次化标准),主要的目的是希望使用者可以了解到已安装软件通常置于哪个目录下,所以希望使用者都能遵循FHS标准
一些有代表性的目录如下
FHS针对目录树架构仅定义了三层目录,分别是
- /(root,根目录),与开机系统有关
- /usr(unix software resource),与软件安装/执行有关
- /var(variable):与系统运作有关
根目录(/)
根目录内容一览
有一些是必须存在的目录,如
/bin,/boot,/dev,/etc,/lib,/media,/mnt/,opt,/run,/sbin,/srv,/tmp,/usr,/var
有一些是FHS建议可以存在的目录,如
/home./lib< qual >,/root
FHS 针对根目录定义的标准就这么多,但是有许多也是很重要的,如
/lost+found,/proc,/sys
/usr
/usr里面的数据是可分享的与不可变动的(shareable, static)
FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。
因为是所有系统默认的软件(distribution 发布者提供的软件)都会放置到/usr 底下,因此这个目录有点类似 Windows 系统的『C:\Windows\ (当中的一部份) + C:\Program files\』这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。
FHS要求必须有/bin, /lib, /local, /sbin, /share,建议可以存在的目录/games, /include, /libexec ,/qual, /src
/var
如果/usr 是安装时会占用较大硬盘容量的目录,那么/var 就是在系统运作后才会渐渐占用硬盘容量的目录。 因为/var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件等等。
FHS要求必须有存在的目录
/cache, /lib, /lock, /log, /mail, /run, /spool
P.S. Unbuntu与Centos可能还不太一样,没深究
目录树(directory tree)
所有的文件与目录都是由根目录开始的!那是所有目录与文件的源头~ 然后再一个一个的分支下来,有点像是树枝状啊~因此,我们也称这种目录配置方式为:『目录树(directory tree)』
目录树特性
- 目录树的启始点为根目录 (/, root)
- 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的
绝对路径和相对路径
绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc
相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 …/…/home/dmtsai/ 等等。反正开头不是 /
就属于相对路径的写法
.表示当前目录,…表示上一层的目录