文章目录
文件权限属性
其中r代表可读,w代表可写,x代表可执行。文件属性中从第二个开始,每三个属性为一组,第一组指的是文件拥有者(user)的权限,第二组指的是拥有者所在群组(group)的权限,第三组指的是其他人(other)的权限。
文件权限 | 描述 |
---|---|
r | 对于目录,列出目录项 |
w | 对于目录,操作目录,修改删除移动等操作 |
x | 对于目录,可以进入目录 |
改变文件权限的命令
chgrp:改变文件所属群组
[root@linux ~]# chgrp [-R] dirname/filename ...
参数:
-R : 递归目录下的文件,改变整个目录以及目录下文件的所属群组
chown:改变文件所属人
[root@linux ~]# chown [-R] 账号名称 档案或目录
[root@linux ~]# chown [-R] 账号名称:群组名称 档案或目录
参数:
-R : 递归目录下的文件,改变整个目录以及目录下文件的所属人
chmod:改变文件属性、SUID等
- 通过数字类型修改
权限属性 | 对应数值 |
---|---|
r | 4 |
w | 2 |
x | 1 |
rwx -> 4+2+1=7 表示具备可读可写可执行的特点
r_x -> 4+0+1=5 表示具备可读可执行的特点
[root@linux ~]# chmod [-R] xyz 档案或目录
参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 递归目录下的文件,进行修改
- 通过符号类型修改
- u,user
- g,group
- o,other
- a ,all
[root@linux ~]# chmod u=rwx,go=rx .bashrc
文件预设权限:umask
umask命令查看目前用户建立文件或目录时的默认权限。用户创建文件权限时会参照/etc/bashrc文件。
[root@linux ~]# umask
0022
[root@linux ~]# umask -S
u=rwx,g=rx,o=rx
预设文件没有可执行权限,对于目录和文件存在不同:
- 若用户建立的是文件,预设为没有可执行文件,预设属性为-rw-rw-rw-,值为666;
- 若用户建立的是目录,预设属性为drwxrwxrwx,值为777
umask命令的值为0022,第一个数字为特殊权限,后3位为普通权限。022分别表示user,group,other要拿到的权限,user不需要拿到任何属性,group和other需要拿到2(也就是w这个属性)。所以建立属性如下:
- 建立文件的属性,-rw-r–r--,值为644
- 建立目录的属性,drwxr-xr-x,值为755
文件隐藏属性
chattr:设定文档隐藏属性
[root@linux ~]# chattr [+-=][ASacdistu] 档案或目录名称
参数:
+ :增加某一个特殊参数,其它原本存在参数则不动。
- :移除某一个特殊参数,其它原本存在参数则不动。
= :设定一定,且仅有后面接的参数
A :当设定了 A 这个属性时,这个档案(或目录)的存取时间 atime (access)
将不可被修改
S :将数据同步写入磁盘当中
a :当设定 a 之后,这个档案将只能增加数据,而不能删除(仅限root用户)
c :自动的文件压缩,在读取的时候将会自动解压缩
d :当 dump(备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)不具有 dump 功能
i :文件不能被删除、改名、设定连结也无法写入或新增
j :设定 j 属性将会使档案在写入时先记录在
journal 中
s :文件移除出这个硬盘空间
u :与 s 相反的,当使用 u 来设定文件时,则数据内容其实还存在磁盘中
实例:
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# touch att
[root@localhost tmp]# chattr +i att
[root@localhost tmp]# rm att
rm: remove regular empty file `att'? y
rm: cannot remove `att': Operation not permitted
lsattr:显示文件隐藏属性
[root@linux ~]# lsattr [-aR] 档案或目录
参数:
-a :将隐藏文件的属性也列出来
-R :连同子目录的数据也一并列出来
档案特殊权限: SUID/SGID/Sticky Bit
除了rwx,linux还有其他的特殊属性。
[root@localhost ~]# ls -ld /tmp ; ls -l /usr/bin/passwd
drwxrwxrwt. 14 root root 4096 Feb 10 06:20 /tmp
-rwsr-xr-x. 1 root root 30768 Nov 23 2015 /usr/bin/passwd
SUID
Set UID ,简称为 SUID。可以让一般使用者在执行某些程序时,能够暂时拥有这个程序拥有者的权限。
SUID 仅可用在二进制制文件(binary file)上。
SGID
如果 s 的权限是在 group 时,那么就是 Set GID ,简称为 SGID。 SGID 可以用在两个部
分:
• 文件:如果 SGID 是设定在二进制制文件 上面,则不论使用者是谁,在执行该程序的时候, 他的有效群组 (effective group) 将会变成该程序的GID。
• 目录:如果 SGID 是设定在 A 目录上面,则在该 A 目录内所建立的文件或目录的 group ,将会是 此 A 目录的 group
Sticky Bit
Sticky Bit 只对目录起作用。其作用是:在具有SBit 的目录下,使用者若在该目录下具有 w 及 x 的权限, 则当使用者在该目录下建立文件或目录时,只有档案拥有者与 root 才有权力删除。
设置特殊权限
使用chmod命令设置特殊权限
权限属性 | 对应数值 |
---|---|
SUID | 4 |
SGID | 2 |
Sticky Bit | 1 |
[root@linux tmp]# chmod 4755 test; ls -l test
-rwsr-xr-x 1 root root 0 Jul 20 11:27 test
[root@linux tmp]# chmod 6755 test; ls -l test
-rwsr-sr-x 1 root root 0 Jul 20 11:27 test
[root@linux tmp]# chmod 1755 test; ls -l test
-rwxr-xr-t 1 root root 0 Jul 20 11:27 test
[root@linux tmp]# chmod 7666 test; ls -l test
-rwSrwSrwT 1 root root 0 Jul 20 11:27 test