Linux文件系统权限

本文详细介绍了Linux文件系统的权限机制,包括权限对象(文件拥有者、用户组和其他用户)、权限类型(rwx)及其对文件和目录的意义,以及权限判断逻辑。还涵盖了权限管理命令如chmod,从属关系的修改,进程安全上下文,ACL(访问控制列表)的使用,以及特殊权限(SUID、SGID、SBIT)的概念和应用。最后通过实践练习加深了对权限管理的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux文件系统权限

权限对象

​ 文件拥有者

​ 群组:用户组,把属性相同的用户放到一个组中

​ 其他人

权限类型

d rwxr-xr-x. 2 root root 4096 Jul 24 19:25 an

​ r:4 w:2 x:1

​ r- -r- -r- - 444

​ rw - rwx -r 674

rwx权限说明

1、对于文件而言

​ r:可以获取文件的数据

​ w:可以修改文件数据

​ x:可以将此文件运行为进程(为二进制可执行文件)

2、对于目录而言

​ r:可以使用ls命令获取文件列表

​ w:可以修改文件列表,即创建和删除

​ x:表示我们可以cd到此目录并且可以使用ls -l获取文件的详细属性

权限判断逻辑:

​文件:前提条件,用户能够进入到文件所在目录

​ 删除文件:看用户是否具备对文件所在目录的w权限

​ 1、判断用户身份,owner(属主) - group(属组) - other:左三位 - 中三位 -右三位

​ 创建文件:和删除文件逻辑相同

目录:前提条件,当前用户能否进入到目录所在的目录,x

​ 删除目录:用户对目录所在目录是否具有w权限

​ 1、判断用户身份,owner(属主) - group(属组) - other:左三位 - 中三位 -右三位

​ 创建目录:和删除目录逻辑相同

权限管理命令

chmod

chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…

三类用户:u(属主)g(属组)o(其他)a(所有)
MODE表示法:

​ 赋权表示法,rwx(覆盖)

​ u= u=r

​ g=

​ o=

​ a=

​ chomd u=,g=,o=

​ chomd a=

​ 授权表示法

​ u+,u-

​ g+,g-

​ o+,o-

​ a+,a-

​ 注意:只有用户自己修改自己的文件

​ chomd 777 filename

从属关系

chown(既可以修改属主又可以修改属组)

​ chgrp(直接修改属组)

​ -R:递归修改

​ chown username:groupname(必须事先存在) name

​ chown username:(必须事先存在) name

​ chown :groupname(必须事先存在) name

​ chgrp groupname name

​ 注意:只有管理员可以修改

​ chown,chgrp

​ -R:递归修改

​ 注意:只有管理员可以修改

进程安全上下文:

进程对文件访问权限模型:

​ 进程的属主与文件的属主是否相同,如果相同,则应用的是属主权限

​ 否则,则检查进程的属主是否属于文件的属组,如果是,则应用属组的权限

​ 否则,使用other权限

基本权限ACL:

1、可针对单个用户设置

​ 2、针对用户组设置

​ 3、子文件/子目录继承父目录的权限(只能编辑,不能创建)

继承
[root@localhost tmp]# setfacl -m d:u:nebula:rwx mydir/
[root@localhost tmp]# getfacl mydir/
#file: mydir/
#owner: root
#group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:nebula:rwx
default:group::r-x
default: mask ::rwx
default:other::r-x
[root@localhost tmp]# cd mydir/
[root@localhost mydir]# touch testfile
[root@localhost mydir]# getfacl testfile
#file: testfile
#owner: root
#group: root
user::rw-
user:nebula:rwx #effective:rw-
group::r-x #effective:r–
mask::rw-
other::r–

查看系统是否支持ACL

[root@localhost ~]# tune2fs -l /dev/sda2 | grep “Default mount options:”

设置ACL

setfacl [-bkndRLPvh] [{-m|-x} acl_spec][{-M|-X} acl_file] file …

-m:配置ACL权限,不能和-x同时使用

针对用户:[root@localhost tmp]# setfacl -m u:nebula:rw aclfile
针对用户组:[root@localhost tmp]# setfacl -m g:tech:rw aclfile
查看:[root@localhost tmp]# getfacl aclfile

-x:删除ACL配置

-b:移除所有的ACL配置

​- R:递归配置acl

-d:配置默认的acl参数,只对目录有效

权限掩码

umask

​ 文件权限:666-022

​ 644

​ 目录: 777-022

​ 755

特殊权限:

SUID:当在文件所有者的x权限上出现s时,表示当前这个文件具有SUID权限(不能放在脚本和目录上,一般放在系统可执行的二进制程序上) s

​ 1、SUID权限仅仅对二进制程序有效

​ 2、执行者对于该程序有x权限

​ 3、本权限仅仅在执行程序的过程中有效

​ 4、程序的执行者拥有该程序的拥有者的权限

​ 如果当前这个文件属主位没有x权限,显示大写S

[root@localhost mydir]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Nov 24 2015 /usr/bin/passwd

SGID: s(用来继承父目录的属组)

​ 1、SGID也是对二进制文件有效

​ 2、执行者对该程序具有可执行权限 x权限

​ 3、主要用于目录之上

​ SBIT: t

​ 1、主要针对other位

​ 2、作用于目录

​ 3、在该目录下创建新的文件或目录,只有自己和root可以删除

​ 4、对文件无效

[root@localhost mydir]# ll -ld /tmp/
drwxrwxrwt. 4 root root 4096 Jul 28 21:37 /tmp/

SUID,SGID,SBIT

​ 字符表示法

​ s s t u+s

​ 数字表示法

​ 4 2 1

​ chmod 0755:消除s

​ 1755:添加s

[root@localhost tmp]# cp /usr/bin/passwd .
[root@localhost tmp]# chmod u+s passwd
[root@localhost tmp]# ll
total 52
-rw-rw-r–+ 1 root root 6 Jul 28 20:25 aclfile
drwxrwxr-x+ 2 root root 4096 Jul 28 22:14 mydir
-rwsr-xr-x. 1 root root 30768 Jul 28 22:54 passwd
drwxr-xr-x. 2 root root 4096 Jul 28 22:54 testdir
-rw-------. 1 root root 0 Jul 24 17:07 yum.log
[root@localhost tmp]# chmod 0755 passwd
[root@localhost tmp]# ll
total 52
-rw-rw-r–+ 1 root root 6 Jul 28 20:25 aclfile
drwxrwxr-x+ 2 root root 4096 Jul 28 22:14 mydir
-rwxr-xr-x. 1 root root 30768 Jul 28 22:54 passwd
drwxr-xr-x. 2 root root 4096 Jul 28 22:54 testdir
-rw-------. 1 root root 0 Jul 24 17:07 yum.log
[root@localhost tmp]# chmod 4755 passwd
[root@localhost tmp]# ll
total 52
-rw-rw-r–+ 1 root root 6 Jul 28 20:25 aclfile
drwxrwxr-x+ 2 root root 4096 Jul 28 22:14 mydir
-rwsr-xr-x. 1 root root 30768 Jul 28 22:54 passwd
drwxr-xr-x. 2 root root 4096 Jul 28 22:54 testdir
-rw-------. 1 root root 0 Jul 24 17:07 yum.log
[root@localhost tmp]# chmod 757 passwd
[root@localhost tmp]# ll
total 52
-rw-rw-r–+ 1 root root 6 Jul 28 20:25 aclfile
drwxrwxr-x+ 2 root root 4096 Jul 28 22:14 mydir
-rwxr-xrwx. 1 root root 30768 Jul 28 22:54 passwd
drwxr-xr-x. 2 root root 4096 Jul 28 22:54 testdir
-rw-------. 1 root root 0 Jul 24 17:07 yum.log
[root@localhost tmp]# chmod 2755 passwd
[root@localhost tmp]# ll
total 52
-rw-rw-r–+ 1 root root 6 Jul 28 20:25 aclfile
drwxrwxr-x+ 2 root root 4096 Jul 28 22:14 mydir
-rwxr-sr-x. 1 root root 30768 Jul 28 22:54 passwd
drwxr-xr-x. 2 root root 4096 Jul 28 22:54 testdir
-rw-------. 1 root root 0 Jul 24 17:07 yum.log

chattr:显示隐藏属性

​ a:append 只能够向文件添加数据,不能删除数据(只能追加)

[root@localhost tmp]# chattr +a file1
[root@localhost tmp]# lsattr file1
-----a-------e- file1
[root@localhost tmp]# echo 111 >> file1

i :文件不能被删除,改名,链接同时不能够写入内容

A:atime 访问时间不可修改

lsattr:列出文件的隐藏属性
stat:查看文件的详细信息

练习:

1、新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;

[root@localhost ~]# groupadd mariadb
[root@localhost ~]# useradd -M -g mariadb -s /sbin/nologin mariadb
[root@localhost ~]# su - mariadb
su: warning: cannot change directory to /home/mariadb: No such file or directory
This account is currently not available.

​ 2、新建GID为5000的组nebulaedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;

[root@localhost ~]# groupadd -g 5000 nebulaedu
[root@localhost ~]# useradd -d /users/gentoo  gentoo
[root@localhost ~]# passwd gentoo
gentoo:x:1003:1003::/users/gentoo:/bin/bash

​ 3、新建用户fedora,其家目录为/users/fedora,密码同用户名;

[root@localhost ~]# useradd fedora
[root@localhost ~]# usermod -d /users/fedora fedora
[root@localhost ~]# passwd fedora
fedora:x:1004:1004::/users/fedora:/bin/bash

​ 4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;

[root@localhost ~]# useradd www
[root@localhost ~]# usermod -d /users/www www
[root@localhost ~]# userdel www

​ 5、为用户gentoo和fedora新增附加组nebulaedu;

[root@localhost ~]# usermod gentoo -aG nebulaedu
[root@localhost ~]# id gentoo
uid=1003(gentoo) gid=1003(gentoo) groups=1003(gentoo),5000(nebulaedu)
[root@localhost ~]# usermod fedora -aG nebulaedu
[root@localhost ~]# id fedora
uid=1004(fedora) gid=1004(fedora) groups=1004(fedora),5000(nebulaedu)

​ 6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为nebulaedu,并让属组对目录本身拥有写权限

[root@localhost var]# cp -a  /var/log /tmp/
[root@localhost tmp]# chown :nebulaedu /tmp/log
[root@localhost tmp]# ls -l
total 8
drwxr-xr-x. 6 root nebulaedu 4096 Jul 31 09:41 log
[root@localhost tmp]# chmod g+w log
[root@localhost tmp]# ls -l
total 8
drwxrwxr-x. 6 root nebulaedu 4096 Jul 31 09:41 log

研发部开发人员David和Peter属于组A,行政部人员Jack和Mike属于组B;

[root@localhost tmp]# useradd David
[root@localhost tmp]# useradd Peter
[root@localhost tmp]# useradd Jack
[root@localhost tmp]# useradd Mike
[root@localhost tmp]# groupadd A
[root@localhost tmp]# groupadd B
[root@localhost tmp]# usermod -aG A David
[root@localhost tmp]# usermod -aG A Peter
[root@localhost tmp]# usermod -aG B Jack
[root@localhost tmp]# usermod -aG B Mike
[root@localhost tmp]# cat /etc/group
A:x:5001:David,Peter
B:x:5002:Jack,Mike

1.建立目录“/project_a”,该目录里面的文件只能由研发部开发人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;并要求在此目录下创建的文件研发组内成员可以互相访问

[root@localhost tmp]# mkdir project_a
[root@localhost tmp]# chown :A project_a
[root@localhost tmp]# ll
drwxr-xr-x. 2 root A            6 Jul 31 11:08 project_a
[root@localhost tmp]# chmod 770 project_a
drwxrwx---. 2 root A            6 Jul 31 11:08 project_a
[root@localhost ~]# chmod 2770 /tmp/project_a
[root@localhost tmp]# ll
drwxrws---. 2 root A           49 Jul 31 15:32 project_a

2.建立目录“/project_b”,该目录里面的文件只能由行政部人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;要求在此目录下创建的文件行政部人员只能删除自己的文件,不得删除其他人员文件

[root@localhost tmp]# mkdir project_b
[root@localhost tmp]# chown :B project_b
[root@localhost tmp]# ll
drwxr-xr-x. 2 root B            6 Jul 31 11:59 project_b
[root@localhost tmp]# chmod 770 project_b
[root@localhost tmp]# ll
drwxrwx---. 2 root B            6 Jul 31 11:59 project_b
[root@localhost tmp]# chmod 2770 project_b
[root@localhost tmp]# chmod 1770 project_b
[root@localhost tmp]# ll
drwxrws--T. 2 root B           17 Jul 31 16:21 project_b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值