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://blog.51cto.com/12674559/2103502