码迷,mamicode.com
首页 > 其他好文 > 详细

四、权限管理

时间:2017-03-21 00:19:57      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:基础权限、acl、隐藏属性、pam认证

4.1、基本权限

  文件的权限是针对文件的属主、属组以及其他用户对该文件的操作限制。通常文件的基本权限有r(可读)、w(可写)、x(可执行),这三个权限对于文件与目录又有着不同的含义。

文件:
  r:可读, 可以使用类似 cat 等命令查看文件内容;
  w:可写, 可以编辑此文件但并不具备删除文件本身的权限
  x: 可执行, eXacutable, 可以命令提示符下当作命令提交给内核运行。
目录: (若对目录有写和执行权限,那么用户可以删除目录中的文件,无论是否有权限)
  r: 可以对此目录执行ls以列出内部的所有文件;
  w: 可以在此目录创建文件;
  x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息
bash-4.1$ whoami 
mylinux
bash-4.1$ id
uid=500(mylinux) gid=500(mylinux) 组=500(mylinux)
bash-4.1$ ls -l                  #当前用户为mylinux即对下列文件属于其他用户,只有可读权限
总用量 16
-rw-r--r-- 1 root root   36 3月   8 17:05 abc2.txt
-rw-r--r-- 1 root root   33 3月   7 08:50 abc.txt
srwxrwxrwx 1 root root    0 11月 15 16:47 agent_cmd.sock
-rw-r--r-- 1 root root  477 3月   7 12:01 fstab
-rw-r--r-- 1 root root 1486 3月   5 00:00 passwd.txt

4.2、创建文件的默认权限 umask
  在创建一个文件或目录是,通常会有一个基本权限,此权限由unmsk(遮罩码)所确定,创建文件
基本权限为:666-umask,文件默认不能用赋予执行权限,若果算的的结果中有执行权限,其权限应该加1;创建目录的默认权限为777-umask。

umask: 查看遮罩码 
umask #: 设定遮罩码
bash-4.1$ umask 
0022
bash-4.1$ touch abc.txt
bash-4.1$ touch 123.txt
bash-4.1$ ls -l          #新建的文件权限666-022=644,新建的目录权限777-022=755
总用量 20
-rw-r--r-- 1 mylinux mylinux    0 3月  17 09:37 123.txt
drwxr-xr-x 2 mylinux mylinux 4096 3月  17 09:36 abc123

4.3、权限管理命令 chown/chgrp/chmod

chown [option]... [OWNER][:[GROUP]] FILE... 改变文件属主或属组
  -R: 递归 --reference=要参照的文件 要修改权限的文件
chgrp [OPTION]... GROUP FILE... 改变文件属组
  -R: 递归 --reference=要参照的文件 要修改权限的文件
chmod [OPTION]... MODE[,MODE]... FILE... 改变文件所属权限
[root@mylinux tmp]# ls -l
总用量 20
-rw-r--r-- 1 mylinux mylinux    0 3月  17 09:37 123.txt
drwxr-xr-x 2 mylinux mylinux 4096 3月  17 09:36 abc123
-rw-r--r-- 1 root    root      36 3月   8 17:05 abc2.txt
-rw-r--r-- 1 root    root      33 3月   7 08:50 abc.txt
srwxrwxrwx 1 root    root       0 11月 15 16:47 agent_cmd.sock
-rw-r--r-- 1 root    root     477 3月   7 12:01 fstab
-rw-r--r-- 1 root    root    1486 3月   5 00:00 passwd.txt
[root@mylinux tmp]# chown root 123.txt   #更改文件属主
[root@mylinux tmp]# chgrp root 123.txt   #更改文件属组
[root@mylinux tmp]# chmod 444 fstab      #更改文件权限为444
[root@mylinux tmp]# ls -l
总用量 20
-rw-r--r-- 1 root    root       0 3月  17 09:37 123.txt
drwxr-xr-x 2 mylinux mylinux 4096 3月  17 09:36 abc123
-rw-r--r-- 1 root    root      36 3月   8 17:05 abc2.txt
-rw-r--r-- 1 root    root      33 3月   7 08:50 abc.txt
srwxrwxrwx 1 root    root       0 11月 15 16:47 agent_cmd.sock
-r--r--r-- 1 root    root     477 3月   7 12:01 fstab
-rw-r--r-- 1 root    root    1486 3月   5 00:00 passwd.txt

4.4、文件访问控制列表 FACL

  ACL(Access Control List)访问控制列表,主要的目的是在提供传统的owner,group,others 的 read,write,execute 权限之外的细部权限配置。ACL 可以针对单一用户,文件或目录来进行r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。

  使用者 (user):可以针对使用者来配置权限;

  群组 (group):针对群组为对象来配置其权限;

  默认属性(mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;

setfacl
  -m: 设定额外的访问控制权限 u:用户名:权限 文件 [g:组名:权限 文件]
  -x: 取消额外的访问控制权限 u:用户名 文件 [g:组名 文件]
getfacl: 获取某一文件或目录 ACL 规范
chacl: 改变某一文件或目录 ACL 规范
[root@mylinux tmp]# getfacl 123.txt   #获取123.txt文件的ACL规范
# file: 123.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@mylinux tmp]# setfacl -m u:mylinux:rw 123.txt   #对用户mylinux赋予该文件rw权限
[root@mylinux tmp]# getfacl 123.txt 
# file: 123.txt
# owner: root
# group: root
user::rw-
user:mylinux:rw-                      #用户mylinux获取文件123.txt的读写权限
group::r--
mask::rw-
other::r--
[root@mylinux tmp]# setfacl -x u:mylinux 123.txt   #取消权限

4.5、文件的隐藏属性 chattr/lsattr

chattr :设置隐藏属性
  + : 增加某一个特殊参数, 其它原本存在参数则不动。
  - : 移除某一个特殊参数, 其它原本存在参数则不动。
  = : 设定一定, 且仅有后面接的参数
  a : 当设定 a 之后,这个文件将只能增加数据,而不能删除,只有root才能设定
  i : 让文件不能被删除、改名、设定连结也无法写入或新增数据
lsattr :查看隐藏属性
  -a : 将隐藏文件的属性也显示出来;
  -R : 连同子目录的数据也一并列出来
[root@mylinux tmp]# chattr +i 123.txt   #为文件增加隐藏权限
[root@mylinux tmp]# lsattr 123.txt      #隐藏权限查看
----i---------- 123.txt
bash-4.1$ lsattr 123.txt 
----i---------- 123.txt
bash-4.1$ echo ‘hello‘ >> 123.txt       #拥有i权限时,无法写入内容
bash: 123.txt: 权限不够
bash-4.1$ lsattr 123.txt         
--------------- 123.txt
bash-4.1$ echo ‘hello‘ >> 123.txt       #撤销i权限后,可以写入内容

4.6、 特殊权限位 SUID/SGID

  进程的安全上下文:

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

  (1) 任何一个可执行程序文件能不能启动为进程: 取决发起者对程序文件是否拥有执行权限;
  (2) 启动为进程之后, 其进程的属主为发起者; 进程的属组为发起者所属的组;
  (3) 进程访问文件时的权限, 取决于进程的发起者:
    (a) 进程的发起者, 同文件的属主: 则应用文件属主权限;
    (b) 进程的发起者, 属于文件的属组; 则应用文件属组权限;
    (c) 应用文件“ 其它” 权限;

  SUID: SUID 权限仅对二进制程序有效,执行者需要对该程序具有可执行权限,本权限仅有执行该程序的过程中有效,执行者将具有该程序所有者(owner)的权限。
  chmod u+s FILE chmod u-s FILE
[root@mylinux home]# ls -l /usr/bin/passwd 
-rwsr-xr-x 1 root root 30768 11月 24 2015 /usr/bin/passwd
[root@mylinux home]# ls -l /etc/shadow
---------- 1 root root 916 3月  17 09:33 /etc/shadow
#mylinux对于/usr/bin/passwd这个程序来说是具有 x 权限的,表示mylinux能运行passwd;
#passwd 的拥有者是root这个帐号;
#mylinux运行 passwd 的过程中,会『暂时』获得 root 的权限;
#/etc/shadow 就可以被mylinux所运行的 passwd 所修改。

  SGID 设置于文件:执行者对该程序来说,需要有可执行的权限,执行者执行的过程中将获得该程序用户组的支持。

chmod g+s FILE 

chmod g-s FILE

  SGID 设置于目录:用户对此目录有r与x的权限时,该用户能进入此目录,用户在此目录下的有效用户组将变成该目录的用户组;用户创建的新文件的用户组与此目录用户组相同。

chmod g+s dir 

chmod g-s dir

[root@mylinux tmp]# chgrp mylinux abc123     #对abc123目录赋予sgid权限
[root@mylinux tmp]# ls -ld abc123/        
drwxr-sr-x 2 root mylinux 4096 3月  17 09:36 abc123/
[root@mylinux tmp]# cd abc123/
[root@mylinux abc123]# touch 123             #通过root用户在此目录下创建文件
[root@mylinux abc123]# ls -l                 #生成的文件用户组为abc123目录的用户组
总用量 0
-rw-r--r-- 1 root mylinux 0 3月  20 19:11 123
  (Sticky)SBIT 只对目录有效:目录加上此权限时,用户在此目录中创建的文件或目录仅有自己
或 root 能删除。

chmod o+t DIR 

chmod o-t DIR

  s: 属主拥有 x 权限 

  S:属主没有 x 权限

  s: group 拥有 x 权限 

  S:group 没有 x 权限

  t: other 拥有 x 权限 

  T:other 没有 x 权限

[root@mylinux tmp]# chmod o+t abc123/                #对目录赋予SBIT权限
[root@mylinux tmp]# ls -ld abc123    
drwxr-srwt 2 root mylinux 4096 3月  20 19:11 abc123
bash-4.1$ whoami                     
mylinux
bash-4.1$ touch mylinux                    #使用mylinux用户在目录abc123下创建mylinux文件
bash-4.1$ ls
123  mylinux
bash-4.1$ ls -l
总用量 0
-rw-r--r-- 1 root    mylinux 0 3月  20 19:11 123
-rw-r--r-- 1 mylinux mylinux 0 3月  20 19:23 mylinux
bash-4.1$ whoami                          #使用mylinux1用户无法删除mylinux创建的文件
mylinux1
bash-4.1$ rm mylinux 
rm:是否删除有写保护的普通空文件 "mylinux"?y
rm: 无法删除"mylinux": 不允许的操作

4.7、 sudo 命令的使用
作用:
  1、 限制指定用户在指定主机主机上运行指定的管理命令;
  2、 详细记录用户基于 sudo 执行的命令的相关日志信息;
  3、 “ 检票系统” :用户第一次执行 sudo 会要求输入密码,用户会获得一个有固定存活时的“ 入场券”;默认为 5 分钟;
使用 sudo 的过程:
  1、 定义 sudo 授权, /etc/sudoers(配置文件/etc/sudoers)
    配置文件专用编辑命令: visudo
      语法格式: WHO HOST=(WHOM) COMMAND
                 %WHO HOST=(WHOM) COMMAND(组授权)
      别名格式: 别名本身必须使得全大写字母
              User_Alias NAME = User_List
              Runas_Alias NAME = Runas_List
              Host_Alias NAME = Host_List
              Cmnd_Alias NAME = Cmnd_List
      授权示例: gentoo ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel
  2、 sudo 命令的使用
    -l: 查看当前用户可执行的 sudo 命令
    -u 用户名 命令:以指定用户的身份运行后面的“ 命令” ;
    -k: 清除“ 入场券” ;
    -b 命令: 在后台运行指定的命令
    -e 文件路径: 不是执行命令, 而修改指定的文件;
    -p 提示语: 可以更改询问密码的提示语
       %u 变量来替换为用户名,%h 替换为主机名;

4.8、pam认证模块

     在过去,我们想要对一个使用者进行认证 (authentication),得要要求用户输入账号口令, 然后透过自行撰写的程序来判断该账号口令是否正确。也因为如此,我们常常得使用不同的机制来判断账号口令, 所以一台主机上面拥有多个各别的认证系统,也造成账号口令可能不同步的验证问题!为了解决这个问题因此有了 PAM (Pluggable Authentication Modules, 嵌入式模块) 的机制!

 /lib/security/*PAM 模块文件的实际放置目录;

  /etc/security/*: 其他 PAM 环境的配置文件;

  /usr/share/doc/pam-*/: 详细的 PAM 说明文件;

  /etc/pam.d/*: 每个程序个别的 PAM 配置文件;

配置文件语法格式:
  type control module-path module-arguments
  type
: 检查功能类别
    auth: 账号的认证和授权
    account: 与账号管理相关的非认证功能
    password: 用户修改密码时密码检查规则
    session: 用户获取到服务之前或使用服务完成之后要进行的一些附加性操作
    control: 用于控制认证成功或失败时要要采取的行为
简单机制:
  required: 此关不过, 仍需检测同一个栈中的其它模块, 最后返回 failure
   认证失败, 拥有参考其它模块意见基础之上的一票否决权;
  requisite: 一票否决, 此关不过, 立即返回 failure
  sufficient: 一票通过, 此关一过, 立即返回 OK
  optional: 可选模块
  include: 包含进来指定的其它配置文件中同名栈中的规则, 并进行检测;
复杂机制:
[status1=action1,status2=action2,....]
  status
: 返回状态,
  action: ok, done, die, ignore, bad, reset
module-path:
模块路径
  /lib64/security: 此目录下的模块引用时可使用相对路径;
module-arguments: 模块参数

技术分享

常见的模块:
  pam_unix.so,     pam_shells.so,   pam_deny.so,     pam_permit.so, 

  pam_securetty.so,pam_listfile.so, pam_cracklib.so, pam_limits.so

本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1908527

四、权限管理

标签:基础权限、acl、隐藏属性、pam认证

原文地址:http://yinsuifeng.blog.51cto.com/10173491/1908527

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!