已整理-文件权限与相关配置

 

目录:
  1、基本权限
  2、权限适用对象(归属)
  3、更改文件/文件夹权限命令
  4、修改文件/文件夹归属命令
  5、添加用户到指定的组
  6、Linux判断用户具备的权限
  7、特殊权限(附加权限)
  8、acl访问控制列表
  9、目录和数值权限

  10、umask详解

 

1、基本权限
读取:允许查看内容      -read     ->r
写入:允许修改内容      -write       ->w
可执行:允许运行和切换   -execute    ->x

 

对于文本文件:
r:    cat / head / less
w:   vim / > >>
x:    shell 脚本、程序等

 

2、权限适用对象(归属)
所有者:拥有此文件/目录的用户        -user ->u
所属组: 拥有此文件/目录的组        -group ->g
其它用户:除所有者、所属组以外的用户   -other ->o

 

各字段的意义:

权限位    硬连接数     所有者     所属组    大小      最后修改时间      文件名
-rwxr-xr-x.    1        root       root     114      Jun 19 18:48     irsync.sh

其中权限栏尾:

-        表示文本文件
d       表示目录
l        表示链接文件,快捷方式
rwxr-xr-x    共9位,前3位表示所有者权限,中间3位表示所属组的权限,后3位表示other的权限;
.       表示特殊权限

# ll -ld /tmp                      #比较有代表性的目录权限
drwxrwxrwt. 11 root root 259 Jun 20 22:51 /tmp

 

# ll /etc/shadow            #比较有代表性的文件权限,什么权限都没有
---------- 1 root root 838 Jun 13 16:32 /etc/shadow

 

3、更改文件/文件夹权限命令
常用语法:

chmod u+w    文件/文件夹              #增加权限
chmod u-w    文件/文件夹              #减权限
chmod u=rwx,g=rx,o=rx    文件/文件夹       #对文件夹设置权限
chmod ugo=rwx    文件/文件夹            #ugo都设置为rwx权限
chmod +x 文件/文件夹                 #针对ugo都添加x权限

 

目录权限说明:
目录的r权限:能够ls浏览此目录内容;
目录的w权限:能够执行rm/mv/cp/mkdir/touch/... 等更改目录内容的操作;
目录的x权限:能够cd切换到此目录;

 

4、修改文件/文件夹归属命令
常用语法格式:
  chown [-R]   属主      文件/文件夹
  chown [-R]   :属组      文件/文件夹
  chown [-R]   属主:属组   文件/文件夹

 

5、添加用户到指定的组
常用语法:

gpasswd -a cephadmin    root         #用户cephadmin 加入到了root组,但需要用户退出当前登陆(注销)再进入

 

删除语法:

gpasswd -a cephadmin root    #从cephadmin组中删除root用户

 

6、Linux判断用户具备的权限
【1】判断用户角色
【2】查看相应角色权限位
【3】匹配即停止,顺序:所有者>所属组>其它人


7、特殊权限(附加权限)
又称之为附加权限;
1)、set gid(用得较多)
【1】set gid附加在属组的【x】位上,属组的权限标识会变为【s】;
【2】如果属组上面没有【x】权限,就会变成【大写的S】,如果有【x】权限,就会是【小写的s】;

作用:
适用于目录,set gid 可以使目录下新增的文档自动设置与父目录相同的属组,同时新创建的目录也会继承父目录的s特殊权限;
通俗理解是:让新增文件/文件夹自动继承父目录的属组,新创建的目录也会继承父目录的s特殊权限;

# chmod g+s test        #设置了gid 权限
drwxrwsr-x 2 root root 46 Jun 21 16:29 test

$ touch wowo.txt        #cephadmin用户创建文件
$ ll
-rw-rw-r-- 1 cephadmin root 0 Jun 21 16:34 wowo.txt

 

2)、set uid(不常用,不安全)
set uid 是附加在属主的x位上
作用:属主的权限标识会变为s,适有于可执行文件,set uid 可以让使用者具有文件(一般是可执行文件)属主的身份及部分权限;

案例:

# ll -ld /usr/bin/passwd             #这个命令也带有set uid特殊权限
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd


# cp /usr/bin/mkdir /opt/mkdir
# chmod u+s /opt/mkdir                #对程序添加set uid特殊权限
# ll /opt/mkdir
-rwsr-xr-x 1 root root 79768 Jun 21 17:07 /opt/mkdir

$ /opt/mkdir wode                    #新创建的目录,不是自己而是mkdir程序的所有者
$ ll
drwxrwsr-x 2 root adminuser 6 Jun 21 17:07 wode

 

3)、sticky bit(用得较多)
附加在other的x位上;
其它人的权限标识会变为t;
适用于开放w权限的目录,可以阻止用户滥用w写入权限(禁止操作别人的文档)

通俗的理解:
一个公共目录public,针对other用户赋予了rwx 的权限,那所有用户就能够对public下面的目录和文件有读写执行的权限,包括删除;
如果增加t权限,那就只能删除属于自己的文件和目录,对其它的文件和目录没有删除/修改的权限;

# chmod o+t public          #添加sticky bit t权限

$ ll
-rw-rw-r-- 1 cephadmin cephadmin 10 Jun 21 17:33 cephadmin.txt
$ rm -f cephadmin.txt       #其它用户无法删除cephadmin的文件
rm: cannot remove ‘cephadmin.txt’: Operation not permitted

 

8、acl访问控制列表
文档的归属局限性,任何人只属于三种角色:属主、属组、其它人,无法实现更精细的控制;

acl访问策略:
能够对个别用户、个别组设置独立的权限,大多数挂载的ext3/4、xfs文件系统默认已支持;

使用案例:

# setfacl -m u:cephadmin:rwx private              #针对单个用户cephadmin设置rwx权限,-m 表示修改,如果没有设置过就表示新增
# ls -l 
drwxrws---+ 2 root adminuser 6 Jun 21 17:43 private    #有1个+,表示还有特殊权限

# getfacl private                          #查看文件夹的acl权限
# file: private/
# owner: root
# group: adminuser
# flags: -s-
user::rwx
user:cephadmin:rwx
group::rwx
mask::rwx
other::---


# setfacl -m u::rwx private             #设置默认用户,读,写,可执行
# setfacl -b private                 #清除所有acl
# setfacl -x u:cephadmin private           #删除用户cephadmin对private文件夹的acl权限
# setfacl -m d:u:cephadmin:rwx private        #设置用户创建文件/文件夹的权限为rwx,是让目录中所有新建的文件/文件夹都继承此权限,这个权限对目录本身不生效;
                              且不会影响目录中已经存在的文件/文件夹
# setfack -k private                 #删除默认用户的权限

 

setfacl语法:

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m,   --modify-acl 更改文件的访问控制列表
-M,   --modify-file=file 从文件读取访问控制列表条目更改
-x,   --remove=acl 根据文件中访问控制列表移除条目
-X,   --remove-file=file 从文件读取访问控制列表条目并删除
-b,   --remove-all 删除所有扩展访问控制列表条目
-k,   --remove-default 移除默认访问控制列表
    --set=acl 设定替换当前的文件访问控制列表
    --set-file=file 从文件中读取访问控制列表条目设定
    --mask 重新计算有效权限掩码
-n,   --no-mask 不重新计算有效权限掩码
-d,   --default 应用到默认访问控制列表的操作,针对目录
-R,   --recursive 递归操作子目录,使用该参数时需要放在-m参数前面
-L,   --logical 依照系统逻辑,跟随符号链接
-P,   --physical 依照自然逻辑,不跟随符号链接
    --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
    --test 测试模式,并不真正修改访问控制列表属性
-v, --version 显示版本并退出
-h, --help 显示本帮助信息

 


9、目录和数值权限
权限的数值表示,权限的数值化,基本权限:r=4,w=2,x=1
附加权限:SUID=4,SGID=2,Sticky Bit=1

采用数值形式设置权限:

chmod [-R] nnn     文档...
chmod [-R] xnnn    文档...

 


10、umask详解
umask值:权限掩码,与用户创建的目录默认权限有关;

# umask          #类似于一个变量
0022

 

777-022=755 ->也就是用户创建目录的权限是755,用最大权限减去掩码的权限,得到最终创建目录的权限;

不建议去改umask值,生产环境不建议,保持默认就可以了;

文件的默认权限是:0644 ;

# ll
-rw-r--r-- 1 root root 0 Jun 21 22:37 haha    #0644

 

umask确定了文件创建时的初始权限,文件或目录权限为文件目录默认权限减去umask得到初始文件权限;
文件初始默认权限为0666,目录为0777,减去umask值0022,默认创建文件权限为0644,默认创建目录权限为0755;
若用户umask为0002,则新创建的文件或目录在没有指定的情况下默认权限分别为0664,0775;

 

posted on 2022-06-22 10:13  tengq  阅读(227)  评论(0编辑  收藏  举报

导航