09. Linux 介绍与工具使用(六:文件权限与权限设置)

2021-12-17 09:29:40 浏览数 (2)

文件权限介绍

当我们在目录下,使用ls横行输出文件信息,输出结果的第一行就是描述文件和目录权限的编码:

代码语言:javascript复制
mugpengdembp:tmp mugpeng$ ls -l |head -10
total 264
-rw-r--r--  1 root     wheel       0 Jun  9 10:26 AlTest1.err
-rw-r--r--  1 root     wheel       0 Jun  9 10:26 AlTest1.out
prw-rw-rw-  1 root     wheel       0 Jun  2 13:36 F7C71944B49B446081C0603DE90E4855_IN
prw-rw-rw-  1 root     wheel       0 Jun  2 13:36 F7C71944B49B446081C0603DE90E4855_OUT
-rw-rw-rw-  1 mugpeng  wheel  121278 Jun  9 10:52 adobegc.log
drwx------  3 mugpeng  wheel      96 Jun  2 13:36 com.apple.launchd.CEG3EUNUCk
drwx------  3 mugpeng  wheel      96 Jun  2 13:36 com.apple.launchd.lp7oclZNYU
drwxr-xr-x@ 2 mugpeng  wheel      64 Jun  7 19:27 com.google.Keystone
-rw-r--r--  1 root     wheel     106 Jun  9 11:10 com.sangfor.ca.sha

文件的权限标志分为三种:

代码语言:javascript复制
r 表示对象是可读的
w 表示对象是可写的
x 表示对象是可执行的
若没有某种权限,则会在该权限位置出现单破折号。

它们分别对应八进制的数字:

代码语言:javascript复制
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

每个文件对应三种级别的访问权限:

代码语言:javascript复制
对象的属主
对象的属组
系统其他用户

三组级别的权限以及开头的文件类型,共10个字母,共同构成了文件类型和权限符号。

因此,你大概知道为什么进不了或者操作不了其他人或者老板的目录了吗?万一你rm -rf 了呢?

chmod

我们可以使用chmod 为某个文件或文件夹设置文件的权限。有两种修改的方式,一种是直接通过八进制数字修改,如将文件a 修改为777,全部级别可读、可写、可执行:

代码语言:javascript复制
$ ls -lh a | cut -f1 -d' '
-rw-rw----

# 修改一下
$ chmod 777 a
root 14:27:16 ~
$ ls -lh a | cut -f1 -d' '
-rwxrwxrwx

我们还可以通过-R 参数对所有该文件夹内的所有文件及子文件夹中的文件修改权限,我们可以试着用root 用户对根目录修改,即修改所有文件的默认创建权限,不要重复我现在的操作

代码语言:javascript复制
chmod -R 770 /

chmod: changing permissions of ‘/proc/26108/timers’: Operation not permitted
chmod: changing permissions of ‘/proc/26108/patch_state’: Operation not permitted
        
ssh root@81.70.83.106
ssh_exchange_identification: read: Connection reset by peer        

好家伙,直接并行把服务器跑崩了。

还是简单的在用户的home 目录设置:

代码语言:javascript复制
$ ls -lh | cut -f1 -d' '
total
-rw-r--r--
-rw-rw----

$ chmod -R 770 /home

$ ls -lh | cut -f1 -d' '
total
-rwxrwx---
-rwxrwx---

所有文件都被修改了。

另外,还可以使用符号模式下的安全设置,形如:chmod [ugoa] [ -=] [rwxXstugo]

其中包括:

代码语言:javascript复制
u 表示用户
g 表示组
o 代表其他
a 代表ugo 全部
  表示增加权限
- 表示移除权限
= 表示将现有权限修改为后面新值
X 表示若对象是目录或已有执行权限,则赋予执行权限
s 表示运行时重新设置UID 或GID
t 表示保留文件或目录

比如:

代码语言:javascript复制
-rwxrw----  1 mugpeng  wheel   0 Jun  9 11:41 test3
$ chmod o r test3
-rwxrw-r--  1 mugpeng  wheel   0 Jun  9 11:41 test3

umask

我们可以通过umask 从用户的全权限中减去对应的数字(创建掩码),来控制不想授予权限的文件。比如开始的文件权限本来为666,在umask 为022下,需要进行减法,因此它的实际权限为644。

可以直接查看当前umask:

代码语言:javascript复制
$ umask
0002

设置umask 后,后面所有创建的文件就将自动变为设置后的结果。

0 人点赞