1, 文件权限
2, 文件和目录 rwx 权限说明
文件 rwx 权限:
r : 可读, 具有读取文件内容的权限(), 如果没有 r,vi/vim 编辑器提示无法编辑(可强制编辑),echo 可以追加或重定向.
w : 可写, 具有修改文件内容的权限
x : 可执行, 具有执行文件的权限.
需满足: 文件本身具有可执行权限; 普通用户还需具有 r 权限; root 用户只要 x 权限就可执行. linux 中可执行文件:*.sh *.py *.perl 等等.
目录 rwx 权限:
r : 可读, 查看目录下面文件及子目录的权限, 即 ls dir
如果没有 x, 不能进入到目录里, 即无法 cd dir ; 如果没有 x,ls 可以看到所有文件名, 但会提示无权访问目录下的文件.
w : 可写, 具有修改, 增加, 删除目录内文件名的权限(需要 x 权限配合)
x : 可执行, 具有进入目录的权限. 例如 cd dir; 但是没有 r 无法列表文件或目录, 没有 w 无法修改, 增加, 删除
3, 删除文件 (或者修改文件名) 受父目录权限控制, 和文件本身权限无关, 删除文件 (或者修改文件名) 是在操作文件的上级目录的 block 中与文件名和 inode 相关联的数据, 因此和上级目录权限有关.
4, 读取 / data/test 的过程
5, 常用命令
改变文件或目录用户权限: chmod [数字权限或字符权限] [文件名或目录名] .
加 -R (递归) 表示把目录中的文件或子目录权限改变.
数字权限: r :4 w:2 x:1 -:0
字符权限 : u: 所属主 g: 所属组 o: 其他人 a: 相当于 ugo +: 添加权限 -: 取消权限 =: 取消其他权限只添加给定权限
改变文件或目录所属主: chown [选项] [属主] [文件名或目录名]
选项: -R 表示把指定目录中的文件或子目录的所属主改变.
改变文件或目录所属组: chown :[属组] [文件名或目录名]
改变文件或目录的所属主和所属组: chown 用户. 用户组 [文件名或目录名]
改变文件或目录所属组: chgrp [选项] [属组] [文件名或目录名]
选项: -R 表示把指定目录中的文件或子目录的所属组改变.
6, 默认权限分配命令: umask
每个 linux 系统终端都拥有一个 umask, 可以用来确定新创建文件或目录的默认权限. 由于在系统中创建一个文件默认权限 666, 创建一个目录默认权限 777, 权限对外开放比较大, 所以设置了 umask 权限掩码之后, 默认的文件目录权限减去 umask 值才是实际的文件目录权限.
umask 一共 4 位数字, 第一位用于定义特殊权限, 后三位表示权限掩码.
对于 超级用户, umask 默认值是 0022, 超级用户 (用户 root 及用户组 root) 创建目录默认权限 :777-022=755, 创建文件默认权限: 666-022= 644, 是相对安全的权限.
对于普通用户, umask 默认值是 0002, 普通用户创建目录默认权限: 777-002=775, 创建文件默认权限: 666-002=664.
umask 设定值如果有奇数位, 777 ( 666 )-umask, 对应的奇数位再加 1, 才是创建目录或文件的默认权限.
umask 设定值如果全为偶数, 777(666)-umask, 就是创建目录或文件的的默认权限.
查看 umask 值 : umask
改变 umask 值 : umask -S [设定值] (临时设置, 重启无效)
如果需要永久生效, 则修改 / etc/profile 或者 / etc/bashrc 文件, 在文件末尾加上 umask [设定值] ./etc/profile 和 /etc/bashrc 都可以用于用户登录时自动执行某些操作, 区别是 / etc/profile 只是在用户第一次登录时被执行, 而 / etc/bashrc 在用户每次登录加载 bash shell 时都会被执行. 因此, 修改 / etc/profile 只能对新创建的用户生效,/etc/bashrc 对所有登录用户都生效.
7, 特殊权限
Linux 文件的特殊权限是用于弥补一般权限不能实现的功能, 是针对于文件设置的一种特殊的功能.
Linux 文件的特殊权限:
SUID: 让执行者临时拥有属主的权限(仅对拥有执行权限 x 的二进制程序有效).s(有 x 时) , S( 无 x 时 ).
SGID: 让执行者临时拥有属组的权限(对拥有执行权限 x 的二进制程序设置). s(有 x 时),S(无 x 时).
主要用在目录中, 当某个目录设置了 sgid, 在该目录中新创建的文件具有该目录的所属组权限, 使得在多个用户之间共享目录变得简单.
SBIT(Sticky Bit): 只可管理自己的数据而不能删除他人文件(仅对目录有效). t( 有 x 时 ) ,T(无 x 时).
Linux 文件的特殊权限的设置:
SUID:4 SGID:2 SBIT:1
设置 SUID: chmod 4755 [文件名或目录名] 或者 chmod u+s [文件名或目录名]
设置 SGID: chmod 2755 [文件名或目录名] 或者 chmod g+s [文件名或目录名]
设置 SBIT(粘滞位): chmod 1755 [目录名]
8, 用户和用户组管理
用户管理:
useradd : 创建用户, 常会涉及到更改 / etc/passwd /etc/shadow /etc/group /etc/gshadow 文件.
userdel : 删除用户, 常会涉及到更改 / etc/passwd /etc/shadow /etc/group /etc/gshadow 文件, 企业环境中慎用 userdel -r!!!.
usermod : 修改用户信息, 常会涉及到更改 / etc/passwd /etc/shadow /etc/group /etc/gshadow 文件.
passwd : 设置或修改密码, 更改 / etc/shadow 文件.
chage: 修改密码有效期, 更改 / etc/shadow 文件.
id : 查看用户的 UID,GID 及所属的用户组.
w: 查看登录用户并显示在做什么
who: 查看登录用户
last 或 lastb: 查看登录用户历史
lastlog: 查看所有用户最近登录情况
su: 切换用户
sudo: 后接命令, 表示不需要 root 密码就可以执行只有 root 才可以执行的权限. 这个权限可以通过 visudo 命令 (推荐用法) 或者直接编辑 / etc/sudoers(配置完后要用 visudo -c 检查语法)来实现.
visudo: 编辑 sudo 配置文件, 配置完后执行 visudo -c 检查.
在 / etc/sudoers 中: 别名和具体授权配置的关系, 一般应用于多个系统用户, 需要分类, 分层次管理, 需注意以下:
(1)命令别名下的成员必须是文件或目录的绝对路径;
(2)别名名称包含大写字母, 数字, 下划线;
(3)一个别名下的成员之间要用半角状态下 "," 分隔开, 成员必须是有效存在的;
(4)别名成员要与别名一一对应;
(5)别名规则是以每行为单位, 如要换行要用 \ 来续行;
(6)指定切换的用户要用 () 括起来, 如无 () 默认 root 用户,(ALL)代表切换到所有用户;
(7)无需密码直接运行的命令, 应加上 NOPASSWD: 参数;
(8)禁止某类命令或程序运行, 要在前面加!, 放在允许执行的命令的后面;
(9)用户组前面要加 %;
用户组管理:
groupadd: 创建用户组, 常会涉及到更改 / etc/group /etc/gshadow 文件.
groupdel : 删除用户组, 常会涉及到更改 / etc/group /etc/gshadow 文件.
groupmod: 更改用户组信息, 常会涉及到更改 / etc/group /etc/gshadow 文件.
用户和组的关系: 一对一, 一对多, 多对一, 多对多.
用户分类:
超级用户: UID=0,root
虚拟用户: UID=1-499, 满足文件或者服务启动的需要, 一般不能登录系统.
普通用户: UID=>=500, 由超级用户或者具有超级用户权限的用户创建.
与用户相关的文件:/etc/passwd(需要熟悉内容) /etc/shadow /etc/group /etc/gshadow
/etc/skel: 用来存放新用户配置文件的目录, 当添加用户时, 就会把新用户的配置文件复制到新添加用户家目录中, 默认情况下该目录下所有文件为隐藏文件, 通过修改, 添加, 删除 / etc/skel 下的文件: 为新用户统一提供初始化用户环境; 添加用户登录信息通知.
如: 终端提示符显示的是 - bash-4.1
原因是: 用户家目录下配置文件丢失. root 在 / root 下面的几个配置文件丢失, 丢失文件如下:
1,.bash_profile
2,.bashrc 这两个文件都是用户必备的文件.
修复要把这两个文件重新拷贝到 / root 下:
- cp /etc/skel/.bashrc /root/
- cp /etc/skel/.bash_profile /root/
注销 root, 重新登录就可以恢复正常.
/etc/login.defs: 用来定义创建用户时需要的一些用户配置信息, 如: 创建用户的家目录, UID 和 GID 的范围, 用户密码的有效期.(一般不需要修改)
/etc/default/useradd: 添加用户时默认的配置信息.
企业环境:
(1)密码需 8 位以上字母数字特殊字符复杂组合; 大企业用户密码采用 LDAP(相当于活动目录, openldap )对 linux 用户统一认证, 批量管理; 动态密码, 动态口令.
(2)企业环境下删除用户, 如果不确定有无重要数据不要删除用户家目录(慎用 userdel -r), 一般通过 vi /etc/passwd 注释掉要删除的用户, 观察一个月, 无异常再删除; 或者把登录 shell 改成 / sbin/nologin; 或 openldap 管理的, 在 ldap 库里删掉用户即可.
9,chattr,lsattr
chattr: 命令用于改变文件或目录属性, 通过 chattr 命令修改属性能够提高系统的安全性, 但是它并不适合所有的目录. chattr 命令不能保护 /,/dev,/tmp,/var 目录.
这两个命令是用来查看和改变文件, 目录属性的, 与 chmod 这个命令相比, chmod 只是改变文件的读写, 执行权限, 更底层的属性控制是由 chattr 来改变的.
如: chattr +i /etc/resolv.conf # 用 chattr 命令防止系统中某个关键文件被修改:
参数:
-R : 递归处理, 将指定目录下的所有文件及子目录一并处理.
-v < 版本编号> : 设置文件或目录版本.
-V : 显示指令执行过程.
+<属性> : 开启文件或目录的该项属性.
-<属性> : 关闭文件或目录的该项属性.
=<属性> : 指定文件或目录的该项属性.
属性:
a: 让文件或目录只能追加内容.
b: 不更新文件或目录的最后存取时间.
c: 将文件或目录压缩后存放.
d: 将文件或目录排除在倾倒操作之外.
i: 不得任意更动文件或目录.
s: 保密性删除文件或目录.
S: 即时更新文件或目录.
u: 预防意外删除.
lsattr : 显示 chattr 命令设置的文件属性.
lsattr [-adlRvV][文件或目录...]
参数:
-a 显示所有文件和目录, 包括以 "." 为名称开头字符的额外内建, 现行目录 "." 与上层目录 "..".
-d 显示, 目录名称, 而非其内容.
-l 此参数目前没有任何作用.
-R 递归处理, 将指定目录下的所有文件及子目录一并处理.
-v 显示文件或目录版本.
-V 显示版本信息.
来源: http://www.bubuko.com/infodetail-2562587.html