文件权限
一:文件和目录的权限的理解
1:linux的文件和目录的权限
linux的访问文件的权限为,可读(r),可写(w),可执行(x)
权限 | 文件 | 目录 |
r | 可以读取该文件 | 可以列出该文件的内容 |
w | 可以编辑该文件 | 可以删除,重命名等操作 |
x | 可以执行该文件 | 可以进入该文件 |
linux访问文件的用户有三种
文件的创建者(所有者)---对应 u
文件的属组----对应 g
其他用户----对应 o
a=ugo
2:查看文件的权限 ll
#查看etc的权限 [root@server /]# ll /etc/ -d drwxr-xr-x. 140 root root 8192 10月 28 20:12 /etc/ d---代表的是文件的类型 后面的三个为一组 第一组对应 所有者的权限 第二组对应 用户组的权限 第三组对应 其他用户的权限
二:管理文件和目录的权限
1:字符设定法
就是用字母来设置权限,加减来添加或者删除权限
命令的格式
chmod 选项 符号 权限 文件名
选项:
u:代表用户
g:代表用户组
o:代表其他的用户
a:代表所有的用户
符号:
+:添加权限
-:减少权限
=:等于这个权限
权限:
r:读的权限
w:写的权限
x:执行的权限
(1)修改文件的权限
[root@server mnt]# ll 总用量 0 -rw-r--r--. 1 root root 0 10月 28 21:46 11.txt [root@server mnt]# #添加用户组和其他用户有写的权限(修改多个多个类型的用户,用逗号隔开) [root@server mnt]# chmod g+w,o+w 11.txt [root@server mnt]# ll 总用量 0 -rw-rw-rw-. 1 root root 0 10月 28 21:46 11.txt [root@server mnt]# #删除其他用户读的权限 [root@server mnt]# chmod o-w 11.txt [root@server mnt]# ll 总用量 0 -rw-rw-r--. 1 root root 0 10月 28 21:46 11.txt [root@server mnt]# #所有用户只有读的权限 [root@server mnt]# chmod a=r 11.txt [root@server mnt]# ll 总用量 0 -r--r--r--. 1 root root 0 10月 28 21:46 11.txt [root@server mnt]# #多级目录权限的设置,读写的权限 [root@server mnt]# ll -R .: 总用量 0 -r--r--r--. 1 root root 0 10月 28 21:46 11.txt drwxr-xr-x. 2 root root 20 10月 28 21:54 test ./test: 总用量 0 -rw-r--r--. 1 root root 0 10月 28 21:54 22.txt [root@server mnt]# chmod u+rw,g+rw test/ -R [root@server mnt]# ll -R .: 总用量 0 -r--r--r--. 1 root root 0 10月 28 21:46 11.txt drwxrwxr-x. 2 root root 20 10月 28 21:54 test ./test: 总用量 0 -rw-rw-r--. 1 root root 0 10月 28 21:54 22.txt [root@server mnt]#
2:数字设定法
格式:
chmod 数字1数字2数字3 文件名
4:代表的就是读的权限
2:代表的就是写的权限
1:代表的就是执行的权限
常见的文件夹的权限:755
7:用户有读写执行的权限,5:用户组有读和执行的权限,5:其他用户有读和写的权限
文件的权限的权限为:644
常用的用法和字符设定的权限一样,这个就不加赘述了
三:设置文件和目录的主人和用户组
1:chown命令
用于更改用户和用户组的命令
格式如下:
chown 用户.用户组 文件
用户和用户组之间用 . 隔开
例子:
更改test.txt的主人为q7,用户组为user1
#查看文件的用户和用户组 [root@server mnt]# ll 总用量 0 -rw-r--r--. 1 root root 0 10月 29 22:43 test.txt [root@server mnt]# #更改 [root@server mnt]# chown q7:user1 test.txt [root@server mnt]# ll 总用量 0 -rw-r--r--. 1 q7 user1 0 10月 29 22:43 test.txt [root@server mnt]#
四:文件访问控制列表
上面的chmod 只能赋予三类用户的权限,文件的所有者,用户组,其他用户这三类用户,所以,一但出现了第四个用户,就无法进行修改,就不能使用chmod,所以使用w文件的访问控制列表(acl)来设置特定的用户或者用户组的对于文件和目录的权限
1:setfacl命令
如果要设置多个不同对象的权限的话(就用逗号隔开)
-x 的选项可以删除单独一个对象的权限
用于设置精确的设置权限
格式:
setfacl 选项 参数 文件名称
参数:如果设置用户的权限 u:用户名:权限
设置 用户组的权限 g:用户组:权限
选项
选项 | 作用 |
-m(modify) | 修改文件的权限 |
-b | 删除所有用户或者用户组的acl权限 |
-x | 单独的删除某一个用户或者用户组的acl权限 |
-R | 递归操作子目录 |
实列:
root目录下的文件,user1用户能够编辑,能够在root目录下创建文件
#查看root目录的权限 [root@master ~]# ll -d dr-xr-x---. 3 root root 160 10月 14 00:36 . [root@master ~]# #发现只有root用户能够编辑,其他用户都不能进去 #更改root目录的权限 [root@master ~]# setfacl -m u:user1:rwx /root #但查看权限是发现有+就证明了设置了acl权限 [root@master ~]# ll -d dr-xrwx---+ 3 root root 160 10月 14 00:36 . #使用getfacl来查看root目录的acl权限 [root@master ~]# getfacl ./ # file: . # owner: root # group: root user::r-x user:user1:rwx group::r-x mask::rwx other::--- [root@master ~]# # 切换到user1用户 su - user1 [user1@master /]$ cd /root [user1@master root]$ ls anaconda-ks.cfg [user1@master root]$ ll -d dr-xrwx---+ 3 root root 160 10月 14 00:36 . [user1@master root]$ #在root目录下,创建文件 [user1@master root]$ mkdir 11 [user1@master root]$ ls 11 anaconda-ks.cfg [user1@master root]$ touch 22 [user1@master root]$ ls 11 22 anaconda-ks.cfg [user1@master root]$
#删除user1用户的权限
[root@server ~]# setfacl -x u:user1 /root/ [root@server ~]# getfacl /root getfacl: Removing leading '/' from absolute path names # file: root # owner: root # group: root user::r-x group::r-x mask::r-x other::--- [root@server ~]#
2:getfacl命令
因为设置了acl权限,所以,不能只用 ll 命令来查看文件的权限,所查看的权限不完整,所以使用getafcl命令来查看完整的权限
查看文件的acl权限
[root@server mnt]# getfacl /mnt getfacl: Removing leading '/' from absolute path names # file: mnt # owner: root # group: root user::rwx group::r-x other::r-x [root@server mnt]#
五:sudo命令
因为在生产环境下,一般不能使用root用户,所以需要sudo命令,就能使普通用户使用root用户的权限
sudo的配置文件是/etc/sudoers
编辑该配置文件
找到root all=(all) all 在其后面输入
用户名 ALL=(ALL) ALL
sudoers文件是Linux系统中的一个配置文件,用于定义哪些用户可以以超级用户(root)的身份运行特定的命令或程序。这个文件的路径通常是/etc/sudoers或/etc/sudoers.d/sudoers。