一、用户和组
1.用户
系统用来认证(Authentication),授权(Authorization),审计(Autition)的帐号。通过登录用户来登录系统。操作系统通过登录不同的用户来调用相对应权限的进程或程序,也可以说,用户是能获取系统资源的权限集合。
2.用户的分类
Linux用户分为2类,即管理员用户和普通用户。
管理员用户:即root,拥有最大的权限的用户,可以调用系统任意的资源。其uid为0
普通用户:普通用户也分2类,分别为系统用户和登录用户。
系统用户:保障系统启动时的基本服务正常运行的用户,一般不能登录。注意,也有可以登录的系统用户,来保障重要程序运行。其uid为1-499(CentOS6)或1-999(CentOS7+)
登录用户:一般用户,用来登录并使用系统。其uid为500-60000(CentOS6)或1000-60000(CentOS7+)
3.组
组是用户的集合或容器,用户可以继承组的使用系统资源的权限。
4.组的分类
组有3种分类方式。
组类别1:
管理员组:root的组,权限最大的组,其gid为0
普通用户组:
系统组:系统用户的组,其gid为为1-499(CentOS6)或1-999(CentOS7+
登录组:登录用户的组,其gid为500-60000(CentOS6)或1000-60000(CentOS7+)
组类别2:
基本组:创建用户时生成的同用户名一样的组,有且只有一个
附加组:除了基本组外的组,可以同时有很多个
组类别3:(感觉是基本组和附加组的另一种说法)
私有组。
公共组。
5.密码
密码是用户用来登录系统或切换组时需要的凭证,其存放在/etc/shadow和/etc/gshadow文件内。
密码建议使用随机密码,最短长度不要低于8位,同时使用大写字母、小写字母、数字、标点符号四类字符中至少3类,并定期更换。
linux使用单向加密,有md5,sha1,sha224,sha256,sha384,sha512共6种加密算法。
6./etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、文件
uid(UID),gid(GID):因为计算机硬件能识别的只有二进制代码,内存中用来存储用户和组的信息的大小分别都为16bits,所以总的数值为0-65536。uid,gid就是存储在计算机内存中的用户名和组名,它们通过配置文件/etc/passwd和/etc/group来互相解析。
(1)/etc/passwd:用户的信息库
格式为:
name:passwd:uid:gid:gecos:directory:shell
name:用户名
passwd:密码,可以是加密的密码,也可以是占位符x
uid:用户id号
gid:用户所属的主组的id号
gecos:注释信息
directory:用户的家目录
shell:用户的默认SHELL,登录时默认shell程序
(2)/etc/shadow:用户的密码库
格式为
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:密码禁用期:过期期限:保留字段
(3)/etc/group:组的信息库
格式为:
group_name:password:GID:user_list
group_name:组名
password:组密码(不同组的用户切换组时用到,chgrp命令)
GID:组id号
user_list:该组的用户成员,以此组为辅加组的用户的用户列表
(4)/etc/gshadow:组的密码库
7.相关命令
(1)useradd:添加用户
格式:useradd [选项] 登录
-u,--uid UID:指定UID
-g,--gid GROUP:指定基本组ID,此组得事先存在
-c,,--comment COMMENT:指明注释信息
-G,--groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号隔开
-d,--home HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现,如果指定的家目录路径事先存在,则不会为用户复制环境配置文件
-s,--shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells中
-r,--system:创建系统用户
-M:不创建用户主目录
注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
useradd -D:显示创建用户的默认配置
useradd -D 选项:修改默认选项的值
修改的结果保存于/etc/default/useradd文件中
(2)usermod:修改用户相关属性
格式:usermod [选项] 登录名
-u,--uid UID:修改UID号
-g,--gid GROUP:修改用户所属的基本组,必须存在
-G,--groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组:原来的附加组会被覆盖
-a,--append:与-G一同使用,用于为用户追加新的附加组
-c,--comment COMMENT:修改注释信息
-d,--home HOME_DIR:修改用户的家目录
-m,--move-home:只能与-d选型一同使用,用于将原来的家目录移动为新的家目录
-s,--shell SHELL:修改用户的默认shell
-l,--login NEW_LOGIN:修改用户名
-L,--lock:锁定用户密码:即在原来的密码字符串之前添加一个‘!’
-U,--unlock:解锁用户的密码
(3)userdel:删除用户
格式:userdel [选项] 登录
-r:删除用户时一并删除其家目录
(4)groupadd:添加组
格式:groupadd [选项] group_name
-g GID:指定GID,默认是上一个组的GID+1
-r:创建系统组
(5)groupmod:修改组的相关属性
格式:groupmod [选项] GROUP
-g GID:修改GID
-n new_name:修改组名
(6)groupdel:删除组
格式:groupdel GROUP
(7)passwd:修改用户密码
格式:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
1、passwd 修改用户自己的密码
2、passwd USERNAME:修改指定用户的密码,但仅root有此权限
-l,-u:锁定、解锁用户密码
-d:清除用户密码
-e DATE:过期期限,日期
-i DAYS:非活动期限
-n DAYS:最短使用期限
-x DAYS:最常使用期限
-w DAYS:警告期限
--stdin:echo "PASSWORD" | passwd --stdin USERNAME
(8)gpasswd:给组添加密码
格式:gpasswd [选项] group
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
(9)newgrp:临时切换指定的组为基本组
格式:newgrp [-] [group]
-:会模拟用户重新登录以实现初始化其工作环境
(10)id:显示用户真实和有效的ID
格式:id [OPTION]... [USER]
-u:仅显示有效的UID
-g:仅显示用户的基本组ID
-G:仅显示用户所属的所有组的ID
-n:显示名字而非ID
(11)su:switch user
登录式切换:会通过读取用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
常用方法:-c ‘COMMAND‘ :仅以指定用户的身份运行此处指定的命令
二、权限管理
1.权限
前面讲过,用户登录系统调用进程来实现系统的运行,基于安全的考虑,不是每个用户都能调用同一个进程或重要的系统后台进程,这就需要权限来管理。同时,liunx的原则之一,一切都是文件,所以实质上是对文件的权限管理。
而进程对文件的访问权限应用模型
进程的属主与文件的属主是否相同,如果想同,则应用属主权限
否则,则检查进程的属主是否属于文件的属组,如果是,则应用属组权限
否则,就只能应用other权限
2.权限的组合
权限的显示模式:rwxrwxrwx
前三位:表示属主用户的权限
中三位:表示属组用户的权限
后三位:表示其他用户的权限
组合和8进制的换算为
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7
3.文件的权限
以/etc/passwd为例,执行ll /etc/passwd
-rw-r--r--. 1 root root 1801 12月 11 10:36 /etc/passwd
r:readable,表示可获取文件的数据
w:writable,表示可修改文件的数据
x:excutable,表示可将此文件运行为进程
4.目录的权限
以/etc/rc.d为例,执行ll -d /etc/rc.d
drwxr-xr-x. 10 root root 4096 3月 6 2015 /etc/rc.d/
r:readable,表示可使用ls命令获取其下的所有文件列表
w:writable,表示可修改此目录下的文件列表,即创建或删除文件
x:excutable,表示可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息
5.相关命令
(1)chmod:修改文件权限
格式:chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
3类用户简写:u:属主、g:属组、o:其他、a:所有
1、chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法:直接操作一类用户的所有权限位
u=
g=
o=
a=
授权表示法:
u+,u-
g+,g-
o+,o-
a+,a-
2、chmod [OPTION]... OCTAL-MODE FILE...
(八进制即0-7)
3、chmod [OPTION]... --reference=RFILE FILE...
(引用性修改)
选项:
-R, --recursive:递归修改(授权表示法使用多)
(2)chown:改属主和属组
格式:chown [OPTION]... [OWNER][:[GROUP]] FILE...(或者是.)
chown [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改
(3)chgrp:改属组
格式:chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
(4)umask:文件的权限反向掩码,遮罩码
文件:
666-umask
目录:
777-umask
注意:文件用666去减,是因为文件默认不能有执行权限:如果减的数有执行权限,则加1
格式:umask:查看当前umask
umask MASK:设置umask
注意:此类设定只对当前shell进程有效
参考:http://linuxme.blog.51cto.com/1850814/347086/