您的位置:首页 > 运维架构 > Linux

Linux权限管理

2015-11-30 21:55 337 查看

基本权限

1.基本权限的修改

"-rw-r--r--"这10位代表的含义如下

-:

常见文件类型

|-- -文件

|-- d目录

|-- |软链接文件

rw-:u所有者

r--:g所属组

r--:o其他人

|-- r读~4

|-- w写~2

|-- x执行~1

chmod修改权限命令

修改文件权限方法:(假设文件名aa)

1.chmod u+x aa //给拥有者u增加x权限

chmod u+x,g+w aa //给拥有者u增加x权限,所属组增加写权限

2.chmod u-x aa //给拥有者取消x权限

3.chmod u=rwx aa //给拥有者u的权限是rwx

chmod u=rwx,g=rw aa //给拥有者u的权限是rwx,给所属组权限是rw

4.chmod a=rw aa //给u,g,o权限都设置为rw

5.chmod 755 aa //aa的权限为rwx r-x r-x

777、755、644

2.权限的作用

权限对文件的作用

|--r:读取文件内容(cat more head tail)

|--w:编辑、新增、修改文件内容(vi echo),但是不包含删除文件

|--数据放在文件中,文件放在目录中;文件可以删数据,目录可以删文件

|--x:可执行(./)

权限对目录的作用

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

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

|--x:可以进入目录(cd)

对文件来讲:最高权限是 x

对目录来讲:最高权限是 w

对目录来讲,只能赋予0、5、7三种权限才有意义,赋予4、1、6没有丝毫意义

对目录来讲,没有必要这么极端,给其他普通用户都赋予写权限,对文件不够安全,只需更改所有者,并给所有者赋予足够的权限就够了

详见tony视频案例演示:root用户和user1普通用户,目录和文件的权限管理。

3.其他权限命令

改变文件所有者:chown 用户名 文件名

chown user1 123

chmod 755 123

改变文件所属组:chgrp 组名 文件名

chgrp user1 123

chown user1:user1 123也可以~

练习:让用户对文件及目录拥有一定的权限

要求:

|--拥有一个av目录

|--让加藤老师拥有所有的权限(7)

|--让本课程学员有查看的权限(5)

|--其他所有人不许查看这个目录(0)

代码:

cd /

mkdir av

groupadd user

useradd jty

passwd jty

123

useradd user1

passwd user1

123

useradd user2

passwd user2

123

gpasswd -a user1 user

gpasswd -a user2 user

chown jty:user av

chmod 750 av

ll -d av --> drwxr-xr-x. 2 jty user 4096 11月 11 00:54 av

总结:

分配文件基本权限时的核心原则:在最小权限情况下能够实现要求即可!

4.文件默认权限

查看默认权限:umask

返回:0022

|--第一位0:文件特殊权限

|--022:文件默认权限

新建文件,默认权限:644

新建目录,默认权限:755

文件的默认权限:

|--文件默认不能建立为执行文件,必须手工赋予执行权限

|--所以文件默认权限最大为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--

目录的默认权限:

|--目录默认权限最大为777

|--默认权限需要换算成字母再相减

|--监理文件之后的默认权限,为777减去umask值

例如:

目录默认最大权限为777,umask值022

-rwxrwxrwx减去-----w--w-等于-rwxr-xr-x

修改umask值

|--临时修改:umask 0022

|--永久修改:vi /etc/profile

特殊权限

一、ACL权限

1.ACL权限简介与开启

ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。

ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于用户身份不足、需要特殊权限的使用情况。

dumpe2fs -h /dev/sda5

dumpe2fs查询指定分区详细文件系统信息的命令

-h 仅显示超级块中信息,而不显示磁盘块组的详细信息

临时开启分区ACL权限:

mount -o remount,acl /

重新挂载根分区,并加入acl权限

永久开启分区ACL权限:

vi /etc/fstab 加入acl

mount -o remount /

重新挂载文件系统或重启系统,使修改生效

2.查看与设定ACL权限

查看ACL权限

|--getfacl 文件名

设定ACL权限

|--setfacl 选项 文件名

|-- -m 设定ACL权限

|--u:用户名:权限,给用户设定ACL权限

|--g:组名:权限,给用户组设定ACL权限

|-- -x 删除指定的ACL

|-- -b 删除所有的ACL权限

|-- -d 设定默认ACL权限

|-- -k 删除默认ACL权限

|-- -R 递归设定ACL权限

例如:

useradd laowang

useradd tony

groupadd stu

mkdir av

chown tony:stu av

chmod 770 av

setfacl -m u:laowang:rx av --> 给用户laowang赋予av文件的rx权限

groupadd tgroup2

setfacl -m g:tgroup:rwx av 为组tgroup2分配ACL权限

3.最大有效权限与删除ACL权限

mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限"相与"才能得到用户的真正权限

修改最大有效权限

setfacl -m m:rx 文件名

设定mask权限为r-x,使用"m:权限"格式

删除ACL权限

|--删除指定用户的ACL权限

|--setfacl -x u:用户名 文件名

|--删除指定用户组的ACL权限

|--setfacl -x g:组名 文件名

|--删除文件的所有的ACL权限

|--setfacl -b 文件名

4.默认ACL权限和递归ACL权限

|--递归ACL权限

|--递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限

|--setfacl -m u:用户名:权限 -R 目录名

|--递归权限仅能赋予目录,不能赋予文件

|--递归权限会出现权限溢出,很难控制,所以递归权限尽量少用

|--默认ACL权限

|--默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限

|--setfacl -m d:u:用户名:权限 目录名

二、sudo权限

root把本来只能超级用户的命令赋予普通用户执行

sudo的操作对象是系统命令

visudo

#实际修改/etc/sudoers文件

例如:

visudo

在结尾行加入:

root ALL=(ALL) ALL

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

su user1 #切换成普通用户

sudo -l #查看可用的sudo命令

sudo /sbin/shutdown -r now #普通用户执行sudo赋予的命令

再例如:

visudo

user1 ALL=(ALL) /sbin/shutdown -r now

user1 ALL=/usr/sbin/useradd

user1 ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root

#此时,虽然普通用户可以新增用户和修改密码,但是我们不能赋予普通用户给root用户修改密码的权限!

三、文件特殊权限

-->特殊权限尽量少修改!

1.SetUID

|--SetUID针对执行文件的功能

|--只有可执行二进制程序才能设定SUID权限

|-- s = S + x

|--命令执行者要对该程序拥有x(执行)权限

|--命令执行者在执行该程序时获得该程序文件属主身份(在执行程序的过程中灵魂附体为文件的属主)

|--例如:普通用户可以通过passwd修改自己的密码,理由:ll /usr/bin/passwd --> -rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd

|--passwd是可执行文件,passwd此时的命令执行者user1对passwd拥有x执行权限,且passwd拥有SetUID权限,

|--所以在普通用户user1执行passwd过程中会灵魂附体为root用户,可以修改自己的密码。

|--SetUID权限只在程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

|--再如,ll /bin/cat --> -rwxr-xr-x /bin/cat
ll /etc/shadow --> ---------- /etc/shadow

|--shadow文件只有root管理员可以查看,cat命令没有SetUID权限,所以普通用户执行cat命令过程中不具备root用户身份,不能查看/etc/shadow文件的内容

|--设定SetUID的方法

|--4代表SUID

|--chmod 4755 文件名

|--chmod u+s 文件名

|--取消SetUID的方法

|--chmod 0755 文件名

|--chmod u-s 文件名

|--危险的SetUID

|--关键目录应该严格控制写权限,比如"/"、"/usr"等

|--对系统默认应该具有SUID权限的文件做一列表,写个脚本check_uid.sh,定时检查有没有这之外的文件被设置了SUID权限!

|--如:chmod 4755 /bin/vi --> 给vi赋予了SUID权限,那么普通用户user1在执行vi命令的过程中,也可以执行 vi /etc/shadow 的命令,修改root用户的密码,这很危险!

2.SetGID

|--SetGID针对文件的作用

|--只有可执行二进制程序才能设定SGID权限

|--命令执行者要对该程序拥有x(执行)权限

|--命令执行执行程序时,组身份升级为该程序文件的属组

|--GID权限只在程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

|--例如:usr/bin/locate具有SetGID身份,普通用户也可以使用locate查询命令

|--ll /usr/bin/locate

|-- -rwx--s--x. root slocate /usr/bin/locate

|--ll /var/lib/mlocate/mlocate.db

|-- -rw-r-----. root slocate /var/lib/mlocate/mlocate.db

|--/usr/bin/locate是可执行二进制程序,可以赋予SGID(通过ll命令发现,locate命令已经被赋予了SGID)

|--执行用户user1对/usr/bin/locate命令拥有执行权限(others用户拥有x权限)

|--执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限

|--所以普通用户user1可以使用locate命令查询mlocate.db数据库

|--命令结束,user1用户的组身份返回为user1自己所在组user

|--SetGID针对目录的作用

|--普通用户必须对此目录必须拥有r和x权限,才能进入此目录

|--普通用户在此目录中的有效组会变成此目录的属组

|--若普通用户对此目录拥有w权限,新建的文件的默认属组是这个目录的属组

|--例如:在赋予某个目录SGID权限之前,普通用户在此目录中新建文件,所属组会是普通用户所属组

|--但是如果赋予了该目录SGID权限之后,再在此目录中新建文件,该文件的默认所属组会是该目录的所属组

|--cd /tmp/

|--mkdir test

|--chmod g+s test

|--ll -d test

|--chmod 777 test

|--su user1

|--cd /tmp/test/

|--touch abc

|--ll --> -rw-rw-r--. 1 user1 root cangls

|--设定SetGID

|--2代表SGID

|--chmod 2755 文件名

|--chmod g+s 文件名

|--取消SetGID

|--chmod 0755 文件名

|--chmod g-s 文件名

3.Sticky BIT

|--SBIT粘着位作用

|--粘着位目前只对目录有效

|--普通用户对该目录拥有7权限

|--如果没有粘着位,普通用户拥有w权限,所以可以删除此目录下的所有文件,包括其他用户建立的文件

|--一旦赋予粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件

|--例如:/tmp目录就具有SBIT权限,防止用户误删除其他用户的文件

|--ll -d /temp/

|--drwxrwxrwt. /tmp/

|--设置粘着位

|--chmod 1777 目录名

|--chmod o+t 目录名

|--取消粘着位

|--chmod 0777 目录名

|--chmod o-t 目录名

四、不可改变位权限

|--chattr命令格式

|--charrt [+-=][选项] 文件或目录

|-- +:增加权限

|-- -:删除权限

|-- =:等于某权限

|-- i:

|--如果对文件设置i属性,那么不允许对文件进行删除,改名也不能添加和修改数据

|--如果对目录设置i属性,那么只能修改目录下文件的数据,但不能建立和删除文件

|-- a:

|--如果对文件设置a属性,那么只能在文件中增加数据,但不能删除也不能修改数据

|--文件只能用 echo >> 输出重定向,向文件中添加数据,不可以使用vi

|--如果对目录设置a属性,那么只允许在目录中建立和修改文件,但不允许删除

|--lsattr命令格式

|--lsattr 选项 文件名

|-- -a 显示所有文件和目录

|-- -d 仅列出目录本身的属性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: