linux每类用户拥有三种权限,M20 – 1- 第三周博客:Linux中的权限以及特殊权限

上一篇讲到了用户与用户组,相信大家都明白了Linux中用户与用户组的含义和用处,那接下来讲的就是Linux中设置用户与用户组有使用权限。

Linux用户权限

何为权限,权限(privilege)是指某个特定的用户具有特定的系统资源使用权力,而权限又有哪几种呢。

Linux用户中主要针对三类着三种权限:读、写、执行,而Linux中存在着目录与文件,而目录的权限代表的含义与文件却又不一样,接下对目录与文件的权限详解:

文件的权限和属主属组主要针对三类对象进行定义:

owner:属主, u

group: 属组, g

other: 其他, o

r: 可以使用ls查看此目录中文件列表

w: 可在此目录中创建文件,也可删除此目录中的文件

x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录

X:只给目录x权限,不给文件x权限

每个文件针对每类访问者都定义了三种权限:

r: Readable

w: Writable

x: eXcutable

r: 可使用文件查看类工具获取其内容

w: 可修改其内容

x: 可以把此文件提请内核启动为一个进程

如何查看文件的权限有属于那些用户呢,请看下图:

3c8ce6380daa33c267ccb0e2e66a02de.png

从上图可以看出普通文件"install.log"的属主(所有者)为root,而属主的权限为读(r)写(w)权限,属组(所属组)也为root,属组的权限为读(r),而其他用户的权限为读(r),(对于root超级管理员而言,实际是有任何的权限),用数字表示该用户的权限应为"0644",为何会有0呢,"0"这个数字是特殊权限,下面将会将特殊权限,而数字表示简写为"644",如何对文件添加权限和文件的属主属组呢,Linux系统中有很多命令是给用户加权限的,但是有两个常用的命令对文件添加权限和属主和属组:

chown命令

简介:

chown - change file owner and group

格式:

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...

选项:

-R: 递归

实例1:

[root@centos6 ~]# id user1

uid=3000(user1) gid=3000(user1) groups=3000(user1)

[root@centos6 ~]# ls -l install.log

-rw-r--r--. 1 root root 45324 Aug  5 19:24 install.log

[root@centos6 ~]# chown user1.user1 install.log   #将普通文件"install.log"的属主和属组更改为user1用户

[root@centos6 ~]# ls -l install.log

-rw-r--r--. 1 user1 user1 45324 Aug  5 19:24 install.log

chgrp 命令

简介:

chgrp - change group ownership

格式:

chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

选项:

-R:递归

实例1:

[root@centos6 ~]# ls -l install.log

-rw-r--r--. 1 user1 user1 45324 Aug  5 19:24 install.log

[root@centos6 ~]# man chgrp

[root@centos6 ~]# chgrp root install.log  #只更改普通文件"install.log"的属组为root

[root@centos6 ~]# ls -l install.log

-rw-r--r--. 1 user1 root 45324 Aug  5 19:24 install.log

chmod 命令

简介:

chmod - change file mode bits

格式:

chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

chmod [OPTION]... --reference=RFILE FILE...

选项:

-R: 递归修改权限

--reference=RFILE FILE...: 参考RFILE文件的权限,将FILE的修改为同RFILE;

字母加添法:

修改一类用户的所有权限:

u= g= o= ug= a= u=,g=

修改一类用户某位或某些位权限

u+ u-g+ g-o+ o-a+ a-+ -

实例1:

[root@centos6 ~]# ls -l install.log

-rw-r--r--. 1 user1 root 45324 Aug  5 19:24 install.log

[root@centos6 ~]# chmod ug=rwx install.log  #给普通文件"install.log"的属主属组添加r(读)w(写)x(执行)权限

[root@centos6 ~]# ls -l install.log

-rwxrwxr--. 1 user1 root 45324 Aug  5 19:24 install.log

给用户添加权限还有一种方式为数字修改法,而数字添加总共有几种模式呢,请看下面:

这种表示法为八进制:

--- 000 0

--x 001 1

-w- 010 2

-wx 011 3

r-- 100 4

r-x 101 5

rw- 110 6

rwx 111 7

因此可以看作为:

3c8ce6380daa33c267ccb0e2e66a02de.png

例如:640: rw-r-----    rwxr-xr-x: 755

那在这里很多人就问了,创建文件和目录的权限是多少呢,实际是由文件或目录的"默认权限-umask",何为umask,(Tips:超级管理员的目录的默认权限为777,文件的默认权限为666,umask是0022;非特权用户umask是0002)

umask 命令

简介:

Display or set file mode mask.

格式:

umask [-p] [-S] [mode]

选项:

–S:模式方式显示

–p:输出可被调用

实例1:

[root@centos6 ~]# umask -p

umask 0022

[root@centos6 ~]# umask -S

u=rwx,g=rx,o=rx

实例2:

[root@centos6 ~]# umask 0002

[root@centos6 ~]# umask

0002

而umask的默认值的定义是由配置文件定义的:

[root@centos6 ~]# grep -C5 'umask' /etc/bashrc

PATH=$1:$PATH

fi

esac

}

# By default, we want umask to get set. This sets it for non-login shell.

# Current threshold for system reserved uid/gids is 200

# You could check uidgid reservation validity in

# /usr/share/doc/setup-*/uidgid file

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then   #当前登录的用户名的UID是否大于199和当前用户的id名称与当前用户的基本组id是否一致,如果两种情况满足,umask就是002,如果其中一个不满足,uamsk就是022

umask 002

else

umask 022

fi

# Only display echos from profile.d scripts if we are no login shell

# and interactive - otherwise just process them to set envvars

for i in /etc/profile.d/*.sh; do

可以在个人配置文件中定义

用户设置:~/.bashrc

全局设置:/etc/bashrc

Linux用户的特殊权限

特殊权限:SUID, SGID, Sticky

三种常用权限:r, w, x user, group, other

安全上下文

前提:进程有属主和属组;文件有属主和属组

(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组

(3) 进程访问文件时的权限,取决于进程的发起者

(a) 进程的发起者,同文件的属主:则应用文件属主权限

(b) 进程的发起者,属于文件属组;则应用文件属组权限

(c) 应用文件“其它”权限

文件上的特殊权限:SUID, SGID, Sticky

特殊权限:SUID

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属主为原程序文件的属主

SUID只对二进制可执行程序有效

SUID设置在目录上无意义

权限设定:chmodu+sFILE...;chmodu-s FILE...

特殊权限:SGID

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属主为原程序文件的属主

SUID只对二进制可执行程序有效

SUID设置在目录上无意义

权限设定:chmodu+sFILE...;chmodu-s;FILE...

目录上的特殊权限:SUID, SGID, Sticky

默认情况下,用户创建文件时,其属组为此用户所属的主组

一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组

通常用于创建一个协作目录

权限设定:chmodg+sDIR...;chmodg-s DIR...

特殊权限:Sticky 位

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

sticky 设置在文件上无意义

权限设定:chmodo+tDIR...;chmodo-t DIR...

例如:

ls-ld/tmp

drwxrwxrwt12rootroot4096Nov215:44/tmp

因此特殊权限数字法也是有八种模式

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

写法:chmod4777 /tmp/a.txt

权限位映射

SUID: user,占据属主的执行权限位

s: 属主拥有x权限

S:属主没有x权限

SGID: group,占据属组的执行权限位

s: group拥有x权限

S:group没有x权限

Sticky: other,占据other的执行权限位

t: other拥有x权限

T:other没有x权限

设定文件特定属性chattr、lsattr命令

chattr 命令

简介:

chattr - change file attributes on a Linux file system

格式:

chattr [ -RVf ] [ -v version ] [ mode ] files...

实例1:

chattr +i 不能删除,改名,更改

[root@centos6 ~]# chattr +i anaconda-ks.cfg

[root@centos6 ~]# rm anaconda-ks.cfg

rm: remove regular file `anaconda-ks.cfg'? y

rm: cannot remove `anaconda-ks.cfg': Operation not permitted

[root@centos6 ~]# mv anaconda-ks.cfg anaconda-ks.cfg.bak

mv: cannot move `anaconda-ks.cfg' to `anaconda-ks.cfg.bak': Operation not permitted

[root@centos6 ~]# echo "abc" > anaconda-ks.cfg

-bash: anaconda-ks.cfg: Permission denied

lsattr 命令

简介:

lsattr - list file attributes on a Linux second extended file system

格式:

lsattr [ -RVadv ] [ files...  ]

实例1:

[root@centos6 ~]# lsattr anaconda-ks.cfg

----ia-------e- anaconda-ks.cfg

访问控制列表

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。

CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:tune2fs –o acl/dev/sdb1;mount –o acl/dev/sdb1 /mnt

ACL生效顺序:所有者,自定义用户,自定义组,其他人

为多用户或者组的文件和目录赋予访问权限rwx

mount -o acl /directory

getfacl file |directory

setfacl -m u:wang:rwx file|directory

setfacl -Rm g:sales:rwX directory

setfacl -M file.acl file|directory

setfacl -m g:salesgroup:rw file| directory

setfacl -m d:u:wang:rx directory

setfacl -x u:wang file |directory

setfacl -X file.acl directory

ACL中的权限设置

ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限

getfacl可看到特殊权限:flags

默认ACL权限给了x,文件也不会继承x权限。

base ACL 不能删除

setfacl-k dir 删除默认ACL权限

setfacl-b file1清除所有ACL权限

getfaclfile1 | setfacl--set-file=-file2 复制file1的acl权限给file2

ACL中的权限定义

mask只影响除所有者和other的之外的人和组的最大权限

Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)

用户或组的设置必须存在于mask权限设定范围内才会生效。setfacl-m mask::rxfile

--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.如:

setfacl --set u::rw,u:wang:rw,g::r,o::-file1

备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

#getfacl -R /tmp/dir1 > acl.txt

#setfacl -R -b /tmp/dir1

#setfacl -R --set-file=acl.txt /tmp/dir1

#getfacl -R /tmp/dir1

原创文章,作者:Aleen,如若转载,请注明出处:http://www.178linux.com/29809

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值