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
原文地址:http://yinsuifeng.blog.51cto.com/10173491/1908527