6. Linux 文件权限

[TOC]

Unix 系统的特性:多任务、多用户系统。

文件读取、写入和执行

对于文件和目录的访问权限是根据读访问,写访问,和执行访问来定义的。

文件属性

1. 第一列10个字符——文件的属性

列表的前十个字符是文件的属性,这十个字符的第一个字符表明文件类型。Linux 中一共有 7 种文件类型:

属性 文件类型
- 普通文件
d 目录文件
l 符号链接,注意对于符号链接文件,剩余的文件属性总是 "rwxrwxrwx",而且都是虚拟值。真正的文件属性是指符号链接所指向的文件的属性。
c 字符设备文件。这种文件类型是指按照字节流,来处理数据的设备。 比如说终端机,或者调制解调器。
b 块设备文件。这种文件类型是指按照数据块,来处理数据的设备,例如一个硬盘,或者 CD-ROM 盘。
s 本地域套接字文件(socket),用于进程间通信。
p 有名管道
  • 剩下的九个字符,叫做文件模式,代表着文件所有者,文件组所有者,和其他人的读,写,执行权限。
  • 后边的 9 位,每三个为一组。均为 rwx 三个参数的组合。其中 r 代表可读,w 代表可写,x 代表可执行。
    • 前三位:所属主(user,即文件的拥有者)的权限;
    • 中间三位:所属组(group,即该文件所属主所在的一个组)的权限;
    • 最后三位:其他非本群组(others)的权限;
  • 对于一个目录来讲,打开这个目录即为执行这个目录,所以任何一个目录必须要有 x 权限才能打开并查看该目录。

2. 第 2 列——连接占用的节点(inode)

若为目录时,通常与该目录下还有多少子目录有关系,关于连接(link)在以后章节详细介绍。

3. 第 3 列——该文件的所属主

4. 第 4 列——该文件的所属组

5. 第 5 列——该文件的大小

6. 第 6、7、8 列

该文件的创建日期或者最近的修改日期,分别为月份日期以及时间。

7. 第 9 列——文件名

如果前面有一个. 则表示该文件为隐藏文件。

chmod 更改文件模式

  • 更改文件或目录的模式(权限),可以利用 chmod 命令。
  • 只有文件的所有者或者超级用户才能更改文件或目录的模式。
  • chmod 命令支持两种不同的方法来改变文件模式:八进制数字表示法、符号表示法。

1⃣️ 八进制表示法

  • 使用八进制数字来设置所期望的权限模式。
  • 使用用八进制表示法来表示3个二进制数非常有优势。
  • 通过使用 3 个八进制数字,可以设置文件所有者,用户组,和其他人的权限
Octal Binary File Mode
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

语法:chmod [-R] xyz 文件名,(xyz表示数字,777)

r=4,w=2,x=1,-=0,默认目录权限755(drwxr-xr-x)、默认文件权限644(-rw-r--r--)。

权限符 读取(r) 写入(w) 执行(x)
八进制 4 2 1

如果你创建了一个目录,而该目录不想让其他人看到内容,则只需设置成 rwxr----- (740) 即可。

# 修改私钥文件权限为只读属性
chmod 400 ~/.ssh/mykeypair.pem

2⃣️ 符号表示法

  • 符号表示法分为三部分:更改会影响谁,要执行哪个操作,要设置哪种权限。
  • 通过字符 “u”,“g”,“o”,and “a” 的组合来指定要影响的对象。
  • 符号表示法的优点:允许你设置文件模式的单个组成部分的属性,而没有影响其他的部分。
字符 描述
u user,文件或目录的所有者。
g group,用户组。
o others,其他所有的人。
a all,是 “u”,“g”,和 “o” 三者的联合。

如果没有指定字符,则假定使用 “all”。执行的操作可能是一个 “+” 字符,表示加上一个权限, 一个 “-”,表示删掉一个权限,或者是一个 “=”,表示只有指定的权限可用,其它所有的权限被删除。

chmod 符号表示法示例 作用
u+x 为文件所有者添加可执行权限。
u-x 删除文件所有者的可执行权限。
+x 为文件所有者,用户组,和其他所有人添加可执行权限。等价于 a+x。
o-rw 除了文件所有者和用户组,删除其他人的读权限和写权限。
go=rw 给群组的主人和任意文件拥有者的人读写权限。如果群组的主人或全局之前已经有了执行的权限,他们将被移除。
u+x,go=rw 给文件拥有者执行权限并给组和其他人读和执行的权限。多种设定可以用逗号分开。

语法:用户组+/-权限 、 用户组=权限、用户组1=用户组2

# 用户组+/-权限 
$ chmod u+x days    # 增加属主对文件的执行权限
$ chmod a-x days    # 删除所有人对文件的执行权限

# 用户组=权限
$ chmod ug=rw,o=r days    # 赋予属主和属组的读取/写入权限,其他人只有读取权限

# 用户组1=用户组2
$ chmod o=u days   # 设置其他人的权限与属主权限完全相同

umask 设置默认的文件权限

  • umask 命令使用八进制表示法来表达:从文件模式属性中删除一个位掩码
  • umask 命令设置的掩码值只能在当前 shell 会话中生效,若当前 shell 会话结束后,则必须重新设置。

检查创建文件的默认权限掩码:

# 默认以八进制形式显示当前的掩码
$ umask
0022

# 以字符形式显示当前的掩码
$ umask -S
u=rwx,g=rx,o=rx

$ touch test01.txt
-rw-r--r--  1 root    root         0 Jan 14 14:18 test01.txt

掩码 0022 的含义:

umask 的过程 示例 示例 示例 示例
初始文件模式 --- rw- rw- rw-
掩码(0022) 000 000 010 010
结果(rw-r--r--) --- rw- r-- r--

解读:掩码的二进制形式中,出现数字 1 的位置,相应地关掉该位置的文件模式权限。

chattr 修改文件的特殊属性

lsattr 列出文件/目录的特殊属性

语法:lsattr -[aR] [文件/目录名]

参数 含义
-a 类似与 ls 的 -a 选项,即连同隐藏文件一同列出;
-R 连同子目录的数据一同列出

su 以另一个用户的身份来运行 shell

语法:su [-[l]] [user]

  • 如果包含 "-l" 选项,加载此用户的 shell 环境,并且工作目录会更改到这个用户的主目录。
  • 如果不指定用户,那么就假定是超级用户。
  • 选项 "-l" 可以缩写为 "-"

⚠️ Ubuntu Linux 的限制非常严格,必须使用 sodu -s 来获得 root 访问权。

$ sudo -s    # 将自己提升为root用户 (💡💡💡Ubuntu Linux 系统💡💡💡)
$ su         # 同上
$ su -       # 同上
$ su alice   # 切换到 alice 账户

$ su -c 'command' # 只执行单个命令

$ exit       #回到先前的用户状态

sudo 以另一个用户的身份来执行命令

  • 管理员能够配置 sudo 命令,从而允许一个普通用户以不同的身份(通常是超级用户),通过一种非常可控的方式来执行命令。
  • sudo 命令不要求超级用户的密码。使用 sudo 命令时,用户使用他/她自己的密码来认证。
  • susudo 之间的一个重要区别是:sudo 不会重新启动一个 shell,也不会加载另一个用户的 shell 运行环境。

查看 sudo 命令可以授予哪些权限:

$ sudo -l
Matching Defaults entries for root on localhost:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User root may run the following commands on localhost:
    (ALL : ALL) ALL

需要 root 预先配置 /etc/sudoers

yum install -y sudo    # 安装 visudo 命令
visudo                 # 使用 visudo 命令编辑 sudo 配置文件

# root 用户可以使用 sudo 在任何机器上(第一个ALL)以任何用户身份(第二个ALL)执行任何命令(第三个ALL)
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL    # 所属组权限设置,wheel 组的所有用户都拥有 sudo 权利
test ALL=(ALL) ALL      # 所属主权限设置,test 用户拥有 sudo 权利

sudo 配置文件 / etc/sudoers 详解及实战用法

sudoers 的深入介绍与用户权限控制

chown 更改文件所有者和用户组

chown 命令被用来更改文件或目录的所有者和用户组,使用这个命令需要超级用户权限。
格式:chown [owner][:[group]] file...
参数:-R 改变一个目录及其下所有文件(和子目录)的所有权设置。

示例 结果
chown bob 把文件所有者从当前属主更改为用户 bob。
chown bob:users 把文件所有者改为用户 bob,文件用户组改为用户组 users。
chown :admins 把文件用户组改为组 admins,文件所有者不变。⚠️ 注意 :不能省略
chown bob: 文件所有者改为用户 bob,文件用户组改为,用户 bob 登录系统时,所属的用户组。

chgrp 更改文件组所有权

在旧版 Unix 系统中,chown 命令只能更改文件所有权,而不是用户组所有权。为了达到目的, 使用一个独立的命令,chgrp 来完成。

语法:chgrp [组名] [文件名]

参数:-R :改变一个目录及其下所有文件(和子目录)的所有权设置。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容