menu Chancel's blog
rss_feed
Chancel's blog
有善始者实繁,能克终者盖寡。

2分钟了解Linux文件权限

作者:Chancel Yang, 创建:2018-11-16, 字数:1821, 已阅:678, 最后更新:2024-04-25

Linux中权限是非常重要的一个概念,在linux中每个文件都有文件的所有者、文件所在组以及其它组的权限细分

以这份输出为例子

Bash
chancel@R7-4750G ~$ ll -a                                                                   
total 60K
drwxr-x--- 37 chancel chancel 4.0K 12月 15 14:48 .
drwxr-xr-x  3 root    root    4.0K  9月 20 14:05 ..
-rw-------  1 chancel chancel 1.7K  9月 20 14:32 .bash_history
-rw-r--r--  1 chancel chancel  220  9月 20 14:05 .bash_logout
-rw-r--r--  1 chancel chancel 3.7K  9月 20 14:05 .bashrc
-rw-------  1 chancel chancel 105K 12月 15 14:48 .zsh_history
-rw-r--r--  1 chancel chancel 4.1K 11月 15 16:29 .zshrc
-rw-r--r--  1 chancel chancel 4.1K 11月 15 16:29 config.yml
drwxr-xr-x  2 chancel chancel 4.0K  9月 20 14:08 Desktop
drwxr-xr-x  3 chancel chancel 4.0K 10月  9 17:39 Documents
drwxr-xr-x 15 chancel chancel  12K 12月 14 16:58 Downloads
drwxr-xr-x  2 chancel chancel 4.0K  9月 20 14:08 Music
drwxr-xr-x  2 chancel chancel 4.0K  9月 20 15:19 Pictures
drwxr-xr-x  2 chancel chancel 4.0K  9月 20 14:08 Public
drwxr-xr-x  2 chancel chancel 4.0K  9月 20 14:08 Templates
drwxr-xr-x  2 chancel chancel 4.0K  9月 20 14:08 Videos

说明

  • drwxr-xr-x:首字母表示是否是文件夹,后面的rwx表示读取、写入、执行3个权限,每3个1组,一共3组,从左往右3组分别代表文件所有者的权限、文件所在组的权限、其他组的读取写入以及执行权限的情况
  • chancel chancel:表示所有者是chancel,所在组也是chancel

举例

  • config.yml文件是-rw-------,表示他不是文件夹是文件,文件的所有者是chancelchancel用户对这个文件有读和写但没有执行权限,文件所在组chancel组内的用户没有读取写入执行权限,其他用户也是没有读取写入执行的权限

接下来是如何更改一个文件的权限,以文件config.yml为例

Bash
# 在Linux中经常使用数字`421`来替代`rwx`
# 第1个数字7代表所有者的权限是可读可写可执行(7=4+2+1)
# 第2个数字5代表所在组是可读可执行(5=4+1)
chmod 755 config.yml
# 常规但不常见的写法,不好写,u表示所有者的权限,g代表所在组的权限,o代表other用户
chmod u=rwx,g=rx,o=rx config.yml
# 简写,表示所有者的权限排除执行权限,所在组追加写入权限
chmod u-x,g+w config.yml
# 炫耀写法,a代表all,r代表读取权限,即所有人追加读取的写法
chmod a+r config.yml

在实际应用中我们也经常需要更改文件的所有者、所在组

Bash
chown root config.yml
chgrp root config.yml

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]