Linux文件权限
1. 使用者与群组 User & Group
- 文件拥有着owner
- 群组group
- 其他人other
三个重要的文件
在linux系统中,默认所有系统账号与一般使用者、root的相关信息都记录在**/etc/passwd
**文件。
密码则记录在**/etc/shadow
**文件下。
所有的群组名称都记录在**/etc/group
**内。
2. 文件属性
通过ls -al
命令可以以list形式列出所有隐藏文件和详情。
1. 第一栏为文件类型与权限
-rwxrwxrwx
:总共10个字符。可以作如下拆分:[-][rwx][rwx][rwx]
- 第一个字符
[-]
表示文件类型。
‘d’
->目录; ‘-’
->文件;'l'
->链接文件(link file);'b'
->可随机存取设备;'c'
->鼠标键盘等串口设备(一次性读取设备)。
- 后面9个字符每三个
[rwx]
一组。
其中,[r]
可读,[w]
可写,[x]
可执行。
第一组[rwx]
为owner权限,第二组[rwx]
为group权限,第三组[rwx]
为other权限
2. 第二栏为链接到此节点的文件数量
3. 第三栏为该文件/目录的owner账号
4. 第四栏为该文件的所属群组group
5. 第五栏为文件容量,单位Bytes
6. 第六栏为文件创建日期/最近修改日期
显示完整的时间: ls -l --full-time
若出现中文乱码,可使用export LC ALL=en US.utf8
修改语系。
要使系统默认语系变成英文,修改系统配置文件/etc/locale.conf
,将LANG
变量变成上面内容。
7. 第七栏为文件名
3. 改变文件属性和权限
chgrp
: change group----改变文件所属群组chown
: change owner----改变文件拥有者chmod
: 改变文件的权限
1. chgrp
用法:chgrp [group] [filename]
也可以增加[-r]
指令,进行递回recursive,表示同此目录下所有文件
chgrp [-r] [group] [filename]
2. chown
用法:
chown [ownername] [filename]
chown [-r] [ownername] [filename]
chown [-r] [ownername:groupname] [filename]
chown user.group file #只适用于不带.的名称
#eg
chown root:root initial-setup-ks.cfg
使用者必须是已经存在系统即
/etc/passwd
文件中的账号chown也能单修改所属群组
chown .group initial-setup-ks.cfg
cp
复制文件会连同权限属性一起copy
3. chmod
改变文件权限,有两种使用方法。
方法一:数字类型改变文件权限
chmod [-r] xyz file
#xyz 数字1~7
# -r 进行递回
#eg
chmod 777 .bashrc
Linux文件有9个基本权限,分别owner、group、others三个身份的三个权限:read、write、execute
每个身份的三个权限组成三位二进制,比如xyz
为 rwx
时表示数字7,代表文件可读可写可执行。xyz
为r--
表示数字4,代表文件只读。
三个身份因此会有三个数字
方法二:符号类型改变文件权限
u -> user, g -> group, o -> others, a -> all
chmod [ugoa][=+-][rwx] [filename]
#user权限为rwx可读可写可执行,group和other权限为r-x可读可执行
chmod u=rwx,go=rx .bashrc
#给all所有身份添加w可写权限
chmod a+w .bashrc
#给all所有身份减少x可执行权限
chmod a-x .bashrc
目录与文件权限意义
内容 | r | w | x | |
---|---|---|---|---|
文件 | 详细数据data | 读到文件内容 | 修改文件内容 | 执行文件内容 |
目录 | 文件名列表 | 读到文件名 | 修改文件名 | 进入该目录的权限(key) |
eg. .ssh
目录权限为drwxr--r--
,则当系统的others账号仅具有read权限,可以查询此目录下的文件名列表:ls -l .ssh
,但是该目录下的文件的属性和权限都无法查看,相当于只能读取目录中的文件类型和名字。并且由于others没有x权限,因此也无法切换到该目录下,执行cd .ssh
会提示权限不够。
PS:[w]
write权限非常重要!一般开放给其他用户的文件和目录权限是[r-x]
,不会给[w]权限.