文件权限
1、普通权限
(登陆用户对文件或目录的读写执行的权限)
普通权限对管理员用户无效
文件和目录 都有4中类型的用户
u 所有者 : 文件、目录的创建者
g 所属组 : 文件、目录属于的用户组
o 其他用户: 用户既不是文件、目录的创建者,也没有在文件、目录所属的用户组里
a 所有用户:以上3类用户的总称
4 2 1 0
r w x -
文件或目录权限的类型 读、写、执行 无权限
查看文件/目录的权限
ll 文件名
ll 目录/文件名
ll -d 目录名
权限列表 链接个数 所有者 所属组 大小 日期 时间 文件名/目录
权限列表(由10个字符组成)
第一列字符 表示文件类型
- 文本文件
d 目录
l 链接文件
s 套接字文件
b 块文件
p 管道文件
c 字符文件
剩下的9列字符 每3列为一组 分3组
第一组 表示 所有者权限
第二组 表示 所属组权限
第三组 表示 其他用户权限
每组权限里的
第一列 r 权限显示位
第二列 w 权限显示位
第三列 x 权限显示位
* 若显示位置是字符 - 表示没有此权限
权限 文件上 目录上
r读 看文件的内容 浏览目录下的文件列表
cat head tail more less ls
w写 编辑文件内容 创建或删除文件或目录
vim touch rm mkdir rmdir
cp mv
x执行 可以运行文件 可以进入目录
./文件名 cd
/testdir/a.sh
* 要想让用户对目录有写权限 要同时开放x权限
* 一旦用户对目录拥有了w权限 ,就对这个目录下的子文件拥有的完全权限
设置权限命令的语法格式 - chmod
chmod -R 权限列表 文件名/目录名
权限列表
用数字表示
ugo
字母表示
用户类型 赋值符号 权限列表
u = r w x -
g +
o -
a = 设置指定的权限
+ 在原有权限的基础上增加权限
- 在原有权限的基础上去掉权限
实例
chmod 文件名
chmod 目录名
chmod u-x 文件名/目录名/文件名
chmod u=rx,g=r,o=r 目录名/文件名
chmod a=r 目录名/文件名
chmod -R /teadir
mkdir -m 700 目录名 //创建目录时指定目录的权限,
//若不指定权限系统设置的默认权限
查看创建文件时的默认权限
umask -S
umask
普通用户 特权用户
文件 644 644
目录 775 755
2、特殊权限
SUID 、 SGID 、 Set stikcy
字母 数字
SUID s 4
SGID s 2
Set sticky t 1
SUID 权限位只能设置在二进制文件上(通常就是系统命令)
当用户运行设置了suid权限位的文件时,会拥有文件所有者的权限
suid权限只在执行过程中有效。
用户要对文件本身有执行权限,才能使用文件的suid权限。
u x
用字母s表示,占用文件所有者的执行位显示
当s小写时,文件的所有者对文件有执行权限
当s大写时,文件的所有者对文件没有执行权限
对应的数字权限是数字 4
chmod u+s /usr/sbin/useradd
chmod u-s /usr/sbin/useradd
SGID 既可以设置在文件上,又可以设置在目录上,通常设置在目录上。
设置上文件上,当用户执行文件时,拥有文件所属组的权限
设置在目录上,在目录下创建的子文件、子目录继承父目录的所属组。
用字母s表示,占用文件、或目录的所属组的执行权限位显示
当s小写时,文件的所属组用户对目录有执行权限
当s大写时,文件的所属组用户对目录没有执行权限
对应的数字权限 是 数字2
chmod g+s /usr/sbin/useradd
chmod g-s /usr/sbin/useradd
Set stikcy 粘滞位(防删除位)
只能设置在目录上。
当给目录设置t权限位,目录下的文件只能被文件的所有者删除、
不能被其他用户移动 、改名、编辑 (但可以拷贝)
此权限对管理员用户无效。
用字母t表示,占用目录其他用户执行权限位显示
当t小写时, 其他用户对目录有执行权限
当t大写时, 其他用户对目录没有执行权限
对应的数字权限 是 数字1
suid sgid set-sticky
4 2 1
s s t
u-x g-x o-x
1755 rwxr-xr-t
7777 rwsrwsrwt
mkdir -m /dir10
useradd u10
useradd u12
useradd u3
useradd u2
让系统用户u2对 /dir10 目录有完全权限。
只让系统用户u2对 /dir10 目录有完全权限。
只让系统用户u2、u3 对 /dir10 目录有完全权限。
3、文件访问控制列表
- facl
dumpe2fs /dev/sda2 | grep --color acl
getfacl 目录名/文件名
getfacl /dir10
在不改变本身权限的情况下,单独设置某个用户或用户组 对 某个文件或目录的访问权限。
setfacl 选项 [参数]:用户类型:权限列表 文件名/目录名
选项
-m 设置facl权限
-x 删除facl权限(一次删除一个)
-b 删除目录或文件的所有acl权限
-k 删除目录的默认acl权限
-R 递归设置
setfacl -R -m u:u100:rwx /dir10
参数
m 设置acl_mask 码的权限
acl权限mask码 : 控制acl用户的权限
默认acl_mask 值是rwx
授权用户的acl的最终权限是 授权权限与acl_mask码逻辑运算后的权
setfacl -m m:r /dir10
d 设置目录的默认acl权限
setfacl -m d:u:u1:rwx /dir6
用户类型 u 设置某个用户的访问权限
g 设置某个用户组的访问权限
权限列表 r w x
mkdir -m 755 /dir6
让系统用户u2 对 /dir6目录下的所有文件有rwx权限
4、文件的隐藏权限
查看文件的隐藏属性
lsattr 文件名
设置
chattr +-=a|i|A 文件名
i 文件的内容不能被编辑 (管理员也不可以)
a 只能以追加的方式给文件添加新内容
A 不更新文件访问时间
练习
一、基本权限和归属
,长格式显示/etc/passwd和/boot,分别说出他们相应的权限
,用字符权限形式将Desktop(包括里面的文件)权限更改成770
,用数字权限形式将Desktop(包括里面的文件)权限更改成755
,编写test.sh脚本,里面内容是 echo Hello World。设置允许执行该脚本
,查看umask值,代表什么意思
,创建一个/opt/studir目录,权限为755。将/opt/studir目录所有者改成student,所属组为users
,在将/opt/studir目录包括目录下的所有文件和子目录所有者改成stu01
,删除实验中创建的账户与组
二、附加权限控制
,长格式显示/tmp和/usr/bin/passwd,查看其权限
,创建普通账户tom,查找mkdir命令在什么地方,将其拷贝到/bin下改名为smkdir,给其设置suid权限
,tom登陆使用mkdir创建/tmp/test1目录,查看其权限
,tom登陆使用smkdir创建/tmp/test2目录,查看其权限
,删除smkdir命令
,查找cp命令在什么地方,将其拷贝到/bin下改名为gcp,给其设置sgid权限
,用tom账户登录,使用cp命令创建/tmp/file1文件。使用gcp命令创建/tmp/file2文件,查看这2个文件权限部分区别。
,删除gcp命令,tom账户
,创建user01,user02账户,group01组。/software目录,用user01在该目录下创建test01,user02在该目录下创建test02,查看其权限
,更改software目录所有者为root,所属组为group01,允许所有人对此目录有读、写、执行权限,并且在该目录下创建文件和目录都自动继承software的属组
,删除user01,user02账户,group01组,以及/software目录
,查看当前磁盘分区情况,查看根分区是否支持acl
,查看/root的acl权限,创建账户jack,jack是否可以进入/root?为什么
,使用acl权限设置jack能够进入/root
,创建/data目录,设置在/data目录下新建的文件和目录,jack都有读、写、执行权限
,清除/data的acl权限
,删除/data目录与jack账户Linux基础3(用户/组管理,rpm,yum,源码安装软件)