一、Linux用户管理(centos6.x,7.x):
用户类别:linux中用户分为管理用户和普通用户,普通用户又分为系统用户和登录用户。字符是人类能够直接识别的信息,而计算机能够直接识别的是数字,所以计算机用不同的唯一的16位二进制数字UID来标识不同的用户,计算机一般能够标识的用户数量为65536个,既0-65535。
在系统中,用户名与UID之间是通过名称解析来建立关系进行识别的,这种名称解析用到的文件为/etc/passwd,此文件为linux中的用户信息库,该文件存储用户信息的格式为用冒号:分割的7个字段name:password:UID:GID:GECOS:directory:shell,各字段的含义为:
linux中的密码管理文件为/etc/shadow,其存储数据的格式与/etc/passwd相似,使用冒号:分割的9个字段组成:
各个字段详细说明:第一个字段为用户名,与/etc/passwd文件中相对应;
第二个字段为密码字段,由三个$符号分割为三部分组成,第一部分为密码用到的加密方式,第二部分为加密密码是用到的混淆随机数,称为salt(盐),第三部分为加密后的密码密文;
第三个字段为最近一次修改密码的时间,其表现为一个距离unix元年的天数,后边的字段期限天数都是相对于这个时间而言的,0 有特殊意思,表示用户应该在下次登录系统时更改密码。;
第四个字段为最短密码使用时间,用户一次更改密码之后,要等多长时间才再次被允许更改密码。空字段或 0 表示没有最小密码年龄;
第五个字段为最长密码使用时间,这些天之后,用户必须更改密码。这些天之后,密码仍然可用。用户将会在下次登录的时候被要求更改密码。空字段表示没有最大密码年龄,没有密码警告时间段,没有密码禁用时间段。如果最大密码年龄小于最小密码年龄,用户将会不能更改密码;
第六个字段为提前警告用户密码过期的天数,参考最长的密码使用天数,空字段或者 0 表示没有密码警告期;
第七个字段为密码过期(参照上边的密码最长使用时间)后,仍然接受此密码的天数(在此期间,用户应该在下次登录时修改密码)。密码到期并且过了这个宽限期之后,使用用户的当前的密码将会不能登录。用户需要联系系统管理员。空字段表示没有强制密码过期。
第八个字段为账户过期的日期,表示为从1970年1月1日开始的天数。注意,账户过期不同于密码过期。账户过期时,用户将不被允许登录;密码过期时,用户将不被允许使用其密码登录。空字段表示账户永不过期。应该避免使用0,因为它既能理解成永不过期也能理解成在1970年1月1日过期;
第九个字段为保留字段。
密码使用策略为:
1、使用随机密码;
2、最短长度不要低于8位;
3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
4、定期更换;
linux中的用户组的使用情况与用户大致相同,用户组的GID可以参照用户的使用情况,要注意每个用户只可以有一个基本组,而可以有多个附加组,保存用户组相关信息的系统文件为/etc/group,/etc/gshadow
/etc/group文件存储类型也为用冒号:分割的4个字段:group_name:password:GID:user_list
/etc/gshadow文件存储类型也为用冒号:分割的4个字段:
注意:组密码的格式与/etc/paswd中的第二个字段相同,这个组密码是用于用户临时切换基本组时的认证
以上各文件都可以在linux命令行中用man命令查看详细内容,如:
[root@localhost~]# whatis passwd
sslpasswd(1ssl) - compute password hashes
passwd(1) - update user'sauthentication tokens
passwd(5) - password file
[root@localhost~]# man 5 passwd
linux中管理用户相关的命令主要有:groupadd、groupdel、gpasswd、groupmod、newgrp、useradd、usermod、userdel、passwd、chage、id、su、chsh、finger、chfn、pwck、grpck、whoami等
这些命令都可以通过man命令在linux中找到详细的使用方法,此处我仅列出比较常用的一些命令选项:
groupadd命令:添加组
格式:groupadd [options] group
常用选项:-g,--gid GID
创建组时指定GID,若不用此参数,默认为上一个组的GID+1;
-r, --system
创建一个系统组
groupdel命令:删除组
格式:groupdel group
gpasswd命令:用于管理组文件/etc/group和/etc/gshadow
格式:gpasswd [option] group
常用选项:-a,--add user
向指定组中添加用户user
-d,--delete user
从指定组中将用户user移除
-r, --remove-password
清除指定组的组密码
-A, --administrators user,...
指定组管理员
-M, --membersuser,...
设置组成员列表。
groupmod命令:修改组属性
格式:groupmod [options] GROUP
常用选项:-g,--gid GID
修改指定组的GID
-n,--new-name NEW_GROUP
修改指定组的组名
newgrp命令:临时切换至指定的组为基本组
格式:newgrp [-] [group]
常用命令:-
加-时会模拟用户重新登录以实现重新初始化其工作环境;
useradd命令:创建用户
格式:1.useradd [options] LOGIN
常用选项:-u,--uid UID
指定UID;
-g, --gid GROUP
指定基本组GID,此组须事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
指定用户所属的附加组,多个组之间用逗号分隔;
-c, --comment COMMENT
指明注释信息;
-d, --home HOME_DIR
以指定的路径为用户家目录,通过复制/etc/skel目录并重命名实现;如指定的目录事先存在,则不会为用户复制环境配置文件;
-s, --shell SHELL
指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
-r,--system
创建系统用户;
2. useradd -D
显示创建用户的默认配置
3.useradd -D [options]
修改创建用户时使用的默认选项的值,修改的结果保存在/etc/default/useradd文件中;
usermod命令:修改用户属性
格式:usermod [options] LOGIN
常用选项:-u,--uid UID
修改用户的UID为此处指定的新UID;
-g, --gid GROUP
修改用户所属的基本组,该组必须事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
修改用户所属的附加组,原来的附加组会被覆盖,如不想覆盖,需加-a选项;
-a, --append
为用户追加新的附加组,不能单独使用,只能与-G选项一同使用;
-c, --commentCOMMENT
修改注释信息;
-d, --homeHOME_DIR
修改用户的家目录,用户原有的家目录文件不会转移至新位置,如需要转移,需加-m选项;
-m, --move-home
用于将原来家目录的内容移动到新的家目录中,不能单独使用,只能与-d选项一同使用;
-l, --loginNEW_LOGIN
修改用户名为NEW_LOGIN,用户的主目录名和邮件池也需要手动修改以和新登录名对应;
-s, --shellSHELL
修改用户的默认shell;
-L, --lock
锁定用户密码;即在用户原来的密码字符串之前添加一个“!”;
-U,--unlock
解锁用户密码;
userdel命令:删除用户
格式:userdel [options] LOGIN
常用选项:-r,--remove
连同用户的家目录一并删除;
passwd命令:修改用户密码
格式:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-xmaxdays] [-w warndays] [-i inactivedays] [-S] [--stdin][username]
常用选项:(1)passwd:不跟参数为修改用户自己的密码;
(2)passwd USERNAME:修改指定用户的密码,但仅root用户有此权限;
-l, --lock
锁定用户;
-u, --unlock
解锁用户;
-d, --delete
清除用户密码;
-e, --expire
修改用户密码的过期时间,日期;
-i, --inactive DAYS
修改用户的非活动期限;
-n, --minimum DAYS
修改用户密码的最短使用期限;
-x, --maximum DAYS
修改用户密码的最长使用期限;
-w, --warning DAYS
修改用户密码的警告期限;
(3)--stdin:可以用重定向的方法为用户指定密码;
如:echo "PASSWORD" | passwd --stdin USERNAME
chage命令:更改用户密码过期的信息
格式:chage [options] [LOGIN]
常用选项:-d,--lastdayLAST_DAY
修改最后一次修改密码的时间
-E, --expiredateEXPIRE_DATE
修改用户帐号的过期时间
-W, --warndaysWARN_DAYS
修改警告期限;
-m, --mindaysMIN_DAYS
修改用户修改密码的最小期限
-M, --maxdaysMAX_DAYS
修改用户修改密码的最长期限;
id命令:显示用户的真实和有效的ID
格式:id [OPTION]... [USER]
常用选项:-u,--user
仅显示有效的UID;
-g, --group
仅显示用户的基本组GID;
-G, --groups
仅显示用户所属的所有组的GID;
-n, --name
显示名字而非ID;
su命令:切换用户
格式:su [options...] [-] [user [args...]]
常用选项:(1)登录式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
(2)非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
-c command, --command=command
仅以指定用户的身份运行此处指定的命令;
注意:管理员root可无密码切换至其它任何用户;
chsh命令:改变用户的登录shell
格式:chsh [-s shell] [-l] [-u] [-v] [username]
常用选项:-s,--shell shell
切换至指定shell
-l, --list-shells
列出/etc/shells中的shell
finger命令:用户信息查看
格式:finger [-lmsp] [user ...] [user@host ...]
常用选项:
chfn命令:修改finger命令中的信息
格式:chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
常用选项:
pwck命令:命令检查用户及其认证信息的完整性。它检查/etc/passwd和 /etc/shadow格式正确、数据有效。将会提示用户删除格式不正确或者有其它错误的项。
格式:pwck [-q] [-s] [passwd [ shadow ]]
pwck [-q] [-r] [passwd [ shadow ]]
常用选项:-q,--quiet
只报告错误。不显示那些不需要用户操作的警告;
-r, --read-only
在只读模式下执行 pwck;
-s, --sort
根据 UID 在 /etc/passwd 和 /etc/shadow对项目进行排序。
注意:-s、-r选项不能同时使用
grpck命令:检查组文件的完整性,/etc/group和/etc/gshadow
格式:grpck [-r] [group [ shadow ]]
grpck [-s] [group [ shadow ]]
常用选项:-r,--read-only
在只读模式下执行 grpck;
-s, --sort
根据 GID 在 /etc/group和 /etc/gshadow 中进行排序。
注意:-s、-r选项不能同时使用
whoami命令:显示当前执行命令的用户名
以上创建用户,用户组及配置用户信息的默认设置可以在/etc/login.defs中查看及修改。
二、用户权限管理:
ls -l可以查看当前目录下文件和目录的长属性:
在此,我们只关心这些属性中的第一个字段:
文件的文件类型有很多种:
-:表示为常规文件,即f
d:directory,目录文件
b:block device,块设备文件,支持以“block”为单位进行随机访问
c:character device,字符设备文件,支持以“character”为单位进行线性访问
l:symbolic link,符号链接文件,软连接
p:pipe,命名管道
s:socket,套接字文件
了解了文件的类型后,我们开始关注文件的基本权限管理:
文件类型后的9位就是系统对文件的基本权限控制位
rwxr--r--
左三位:定义user(owner)的权限 中三位:定义group的权限 后三位:定义other的权限
进程安全上下文
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限。
权限:
r:readable,读
w:writable,写
x:excutable,执行
对于文件与目录,拥有的权限相同,产生的作用却有所不同:
文件:
r:可获取文件的数据;
w:可修改文件的数据;
x:可将此文件运行为进程;
目录:
r:可使用ls命令获取其下的所有文件列表;
w:可修改此目录下的文件列表,即创建或删除文件;
x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
由于权限位的三位随机组合最多有8种变化,所以我们可以用8进制数字来表示每种不同权限:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
linux中关于权限管理的命令:
chmod命令:修改文件的权限位
此命令将属主用u表示,属组用g表示,其它用户用o表示,用a来表示前边三个全部;
格式:chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法:直接操作一类用户的所有权限位rwx:
u=
g=
o=
a=
注意,可以组合使用,如同时修改文件属主,属组权限可以用u=,g=;组合时用,逗号间隔
授权表示法:直接操作一类用户的一个权限位r,w,x:
u+,u-
g+,g-
o+,o-
a+,a-
注意,此种方法也可以组合使用,用,逗号间隔
chmod [OPTION]...OCTAL-MODE FILE...
八进制数修改法:如chmod 755 filename
chmod [OPTION]...--reference=RFILE FILE...
此格式表示可以参考某个已知权限的文件来设置指定文件的权限
常用选项:-R,--recursive
递归修改目录下所有文件的权限,一般只建议在赋权表示法或授权表示法中使用
注意:普通用户只能修改属主为自己的那些文件的权限;
从属关系管理命令:chown,chgrp
chown命令:修改文件的属主或属组
格式:chown [OPTION]... [OWNER][:[GROUP]] FILE... 注意:[OWNER][:[GROUP]中间的冒号用.点也可以
chown [OPTION]... --reference=RFILE FILE... 也可以参照某个文件的属主属组来设定指定文件的属主属组;
常用选项:-R,--recursive
递归修改目录及其中所有文件的属主属组
chgrp命令:修改文件的属组
格式:chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]...--reference=RFILE FILE... 也可以参照某个文件的属组来设定指定文件的属组
注意:仅管理员可以修改文件的属主属组
umask:文件的权限反向掩码,遮罩码;
文件:创建文件的默认权限为666减去umask
666-umask
目录:创建目录的默认权限为777减去umask
777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1;
如:umask: 023
文件权限:666-023=644
目录权限:777-023=754
umask命令:
umask:查看当前umask
umask MASK:设置umask
注意:此类设定仅对当前shell进程有效;