与用户账户和组账户相关的文件:
/etc/passwd
/etc/group
/etc/shadow
/etc/gshadow
/etc/default/useradd
/etc/login.defs
/etc/skel(Directory)
/etc/passwd:
root:x:0:0:root:/root:/bin/bash
1 2 3 4 5 6 7
1.用户账户登录名称;
2.使用“x”表示密码占位符;
3.用户账户的UID;
4.用户账户的GID,即该用户账户的基本组的ID;
5.注释信息如用户职位、用户完整名称等;
6.用户账户家目录的绝对路径;
7.用户的默认登录shell
/etc/group
root:x:0:gentoo
1 2 3 4
1.组账户名称;
2.组账户密码占位符;
3.组账户的GID;
4.以该组为附加组的用户列表,多个用户之间使用“,”分隔;
/etc/shadow
root:$6$1osUNf6.3L1leJlU$AoKGLJDxcmkWGmXxfxNm2OB79MIlyCgp3hVnUQSRpDfUsIlS2ZJI0J7goegN09qH.JlTktRapf8CLzQIA9zGT0::0:99999
1 2 3 4 5
:7:::
6789
1.用户账户登录名;
2.密码的加密算法+salt+密码的加密结果;$可以看作是这三部分分隔符
3.最后一次修改密码的时间,其表示法为从1970年1月1日到当前系统时间所表示的日期的天数;
4.用户密码的最短使用期限,可以理解为多长时间内不能更改密码;
5.用户密码的最长使用期限,得以理解为多长时间内无需改密码也可以正常登陆;
6.用户密码的使用时间达到最常使用期限之前多少天开始,在用户登录到系统时发送警告信息;
7.用户密码过期之后的宽限期,可以理解为密码过期之后的多少天内,登录系统时仍然可以提示修改密码;
8.用户密码的绝对失效时间,其表示法为从1970年1月1日到指定日期时间的天数; usermod -e 可修改
9.保留,未被使用;
/etc/gshadow
root:::user1,mysuser
1.组账户名称;
2.组账户的加密密码;
3.组管理员,现在废弃了;
4.以该组为附加组的用户账户列表;
gpasswd :设置组的密码及管理组成员
gpasswd - 管理员 /etc/group 和 /etc/gshadow
格式:gpasswd [选项] group
-a USERNAME:将-a选项指定的用户添加到指定组
-d USERNAME:将-d选项指定的用户从指定的组中移除
newgrp :用一个新的组重新登录到系统,需要被指定的组有正确密码设置
格式:newgrp [-] [group]
/etc/default/useradd
作用:定义创建用户时的用户属性的默认值的文件
GROUP=100
//在创建用户时,如果没有为用户指定基本组,那么系统会为用户制定一个与用户名相同的组此组作为其基本组;
HOME=/home
//在创建用户时,如果没有为用户指定家目录,则会在/home目录中创建一个与用户名同名的目录作为其家目录;
INACTIVE=-1
//在创建用户时,设定用户密码过期之后的宽限期,默认为-1,意味着关闭用户密码过期期限的功能,即宽限期为永久;
EXPIRE=
//在创建用户时,设定用户的默认登录shell,默认为/bin/bash;
SHELL=/bin/bash
//在创建用户时,为用户的家目录提供默认文件的模板;
CREATE_MAIL_SPOOL=yes
//在创建用户时,是否直接为用户创建邮箱文件,默认创建;
/etc/login.defs
作用:定义shadow_utils相关的属性,包括用户邮箱路径、密码的时间参数、UID和GID的范围,删除用户账户的命令、是否设置私有组(仅包含一个用户并作为该用户主要组)、权限位掩码、家目录创建开关、密码的加密算法;
MAIL_DIR /var/spool/mail
//指定创建用户时指定用想文件的路径;
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
//与密码的时间参数有关的设置;
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
//指定默认的ID选择范围;
#USERDEL_CMD /usr/sbin/userdel_local
//指定删除用户时使用的命令;
CREATE_HOME yes
//是否在创建用户时为用户创建家目录的开关;
UMASK 077
//指定用户家目录的默认权限的掩码;
USERGROUPS_ENAB yes
//是否开启私有组开关
ENCRYPT_METHOD SHA512
//使用何种算法加密密码
/etc/skel
作用:为新创建的用户的家目录提供默认的[shell配置]文件
文件系统的权限管理:
普通权限
特殊权限
文件的扩展属性
FACL(文件系统访问控制列表)
DAC:自主访问控制;
安全上下文:
任何在计算机中执行的任务都是由进程实现的;
进程有必要访问和使用文件或某些数据资源;
进程和其要操作的文件之间的关系可以定义为安全上下文;
在DAC模型中,定义安全上下文的方式很简单:
所有权
任何启动进程的用户就是该进程的所有者;进程的所有者也可以变更;
任何创建文件的用户就是该文件的所有者,文件的所有者是可以变更的;
使用权
在文件上面定义的对该文件的特定使用过滤规则;
三个权限:所有者权限、所属组权限、其他人权限;
安全上下文的匹配规则:
当某个进程想要试图操作某个文件时,DAC将作如下规则匹配:
1.判断进程的所有者和文件的所有者是否为同一用户,如果是,则直接应用文件的所有者权限;
2.如果不是,进一步判断进程的所有者是否为文件的所属组的成员,如果是,则直接应用文件的所属组权限;
3.如果不是,直接应用其他人权限;
文件权限的构成:
使用权:MODE,Permission
三个基本权限:
r:Readable,可读;
w:Writable,可写:
x:eXecutable,可执行;
目录文件:
r:可以使用ls命令获取其中所包含的文件的文件名列表;
w:可以在此目录中进行文件名修改(创建、删除、修改):即:可以创建文件名,删除文件名及修改文件名
x:可以使用ls -l命令来查看各个文件的属性信息;在路径中引用该目录;
非目录文件:
r:可以利用cat类的命令获取文件中存放的数据信息;
w:可以修改(添加,修改,删除,覆盖)文件中所存放的信息;
x:可以将文件发起为进程;
获取使用权和所有权的相关信息:
ls -l[d] /PATH/SOMEFILE
rwxr-xr-x.:三个权限位(属主/所有者,属组/所属组,其他用户)
属主权限:rwx,此权限位标示为user,简写为u;
属组权限:r-x,此权限位标示为group,简写为g;
其他用户权限:r-x,此权限位标示为other,简写为o;
所有权限位可以统一用all标识,简写为a;
注意:“-”表示在该权限位上不具备指定权限;
rwx组合称为“权限标识三元组”
数字权限标识:二进制数字标识,在对应的权限位上有权限则为1,无权限则为0;
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
使用符号标识权限和数字标识权限的区别:
1.使用符号标识法可以只标识某个特定的权限位,也可以同时标识所有的权限位;
示例:
u=rx;ug=rwx;u=rwx,g=rx,o=r;a=rwx
2.使用数字标识只能同时标识所有权限位;
示例:
755;644;7==007;75==075
修改文件的使用权:
chmod - change mode
格式:chmod [options] …MODE[,MODE]…FILE
chmod [options] …OCTAL-MODE FILE…
chmod [options] …--reference=RFILE FILE…
MODE:符号权限标识法:
u,g,o,a:标识权限位;
+,-,=:表示授权方式;
+:表示在指定的权限位上增加指定权限;如果新增的权限是已经存在的权限,则结果相比授权之前无变化;
-:表示在指定的权限位上撤销指定权限;如果撤销的权限是未存在的权限,则结果相比授权之前无变化;
=:表示在指定的权限位上精确授权;此种授权方式不考虑该权限位原有的权限设定的;
r,w,x:表示具体的权限;
注意:
chmod +/- r/x FILE:在所有的权限位上增加或撤销读或执行权限;
chmod +/- w FILE:仅在所有者权限位上增加或撤销写权限;
注意:
对于文件来说,执行权限是非常重要的安全上下文标识,因此默认情况下,Linux中所有的非目录文件都不应该有执行权限;因为一旦非目录具有了执行权限,则意味着该文件可以被执行,发起为进程,则可以按需使用系统资源;
OCTAL-MODE:八进制数字标识法
示例:
# chmod 640 root.txt(给此文件赋予权限rw-r-----)
--reference=RFILE
示例:
# chmod --reference=/etc/shadow root.txt
//参考/etc/shadow文件的权限为root.txt设置相同权限
常用选项:
-R,--recursive:递归地设置目标文件或目录的权限(目录里的文件都有相同的权限);(使用时要确保安全性因为文件被授予执行权限 很危险)
修改文件的所有权:
chown
chown - change file owner and group//修改文件的属主和属组
格式:chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
示例:
~]# chown user3 test1 :只修改文件的所有者变更为user3 所属组不变
~]# chown user3: test2 :文件的所有者变为user3,所属组为user3的主要组
~]# chown :user3 test3 :文件的所有者没变,所属组为user3
~]# chown user3:myser test4 :文件的所有者为user3,文件的所属组为myser
注意:在使用chown命令时,特别的,可以使用“.”代替“:”;
常用选项:
-R,--recursive:递归的设置目标文件或目录的所有权;
注意:对于文件来说,普通用户可以修改所有者为自己的文件的使用权,但无法修改文件的所有权,修改文件的所有权只能是root用户可以完成;
chgrp(不常用)
chgrp - change group ownership
格式:chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:chown和chgrp命令所指定的用户和组,既可以使用户名和组名,也可以是UID和GID;
mkdir
-m MODE:在创建目录时为其指定权限
install命令:
install - copy files and set attributes
格式:install [OPTION]... [-T] SOURCE DEST
单源复制,为复制后的文件增加执行权限
install [OPTION]... SOURCE... DIRECTORY
多源复制,为复制后的文件增加执行权限
install [OPTION]... -d DIRECTORY...
创建目录
常用选项:
-g, --group=GROUP
set group ownership, instead of process‘ current group
//设定目标文件的所属组为指定组,而不是进程所有者的主要组;
-m, --mode=MODE
set permission mode (as in chmod), instead of rwxr-xr-x
//设定目标文件的权限,而不是rwxr-xr-x;
-o, --owner=OWNER
set ownership (super-user only)
//设定目标文件的所有者,仅root可用;
注意:install命令,不能复制目录,即不能以目录为源文件;如果其源文件是一个目录,则stall命令会进入该目录,依次复制其中的所有非目录文件到目标位置;
特殊权限:
SUID,SGID,STICKY
SUID:SUID仅设置在可执行的文件上,默认情况下,当用户执行此类可执行文件时,被发起的进程的所有者不是进程的发起者,而是可执行文件的所有者;换句话说,进程以文件所有者的身份运行;
SUID权限所显示的位置:文件的属主的权限位中的执行权限位上,如果属主本来就具有执行权限,则显示为“s”;如果属主本来没有执行权限则显示为“S”;
管理SUID权限:
1.符号标识法:chmod u+s FILE
2.数字标识法:chmod 4755 FILE
SGID:SGID可设置在可执行文件或目录的属组权限位的执行权限上,
如果某个目录设置了SGID权限并且对于某些用户有写权限,则所有在此目录中创家的新文件和目录的所属组均为其父目录的所属组,而并非发起进程者的主要组;
SGID权限的显示位置:文件的属组权限位上的执行权限上;如果属组本来就有执行权限,则显示为“s”,否则,就显示“S”;
管理SGID权限:
1.符号标识法:chmod g+s FILE
2.数字标识法:chmod 2770 DIR
STICKY:STICKY仅设置在目录的其他用户权限位的执行权限上;
如果在某个目录上的权限设置为多个用户都拥有写权限,那就意味着凡使用有写权限的用户都能直接管理该目录中的所有文件名,包括该名文件及删除文件名等操作,因此需要在这样的目录上设置STICKY特殊权限;如果此类目录设置了STICKY,则所有用户即便用有写权限,也仅能删除或改名所有者为其自身的文件;
STICKY权限的显示位置,在目录的其他用户的权限位的执行权上;如果该权限位本来有执行权限,则显示为“t”,否则显示为“T”;
管理STICKY权限:
1.符号标识法:chmod o+t DIR
2.数字标识位:chmod 1777 DIR
权限遮罩码:umask
作用:在创建目录或文件时被创建出来的目录或文件的默认权限上要删除遮罩码上所对应的权限;
注意:在创建目录或文件时,默认不会设置特殊权限;
对于目录:默认的权限为0777-umask 0777-0033=0744
对于非目录文件:默认的权限位0666-umask 0666-0033=0644
umask[OCTAL-MODE]
默认设置遮罩码的文件:/etc/bashrc
规则:如果用户的UID大于199并且用户的用户名和主要组的组名相同,则遮罩码为002,否则遮罩码为022;
文件的扩展属性:
lsattr:
lsattr - 显示文件在Linux第二扩展文件系统上的特有属性
格式:lsattr [ -RVadv ] [ files... ]
chattr:
chattr - 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
格式:chattr [ -RV ] [ -v version ] [ mode ] files...
mode可以是:+-=[aAcCdDetjsStTu]
+:表示在指定的权限位上增加指定权限;如果新增的权限是已经存在的权限,则结果相比授权之前无变化;
-:表示在指定的权限位上撤销指定权限;如果撤销的权限是未存在的权限,则结果相比授权之前无变化;
=:表示在指定的权限位上精确授权;此种授权方式不考虑该权限位原有的权限设定的;
a:在向文件写数据时,只能以附加的形式进行写操作;文件的内容不能被更改或删除;
A:atime,文件的访问时间戳控制属性;对于并发访问量较大或者并发访问频率较高的文件,应该设置此属性以降低IO成本;防止IO瓶颈;
c:是否自动压缩之后再存储;
C:是否开启“写时复制”;
d:使用dump备份文件系统时,跳过属性设置为d的文件;
D:设置文件的文件系统中的异步写操作;
i:设置文件不能被删除,改名及设定连接关系;
s:设置文件的保密性删除;
u:与s属性相反,如果此类文件被删除,则在存储器中会继续保存其内容;
FACL:
Filesystem Access Control List,文件系统访问控制列表
想要应用此功能,必须让文件能够支持
FACl为文件系统的额外赋权机制;
在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的某个指定的用户或组的一种赋权机制;
这种机制在centos或者RHEL7之后的发行版本中才逐渐成熟;
与FACL相关的命令:
getfacl:
getfacl - get file access control lists
格式:getfacl [-aceEsRLPtpndvh] file ...
getfacl [-aceEsRLPtpndvh] -
setfacl:
setfacl - set file access control lists
格式:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
setfacl --restore=file
常用到的选项:
-m acl_spec:为指定文件设置acl_spec
-x acl_spec:将acl_spec从指定文件上移除;
acl_spec:acl_specification,acl规格,访问控制列表;
u:USERNAME:MODE
g:USERNAME:MODE
MODE一般是使用符号权限标识法标识的权限;
示例:
为文件赋予指定用户的额外访问权限:
setfacl -m u:link:rwx /tmp/temp/
撤销指定文件的额外访问权限:
setfacl -x u:link /tmp/temp
注意:如果设置了FACL之后,在修改目标文件的使用权限,那么FACl中设置的权限的权限条目可能受到影响而导致授权失败,因此,为了保证没有此项干扰,应该先调整目标文件或目录的权限,再设置FACL;