Linux基本权限

一、文件基本权限
1、基本权限的修改

-rw-r--r--
-- '-' 文件类型('-' 文件 'd' 目录 'l' 软链接文件)
-- rw-      r--      r--
   u所有都  g所属组   o其他人
-- 'r' 读  'w' 写  'x' 执行

chmod 命令

[root@localhost ~]# chmod [选项] 模式 文件名
选项:
-- -R:递归
模式:
-- [ugoa] [+-=] [rwx]
-- [mode=421]

修改权限的方式

[root@localhost ~]# chmod u+x cangls.av
#给文件所有者加执行权限
[root@localhost ~]# chmod g+w,o+w furong.av
#给所有组及其他加写入权限
[root@localhost ~]# chmod a=rwx fengjie.av
#给所有人加读、写、执行权限

权限的数字表示

-- r --- 4
-- w --- 2
-- x --- 1

rwxr-xr-x
7  5  5

2、权限的作用
1)权限对文件的作用

r:读取文件内容(cat more head tail)
w:编辑、新增、修改文件内容(vi echo)
-- 但是不包含删除文件
x:可执行

2)权限对目录的作用

r:可以查询目录下文件名(ls)

w:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切(touch rm mv cp)

x:可以进入目录(cd)

3、其他权限命令
1)修改文件的所有者

[root@localhost ~]# chown 用户名 文件名
例:
[root@localhost ~]# chown ds fengj.av

2)修改文件的所属组

[root@localhost ~]# chgrp 组名 文件名
例如:
[root@localhost ~]# chgrp group1 fengj.av

3)让用户对文件及目录拥有一定的权限
要求:
— 拥有一个test目录
— 让某用户拥有所有的权限
— 让另一用户有查看权限
— 其他所有人不许查看这个目录

二、文件默认权限
1、查看默认权限的命令
umask
#查看默认权限

0022
-- 第一位0:文件特殊权限
-- 022:文件默认权限

2、文件的默认权限
#文件默认不能建立为执行文件,必须手工赋予执行权限
#所有文件默认权限最大为666
#默认权限需要换算成字母再相减
#建立文件之后的默认权限,为666减去umask值

例如:
-- 文件默认最大权限666 umask值022
-- -rw-rw-rw-  减去  -----w--w- 等于 -rw-r--r--
例如
-- 文件默认最大权限666 umask值033
-- -rw-rw-rw-  减去  -----wx-wx 等于 -rw-r--r--

3、目录的默认权限
# 目录默认权限最大为777
# 默认权限需要换算成字母再相减
# 建立文件之后的默认权限,为777减去umask值
例如:

-- 目录默认最大权限为777 umask值022
-- -rwxrwxrwx 减去 -----w--w- 等于 -rwxr-xr-x

4、修改umask值
# 临时修改
[root@localhost ~]# umask 0002

# 永久修改
[root@localhost ~]# vi /etc/profile

三、ACL权限
1、ACL权限简介与开启
1)ACL权限简介
Introduction of ACL

2)查看分区ACL权限是否开启

[root@localhost ~]# dumpe2fs -h /dev/sda5
Default mount options:    user_xattr acl
#dumpe2fs命令是查询指定分区详细文件系统信息的命令
选项:
-- -h:仅显示超级块中信息,而不显示磁盘块组的详细信息

3)临时开启分区ACL权限

[root@localhost ~]# mount -o remount,acl /
#重新挂载根分区,并挂载加入acl权限

4)永久开启分区ACL权限

[root@localhost ~]# vi /etc/fstab
UUID=22029318-ae20-4bbd-b520-ce5d6fd8d4d5 /     ext4    defaults        1 1
# 加入acl
UUID=22029318-ae20-4bbd-b520-ce5d6fd8d4d5 /     ext4    defaults,acl    1 1
[root@localhost ~]# mount -o remount /
# 重新挂载文件系统或重启动系统,使修改生效

2、查看与设定ACL权限
1)查看ACL命令

[root@localhost ~]# getfacl 文件名
# 查看acl权限

2)设定ACL权限的命令

[root@localhost ~]# setfacl 选项 文件名
选项:
-- -m:设定ACL权限
-- -x:删除指定的ACL权限
-- -b:删除所有的ACL权限
-- -d:设定默认ACL权限
-- -k:删除默认ACL权限
-- -R:递归设定ACL权限

3)给用户设定ACL权限
Introduction of ACL

[root@localhost ~]# useradd tony
[root@localhost ~]# groupadd stu
[root@localhost ~]# mkdir /av
[root@localhost ~]# chown tony:stu /av
[root@localhost ~]# chmod 770 /av
[root@localhost ~]# useradd lw
[root@localhost ~]# setfacl -m u:lw:rx /av
# 给用户lw赋予r-x权限,使用"u:用户名:权限"格式

4)给用户组设定ACL权限

[root@localhost ~]# groupadd tgroup2
[root@localhost ~]# setfacl -m g:tgroup2:rwx /av
# 为组tgroup2分配ACL权限。使用"g:组名:权限"格式

3、最大有效权限与删除ACL权限
1)最大有效权限mask
# mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限”相与“才能得到用户的真正权限

修改最大有效权限

[root@localhost ~]# setfacl -m m:rx 文件名
# 设定mask权限为r-x。使用“m:权限”格式

2)删除ACL权限

[root@localhost ~]# setfacl -x u:用户名 文件名
# 删除指定用户的ACL权限

[root@localhost ~]# setfacl -x g:组名 文件名
# 删除指定用户组的ACL权限

[root@localhost ~]# setfacl -b 文件名
# 会删除文件的所有的ACL权限

4、默认ACL权限和递归ACL权限
1)递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。
# setfacl -m u:用户名:权限 -R 目录名

默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
# setfacl -m d:u:用户名:权限 目录名

四、sudo权限
1、sudo权限
# root把本来只能超级用户执行的命令赋予普通用户执行。
# sudo的操作对象是系统命令

2、sudo使用

[root@localhost ~]# visudo
# 实际修改的是/etc/sudoers文件

root      ALL=(ALL) ALL
#用户名  被管理主机的地址=(可使用的身份)  授权命令(绝对路径)

#  %wheel  ALL=(ALL)    ALL
# %组名   被管理主机的地址=(可使用的身份)  授权命令(绝对路径)

五、文件特殊权限
1、SetUID
1)SetUID的功能
只有可以执行的二进制程序才能设定SUID权限
命令执行要对该程序拥有x(执行)权限
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

2)设定SetUID的方法

4代表SUID
-- chmod 4755 文件名
-- chmod u+s 文件名

passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码

[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 2月  22 2012 /usr/bin/passwd

cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容

[root@localhost ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 45224 11月 22 2013 /bin/cat

3)取消SetUID的方法
chmod 0755 文件名

chmod u-s 文件名

4)危险的SetUID
# 关键目录应严格控制写权限。比如”/”、”/usr”等
# 用户的密码设置要严格遵守密码三原则
# 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限

新建suid权限文件列表suid.log

[root@localhost ~]# find / -perm -4000 -o -perm -2000 > suid.log

suid_check.sh

#!/bin/bash

find / -perm -4000 -o -perm -2000 > /tmp/setuid.check
#搜索系统中所有拥有SUID和SGID的文件,并保存在临时目录中
for i in $(cat /tmp/setuid.check)
#做循环,每次循环取出临时文件中的文件名
do
        grep $i /root/suid.log > /dev/null
        #对比这个文件名是否在模板文件中
        if [ "$?" != "0" ]
        #检测上一个命令的返回值,如果不为0,证明上一个命令报错
        then
                echo `date +"%Y-%m-%d %H:%M:%S"` "$i isn't in listfile!" >> /root/suid_log_$(date +%F)
                #如果文件名不再模板文件中,则输出错误信息,并把报错记录到日志中
        fi
done
rm -rf /tmp/setuid.check
#删除临时文件

2、SetGID
1)SetGID针对文件的作用
# 只有可执行的二进制程序才能设置SGID权限
# 命令执行者要对该程序拥有(执行)权限
# 命令执行在执行程序的时候,组身份升级为该程序文件属组
# SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

2)SetGID针对目录的作用
# 普通用户必须对此目录拥有r和x权限,才能进入此目录
# 普通用户在些目录中的有效组会变成此目录的属组
# 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

3、Sticky BIT
1)SBIT粘着位作用
# 粘着位目前只对目录有效
# 普通用户对该目录拥有w和x权限,即普通用户可以在些目录拥有写入权限
# 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不删除其他用户建立的文件

2)设置与取消粘着位
设置粘着位
— chmod 1755 目录名
— chmod o+t 目录名

取消粘着位
— chmod 0777 目录名
— chmod o-t 目录名

六、不可改变位权限

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据