linux之文件权限
文件权限管理
rwx含义
-
是指在Linux系统中,文件的权限可读(r)、可写(w)、可执行(x)。
-
文件权限是由三组rwx组成,开头第一位表示文件的类型为文件(-)、目录(d)、链接(l)等形式
rwx的数字概念
r 4
w 2
x 1
-rwxr-xr-x
rwx #属主位
r-x #属组位
r-x #其它位
文件权限数字表示为:755
文件权限修改
# 修改文件的属主属组
chown
[root@m01 ~]# chown usera.usera xiaoshuo.txt
[root@m01 ~]# ll xiaoshuo.txt
-rw-r--r-- 1 usera usera 0 Nov 15 08:59 xiaoshuo.txt
# 递归修改某个目录下所有文件属主属组
参数 -R
# 修改文件权限
chmod
chmod u+rwx file
chmod o-rwx file
chmod u+x file
chmod g-w file
chmod o+x file
chmod o=rwx file
#使用数字进行修改文件权限
chmod 755 file
# 常用文件权限
644 rw-r--r--
755 rwxr-xr-x
600 rw-------
# 默认新建文件是644
[root@m01 ~]# touch 1.txt
[root@m01 ~]# ll 1.txt
-rw-r--r-- 1 root root 0 Nov 15 09:09 1.txt
# 默认新建目录是755
[root@m01 ~]# mkdir doc
[root@m01 ~]# ll -d doc/
drwxr-xr-x 2 root root 6 Nov 15 09:09 doc/
rwx对于文件的作用
# r对于文件的作用:
1.可读
2.不可写 但是可以强制写入
3.不能执行
4.不能删除 因为删除是由目录的权限控制的
# w对于文件的作用:
1.不能查看文件内容
2.不能使用vim方式写入 只能使用echo 追加内容
3.不能执行
# x对于文件的作用:
文件只要x权限,啥也干不了
总结:
1. 1个r对于文件有作用,只读
2. rw对于文件是最高权限可读写
3. r和x对于文件是有执行的权限
4. rwx脚本拥有最高的权限
rwx对于目录的作用
# 1. r权限对于目录的作用:
用户进不去,也看不了
[usera@m01 ~]$ ll -d doc
total 1
dr--rwxr-x 2 usera usera 6 Nov 15 09:21 doc
# 无法进入目录
[usera@m01 ~]$ cd doc/
-bash: cd: doc/: Permission denied
# 无法查看
[usera@m01 ~]$ cat doc/1.txt
cat: doc/1.txt: Permission denied
# 2. w对于目录的作用:
只要w,啥也干不了
# 无法进入目录
[usera@m01 ~]$ cd doc/
-bash: cd: doc/: Permission denied
# 无法查看目录内容
[usera@m01 ~]$ cat doc/1.txt
cat: doc/1.txt: Permission denied
# 无法新建文件
[usera@m01 ~]$ touch doc/2.txt
touch: cannot touch ‘doc/2.txt’: Permission denied
# 3. x对于目录的作用:
a.x控制是否可以cd到目录下
b.没有其他任何权限
[usera@m01 ~]$ ll -d doc/
d--xrwxr-x 2 usera usera 19 Nov 15 09:22 doc/
# 不能查看目录内容
[usera@m01 ~]$ ll doc/
ls: cannot open directory doc/: Permission denied
# 不能新建文件
[usera@m01 ~]$ touch doc/2.txt
touch: cannot touch ‘doc/2.txt’: Permission denied
# 能进入
[usera@m01 ~]$ cd doc/
# 目录权限的常用组合方式:
1.r-x组合作用 可以进入到目录可以查看目录下所有的文件信息 能不能看文件内容具体看文件的权限
2.r-x组合不能在目录下删除 创建 改名等动作
3.rwx组合目录的最高权限可以进入可以增删改查
umask值
umask作用决定默认创建文件和目录的权限
默认文件的权限: 644
默认目录的权限: 755
#文件默认权限: 是由文件的最高权限666减去umask值得到的
# umask值默认是0022 指的是root用户
[root@m01 ~]# umask
0022
# 666 - 022 = 644
[root@m01 ~]# ll 2.txt
-rw-r--r-- 1 root root 0 Nov 15 09:37 2.txt
# umask值默认是0002 指的是普通用户
[usera@m01 ~]$ umask
0002
# 666-002=664
[usera@m01 ~]$ ll 2.txt
-rw-rw-r-- 1 usera usera 0 Nov 15 09:36 2.txt
# root用户 创建目录 默认权限755
[root@m01 ~]# mkdir dr
[root@m01 ~]# ll -d dr
drwxr-xr-x 2 root root 6 Nov 15 09:41 dr
# 普通用户 创建目录 默认权限775
[usera@m01 ~]$ mkdir dir
[usera@m01 ~]$ ll -d dir/
drwxrwxr-x 2 usera usera 6 Nov 15 09:42 dir/
# 修改umask默认值
umask值存在奇数位,文件相减后再奇数位置+1,目录正常相减
[root@m01 ~]# umask
0032
文件权限: 666-032=634+010=644
目录权限: 777-032=745
隐藏权限位
#查看隐藏权限位
lsattr
#修改隐藏权限
chattr
# 修改2.txt 隐藏权限为a 追加
[root@m01 ~]# chattr +a 2.txt
# 可以echo追加写入
[root@m01 ~]# echo "hell" >>2.txt
# 可以查看
[root@m01 ~]# cat 2.txt
hell
[root@m01 ~]# ll 2.txt
-rw-r--r-- 1 root root 5 Nov 15 09:47 2.txt
# 不能删除
[root@m01 ~]# rm 2.txt
rm: remove regular file ‘2.txt’? y
rm: cannot remove ‘2.txt’: Operation not permitted
# 不能清除重定向写入
[root@m01 ~]# echo "hell" >2.txt
-bash: 2.txt: Operation not permitted
# 不能改名
[root@m01 ~]# mv 2.txt 22.txt
mv: cannot move ‘2.txt’ to ‘22.txt’: Operation not permitted
# 不能移动
[root@m01 ~]# mv 2.txt /opt/
mv: cannot move ‘2.txt’ to ‘/opt/2.txt’: Operation not permitted
# a隐藏权限 只允许追加写
[root@m01 ~]# lsattr 2.txt
-----a---------- 2.txt
# 去掉a隐藏权限
[root@m01 ~]# chattr -a 2.txt
[root@m01 ~]# lsattr 2.txt
---------------- 2.txt
#i 无敌的 除了查看啥都不能干
[root@m01 ~]# chattr +i 2.txt
[root@m01 ~]# lsattr 2.txt
----i----------- 2.txt
[root@m01 ~]# echo hell >2.txt
-bash: 2.txt: Permission denied
[root@m01 ~]# echo hell >>2.txt
-bash: 2.txt: Permission denied
[root@m01 ~]# rm -f 2.txt
rm: cannot remove ‘2.txt’: Operation not permitted
[root@m01 ~]# mv 2.txt /opt/
mv: cannot move ‘2.txt’ to ‘/opt/2.txt’: Operation not permitted
[root@m01 ~]# mv 2.txt 22.txt
mv: cannot move ‘2.txt’ to ‘22.txt’: Operation not permitted
# 只能查看
[root@m01 ~]# cat 2.txt
hell
# 隐藏权限可以对一些特殊文件起到保护作用
特殊权限位
SUID, SGID, Sticky
# 作用 在用户执行命令的时候相当于属主的权限去执行。
# 给属主的位置增加s权限。任何人使用命令的时候相当于命令的属主的权限。
# SUID
# 只能作用于二进制文件,可执行文件,进程已属主身份启动,并继承属主权限
#vim 编辑提权
#通过root身份修改vim权限,在u+s,普通用户使用vim编辑器相当于root编辑,此时可以修改/etc/passwd文件自己的uid为0,达到提权
chmod u+s /bin/vim
chmod 4755 /bin/vim
# 普通用户usera
vim /etc/passwd
usera:x:0:1000::/home/usera:/bin/bash
# 再次链接登录usera 成为root身份
# SGID
# 作用于二进制或目录加上sgid权限后,该权限会自动继承原属组权限
# root身份新建目录 /opt/doc
mkdir /opt/doc/
chmod 2777 /opt/doc/
chmod g+s /opt/doc/
[usera@m01 opt]$ ll -d doc/
drwxrwsrwx 2 root root 6 Nov 15 10:41 doc/
# 普通用户新建文件 属组权限为root
[usera@m01 doc]$ touch 1.txt
[usera@m01 doc]$ ll
total 0
-rw-rw-r-- 1 usera root 0 Nov 15 10:42 1.txt
sgid目录下创建的文件和目录都会自动继承sgid权限。
# Sticky
chmod 1755 /mnt/
chmod o+t /mnt/
# 目的,在同一个目录下,可共多个用户共同使用,且互不影响。
#作用范围及功能:
1.SUID:作用于文件(二进制程序)
此用户将继承此程序的所有者权限
2.SGID:作用于文件(二进制程序)和目录
对于文件:
此用户将继承此程序的所属组权限.
对于目录:
此文件夹下所有用户新建文件都自动继承此目录的用户组.
3.Sticky:作用于目录
设定后,目录中的用户只能删除、移动或改名自己的文件或目录
Never try,never know