已整理-文件权限与相关配置
目录:
1、基本权限
2、权限适用对象(归属)
3、更改文件/文件夹权限命令
4、修改文件/文件夹归属命令
5、添加用户到指定的组
6、Linux判断用户具备的权限
7、特殊权限(附加权限)
8、acl访问控制列表
9、目录和数值权限
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
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] 属主:属组 文件/文件夹
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;