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:作用于目录
设定后,目录中的用户只能删除、移动或改名自己的文件或目录
posted @ 2024-11-15 10:56  被时光移动的城市  阅读(22)  评论(0编辑  收藏  举报