用户、组及权限管理
一、用户的概念
1、理解Linux多用户,多任务的特性
Linux是一个真实的、完整的多用户多任务的操作系统,多用户多任务就是在系统上建立多个用户,而多个用户可以在同一时登入操作系统执行各自任务操作,互不影响,资源隔离。
2、用户的分类
在Linux下用户可分为二类:
管理员:拥有对系统的最高管理权限,默认是root用户。
普通用户:只能对自己目录下的文件进行访问和修改,登录系统权限。
普通用户:分为登录用户和系统用户
3、用户标识
UserID,UID
16bits二进制数字:0-65535
管理员:0
普通用户:1-65535
系统用户:1-499(CentOS6),1-999(CentOS7)
登录用户:500-60000(CentOS6),1000-60000(CentOS7)
4、用户的相关配置文件
(1)/etc/passwd文件
系统用户配置文件,是用户管理中最重要的文件,这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读,/etc/passwd中每一行记录对应一个用户,每行记录又被冒号分隔,其格式如下:
name:passed:UID:GID:GECOS:directory:shell
name: 用户名
password:可以是加密的密码,也可是占位符x;
GID:用户所属的主组的ID号;
GECOS:注释信息
directory:用户的家目录;
shell:用户的默认shell,登录时默认shell程序;
(2)/etc/shadow:用户密码
用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,Linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性,其格式如下:
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
(3)认证信息:
通过比对事先存储的,与登录时提供的信息是否一致;
password:
/etc/shadow
/etc/gshadow
密码的使用策略:
1、使用随机密码;
2、最短长度不要低于8位;
3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
4、定期更换;
(4)加密算法:
对称加密:加密和解密使用同一个密码;
非对称加密:加密和解密使用的一对儿密钥;
密钥对儿:
钥:public key
私钥: private key
单向加密:只能加密,不能解密;提取数据特征码;
定长输出
雪崩效应
算法:
md5:message digest, 128bits
sha:secure hash algorithm, 160bits
sha224
sha256
sha384
sha512
在计算之时加salt,添加的随机数;
二、用户组的概念
1、概念
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某个文件或执行某个命令,这时我们需要用户组,把用户都定义到同一个用户组,通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,是我们通过定义组和修改文件的权限来实现的。
2、用户与用户组的对应关系是:
一对一:某个用户可以是某个组的唯一成员
多对一:多个用户可以是某个唯一的组的成员,不归属于其它用户组
一对多:某个用户可以是多个用户组的成员
多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组
3、 /etc/group:组的信息库
用户组配置文件,用户组的所有信息都存放在此文件中,其格式如下:
group_name:password:GID:user_list
group_name:组名
password:组密码
GID:组ID号
user_list:该组的用户成员;以此组为附加组的用户的用户列表
三、管理命令
1、useradd命令:创建用户
useradd [选项] 登录名
-u, --uidUID:指定UID;
-g, --gidGROUP:指定基本组ID,此组得事先存在;
-G,--groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
-c,--comment COMMENT:指明注释信息;
-d, --homeHOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
-s,--shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
-M:不为用户创建主目录
-r,--system:创建系统用户;
注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
useradd -D:显示创建用户的默认配置;
useradd -D选项: 修改默认选项的值;
修改的结果保存于/etc/default/useradd文件中;
2、usermod命令:修改用户属性
usermod [选项] 登录
-u:修改用户的ID为此处指定的新UID
-g:修改用户所属的基本组
-G,--groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组:原来的附加组会被覆盖
-a:与-G一同使用,用于为用户追加新的附加组
-d:修改用户的家目录:用户原有的文件不会被转移至新位置
-m:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
-l:修改用户名
-s:修改用户的默认shell
-L:锁定用户原来的密码字符串之前添加一个“!”
-U:解锁用户的密码
3、userdel命令:删除用户
userdel[选项] 用户名
-r:删除用户时一并删除其家目录
4、passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S][--stdin] [username]
(1) passwd:修改用户自己的密码
(2) passwdUSERNAME:修改指定用户的密码,但仅root有此权限
选项:
-l,-u:锁定和解锁用户
-d:清除用户密码串
-e:过期期限
-i:非活动期限
-n:密码最短使用期限
-x:密码最长使用期限
-w:警告期限
--stdin:
echo "PASSWORD" |passwd --stdin USERNAME
5、gpasswd命令
给组添加密码:
组密码文件:/etc/gshadow
gpasswd [选项] group
-aUSERNAME:向组中添加用户
-d USERNAME:从组中移除用户
6、newgrp命令
临时切换指定的组为基本组;
newgrp[-] [group]
-: 会模拟用户重新登录以实现重新初始化其工作环境
7、chage命令
更改用户过期信息
chage [选项] 登录名
-d:上一次密码的修改时间
-E:过期日期
-I:非活动期限
-W:警告期限
-m:最短使用期限
-M:最大使用期限
8、id命令
显示用户的真和有效ID;
id [OPTION]... [USER]
选项:
-u:仅显示有效的UID;
-g:仅显示用户的基本组ID;
-G:仅显示用户所属的所有组的ID;
-n:显示名字而非ID;
9、su命令
登录式切换:会通过读取目标用户的配置文件来重新初始化
su- USERNAME
su-l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
suUSERNAME
注意:管理员可无密码切换至其它任何用户;
-c'COMMAND':仅以指定用户的身份运行此处指定的命令;
四、权限管理
ls –l
rwxrwxrwx:
左三位:定义user(owner)的权限
中三位:定义group的权限
右三位:定义other的权限
进程安全上下文:
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同:如果相同,则应用属主权限,
否则,则检查进程的属主是否属于文件的属组:如果是,则应用属组权限
否则,就只能应用other的权限
1、权限
r:readable,读
w:writeable,写
x:excuteable,执行
文件:
r:可获取文件的数据
w:可修改文件的数据
x:可将此文件运行为进程
目录:
r:可使用ls命令获取其下的所有文件列表,不能包含详细信息
w:可修改此目录下的文件列表,即创建或删除文件
x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息
mode:rwxrwxrwx
ownership:user,group
权限组合机制:
--- 000 0
--x 001 1
-w-010 2
-wx011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
2、权限管理命令
1、 chmod命令:
三类用户:
u:属主
g:属组
o:其它
a:所有
(1)chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法:直接操作一类用户的所有权限rwx
u=,g=,o=,a=
授权表示法:直接操作一类用户的一个权限位r,w,x
u+,u-
g+,g-
o+,o-
a+,a-
(2)chmod[OPTION]... OCTAL-MODE FILE...
660
(3)chmod [OPTION]... --reference=RFILE FILE...
选项:
-R,--recursive:递归修改
2、chown命令:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
3、chgrp命令:
chgrp[OPTION]... [OWNER][:[GROUP]] FILE...
chgrp[OPTION]... --reference=RFILE FILE...
4、umask:文件的权限反向掩码,遮罩码:
文件:666-umask
目录:777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限,则需要将其加1
umask:023
666-023=644
777-023=754
umask命令
umask:查看当前umask
umask MASK:设置umask
注意:此类设定仅对当前shell进程有效
5、install命令
install - copy files and set attributes
单源复制:
install [OPTION]... [-T] SOURCE DEST
多源复制:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
创建目录
install [OPTION]... -d DIRECTORY...
常用选项:
-m:设定目标文件权限,默认为755
-o:设定目标文件属主
-g:设定目标文件属组
-d:创建目录
6、mktemp命令
mktemp- create a temporary file or directory
创建临时目录或临时文件
mktemp [OPTION]... [TEMPLATE]
常用选项:
-d:创建临时目录
变量引用:
-u:测试
注意:mktemp会将创建的临时文件直接返回,因此,可直接通过命令引用保存起来