Linux - Linux权限

$ ls -l

drwxr-xr-x. 3 root root 4096 Oct 12 13:38 dirname

d:文件类型:

  • d:目录
  • -:文件
  • l:软链接

rwx:所有者权限  r-x:用户组权限  r-x:其他人权限  . :ACL权限位

r读 w写 x执行

基本权限的修改

chmod [选项] 模式 文件名

  • 选项
    • -R 递归
  • 模式
    • [u/g/o/a][+/-/=][rwx]
  • 权限数字
    • r 4
    • w 2
    • x 1
$ chmod 666 1.txt 设置文件权限为rw-rw-rw-
$ chmod u+w 1.txt 给所有者添加w写的权限
$ chmod g+x 1.txt 给用户组添加x执行的权限
$ chmod o+r 1.txt 给其他人添加r读的权限

$ chmod g+x,o+x 1.txt 同时给用户组和其他人添加x执行的权限

$ chmod u-w 1.txt 给所有者减掉w写的权限

$ chmod u=rwx 1.txt 设置所有者的权限为rwx

文件权限

权限 含义 示例
r 读取文件内容 cat more head tail
w 编辑、新增、修改文件内容,不能删除文件,除非对目录有写权限 vi echo
x 可执行

目录权限

权限 含义 示例
r 可以查看目录下的文件名 ls
w 具有修改目录结构的权限。如新建、删除和重命名此目录下的文件和目录 touch rm mv cp
x 进入目录 cd

chown

  • chown 用户名 文件名
  • 如果想让一个用户拥有7权限,可以把这个文件的所有者改成这个用户名
    chmod 755 folder
    chown mino folder
    

chgrp

  • chgrp 组名 文件名
chgrp students folder
chown root:root folder

默认权限 

umask

  • 查看默认权限
  • 0022
    • 第一位0 文件特殊权限
    • 022 文件默认权限

文件权限

  • 默认权限就是文件一创建后就拥有的权限
  • 文件默认不能建立可执行文件,必须手工赋予执行权限
  • 文件默认权限最大为666
  • 默认权限需要换算成字母再相减
  • 建立文件之后的默认权限,为666减去umask值

666 - 022 = 744

2.3 目录

  • 目录默认权限最大为777
  • 建立目录之后的默认权限,为777减去umask值

777 - 022 = 755

2.4 修改umask值

临时修改

umask 0002

永久修改

vi /etc/profile

ACL

  • 一个文件或文件夹只能有一个所有者和所属组,无法适应某些应用场景
  • 访问控制(Access Control List,ACL)就是为特定的用户和组分配特定权限

 查看分区ACL权限是否开启

  • dumpe2fs 命令是查询指定分区详细文件系统信息的命令
    • -h 仅显示块中的信息,而不显示磁盘块组的详细信息
dumpe2fs -h /dev/sda1

Default mount options:    user_xattr acl

临时开启分区的ACL权限

mount -o remount,acl /dev/sda1 #重新挂载根分区,并挂载加入ACL权限

永久开启分区的ACL权限

vi /etc/fstab
UUID /  ext4 defaults,acl  1 1
mount -o remount /dev/sda1

读写ACL权限

setfacl

  • setfacl 选项 文件名
选项 含义
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
  • 给用户guest赋予rx权限
  • 格式 "u:用户名:权限"
    useradd guest
    mkdir /home/guest/folder
    useradd teacher
    groupadd students
    mkdir folder
    chown teacher:students /home/guest/folder
    chmod 770 /home/guest/folder
    #创建用户guest,teacher,创建用户组students
    #创建目录/home/guest/folder
    #修改目录权限为770,所有者和用户组分别为:teacher,students
    #用户guest没有权限访问该目录
    
    setfacl -m u:guest:rw /home/geuest/folder
    

    设置最大权限

  • mask是最大有效权限,如果给用户赋予了ACL权限,是需要和mask的权限做与运算后才能得到真正权限
  • 如果mask值是777,那么任何数与它相与,得到的是权限本身
  • 如果允许自定义ACL,又不想让它超出最大权限
setfacl -m m:r folder #修改掩码mask
[root@localhost someone]# getfacl folder
# file: folder
# owner: teach
# group: stus
user::rwx
user:someone:r-x        #effective:r--
group::rwx            #effective:r--
mask::r--
other::---

删除ACL权限

删除指定用户的ACL权限

setfacl -x u:someone folder #setfacl -x u:用户名 文件名

删除文件所有用户的ACL权限

setfacl -b folder  #setfacl -b 文件名

删除指定用户组的ACL权限

setfacl -x g:students folder #setfacl -x g:组名 文件名

递归权限

  • 向下一级一级传递权限
  • 父目录设定ACL权限的时候,所有的子文件和子目录也会拥有相同的ACL权限
  • 递归仅能赋给目录不能赋给文件
setfacl -m u:someone:rx folder
setfacl -m u:someone:rx -R folder

默认权限

  • 默认ACL权限是指如果给父目录设置了默认ACL权限,那么父目录里所有新建的子文件都会继承父目录的ACL权限
  • setfacl -m d:u:用户名:权限 目录名
setfacl -m d:u:someone:rw folder

sudo权限

  • root把本来只有超级管理员可以使用的命令赋予普通用户来使用
  • sudo操作的对象是系统命令

4.1 visudo

  • 通过visudo可以由超级用户赋权
  • 实际修改的是/etc/sudoers文件
  • 命令必须写绝对路径
root    ALL=(ALL) ALL
用户名 被管理主机地址=(可使用的身份) 授权命令(绝对路径)

guest localhost=(root) /usr/sbin/useradd         //新增加用户行
%wheel ALL=(ALL) ALL
%组名 被管理主机地址(IP)=(可使用的身份) 授权命令(绝对路径)
sudo -l  查看目前的sudo权限
发布了88 篇原创文章 · 获赞 16 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_36157085/article/details/102538552
今日推荐