寒假没事在家学了学Linux,学完后总感觉有些东西记不住,就写些东西来巩固下知识,互相学习。
关于Linux的安装
推荐一个微信公众号:软件安装管家
里面有各种常用学习软件的安装及安装教程,关键是:免费!
关于远程连接工具shell的安装
https://pan.baidu.com/s/14UU0mIHSjVhHrdw6jvGnDw
提取码:9xrp
下面开始正题,一般我们在Linux用ls -l命令查看文件或目录时,通常会显示如下:
各字段含义如下
- 文件权限类型
- 链接数
- 文件拥有者
- 文件所属组
- 文件大小
- 文件最后修改时间
- 文件名
今天主要说一下关于文件权限
权限的类型
文件类型权限主要有十个字符。第一个主要是说明这是个文件(-)、目录(d)还是链接文件(l)。第2到4为文件拥有者权限,5到7为用户组权限,8到10为除文件拥有者和用户组外的其他人的权限(先搞明白前4个)。
r | w | x | - | s |
---|---|---|---|---|
可读 | 可写 | 可执行 | 没有权限 | SUID/SGID/SBIT |
- 权限对于文件的意义
r:可以查看该文件的内容,比如查看文本内容
w:可以修改文件内容(但不是删除文件)
x: 该文件可被执行 - 权限对于目录的意义
r:可以查询该目录下的文件名数据(使用 ls 目录名)
w:删除或建立文件或目录;更改文件或目录名;移动目录内的文件、目录
x:可以进入该目录
比如,你想通过cd命令进入某个目录,对目录至少要有x权限,若还想查看目录内的文件或目录,则要有此目录的r权限。查看目录内的文件内容,目录要有x权限,文件要有r权限。若想要修改目录内的文件内容,目录有x权限,文件有r w权限。想要在目录建立文件,则对此目录要有x w权限。注意,这些权限对于root用户来说,均无效。
更改文件权限
- chgrp:修改文件所属用户组
chgrp [-R] 要更改到的用户组 文件或目录名 #-R的意思是将此目录下的所有文件和子目录的用户组都进行更改,[]意思是可选
- chown:修改文件拥有者
chown [-R] 账号名称 文件或目录名
chown [-R] 账号名称:用户组名称 文件或目录名 #可同时修改用户组(:为英文下的)
- chmod:修改文件权限(重要)
数字类型修改:我们用数字来代表各个权限,每种身份是各权限的累加。比如文件拥有者对此文件的权限为rwx,则对应数字权限为4+2+1=7。
r | w | x |
---|---|---|
4 | 2 | 1 |
chmod [-R] 三个数字 文件或目录名 #第一个数字代表文件拥有者,第二个为用户组,第三个为其他人
符号类型修改
chmod [ugoa] [+-=] [rwx] 文件或目录名
u | g | o | a | + | - | = |
---|---|---|---|---|---|---|
文件拥有者 | 用户组 | 其他人 | 三者都有 | 加入 | 移除 | 设置 |
比如我要用户组加上x这个权限,则chmod g+x 文件名
SUID SGID SIBT
有些文件权限上可能会出现s,比如/usr/bin/passwd
-
SUID 文件拥有者的x权限变成了s(此权限只用于文件,不用于目录)
只有可执行的二进制程序才能设置该权限,同时执行者对该程序有x权限(比如你是该程序用户组用户,用户组用户有x这个权限),执行者执行该程序过程中具有该程序拥有者的权限(有点像奥特曼变身,变身后权限强大)。 -
SGID 用户组的x权限变成了s(可分别用于文件和目录)
对于文件:只有二进制程序才有用,同时执行者对该程序有x权限,执行程序过程中有用户组权限
对于目录:用户对此目录有r和x权限,用户在此目录下的用户组暂为该目录的用户组,若用户在此目录下有w权限,则所建立的文件用户组均为此目录的用户组。
3.SBIT 其他人的x权限变成了t(只用于目录)
一个目录若有SBIT权限,则一个用户在此目录下建立的文件或目录(该用户对此目录有x和w权限)只有自己和root能够删除。
关于SUID/SGID/SBIT权限的设置
在此前设置权限的三个数字前加一个数字。
SUID | SGID | SBIT |
---|---|---|
4 | 2 | 1 |
例如:将某个文件加上SUID权限
chmod 4755 文件名
文件的隐藏属性
只要是两个命令,一个是配置文件隐藏属性的chattr,另一个是查看文件隐藏属性的lsattr。
- chattr
chattr [+-=] [ai] 文件或目录名
a:设置a之后,该文件只能增加数据,不能删除也不能修改数据。对于目录而言,则是只能建立和修改文件或子目录,但不能删除。这个权限只有root可设置(可设置你的日志文件,防止其被黑客删除)。
i:设置i之后,该文件不能删除、改名、设置链接也无法写入或新增数据。对于目录则是不允许建立和删除文件,可对文件数据进行修改。只有root可设置(对于系统安全很有用)
2.lsattr
lsattr [-adR] 文件或目录名
a:将隐藏文件的属性也显示出来
d:若查询的是目录,仅显示目录本身的属性
R:连同子目录一并显示
umask
但我们新建一个目录或文件时,系统会给其赋予默认权限,其与umask有关。命令行直接输入umask则可查看umask默认值,一般为0022。若想要修改umask,则在其后面加数字即可。
可能你会奇怪,新建后的文件权限不是0022啊,其实umask的数字指的是该默认值需要减掉的权限。文件的默认权限为0666(文件默认没有执行权限),减掉0022,所以新建文件的权限为0644。同理得目录:0777-0022=0755。