Linux用户、组、权限管理
用户
对于多用户、多任务的Liunx,为什么要有用户这个概念是值得考虑的问题,那么为什么要有用户?
为了尽可能的发挥Linux系统资源,可以让不同的人或者服务以不同的身份来登录系统完成用户对应身份下的操作,用户之间互不影响相应之间的操作,达到一种多人同时操作同一资源的效果。
每一个用户在Linux中都对应一个ID,这些ID是用16bits(0-65536)来表示的,用户有其对应的ID以及口令,用户及用户密码相关信息分别存放在/etc/passwd和/etc/shadow文件中,当一个用户登录系统时,会对用户进行验证,看该用户对应的口令是否和系统中存放的相同,如果相同则登入到系统中,否则不予以登录。
因为不同的用户对系统管理的权限不同,所以Linux对用户进行了分类:
用户 | ID范围 | 作用 |
---|---|---|
管理员 | 0 | 具有最高权限 |
系统用户 | 1-499(centOS6) 1-999(CentOS7) | 为了能够让后台进程或服务类进程以非管理员身份运行,通常需要为此创建多个普通用户,这类用户不用登录系统 |
登录用户 | 500-60000(CentOS6) 1000-60000(CentOS7) | 可以登录系统,用对应权限对系统进行操作 |
组
组相当于一个用户的容器,对于同一个组内的用户拥有某文件所属组的操作权限,组的设定方便了除文件属主以外其他用户对该文件的访问,不用对每个文件设置相对应用户的权限,属于该文件属组下的用户都有相同的权限来访问该文件。
和用户组相关的几个配置文件
- /etc/passwd
- /etc/paswd文件说明
Segement | Meaning |
---|---|
name | 用户名 |
password | 用户密码,可以是加密的密码,也可以是占位符"x" |
UID | 用户ID号 |
GID | 用户所属的主组的ID号 |
comment | 注释信息 |
directory | 用户的家目录 |
shell | 用户默认的shell,登录时默认的shell程序 |
- /etc/shadow
- /etc/shadow文件说明
Segement | Meaning |
---|---|
login name | 用户名 |
encrypted password | 加密的密码 |
data of lase password change | 上次修改密码的时间,时间参照unix元年,即上次修改密码的时间距Unix元年已过的天数 |
minimum password age | 密码最短使用期限,以上次修改密码的时间为准,即在上次修改密码的时间与密码最短使用期限内不能对密码进行修改 |
maximum password age | 密码最长使用期限 |
password warning period | 密码警告时间,以密码最长使用期限为准,即在密码最长使用期限的时间前几天的时间进行警告 |
password inactivity period | 非活动时间,以密码最长使用期限,即过了密码最长使用期限,在非活动时间内用户的密码还能使用,但是在下次登录之前必须修改密码,过了非活动时期用户不能正常登录,只能联系管理员修改密码 |
account expiration date | 用户账号过期日期,以Unix元年为准 |
reserved field | 保留字段 |
进一步说明
- /etc/group
- /etc/group文件说明
Segement | Meaning |
---|---|
group_name | 组名 |
password | 组密码 |
GID | 组ID |
user_list | 该组的用户成员,以此组为附加组的用户的用户列表 |
组密码的作用:
给组设定密码,属于该组的用户可以切换其基本组为该组;不属于该组的用户通过输入该组密码也能切换其为该用户的基本组,如果不设定组密码,则不能切换。
用户、组管理相关命令
1、useradd:创建新的用户或者更新用户一些默认的信息
命令用法:
- useradd [options] LOGIN
常用选项:
Options | Function |
---|---|
-u, --uid UID | 指定用户的UID |
-g, --gid GID | 指定基本组ID,此组得事先存在 |
-G, --groups GROUP1[,GROUP2,…[,GROUPN]] | 指明用户所属的附加组,多个组之间用逗号隔开 |
-c, --comment COMMENT | 指明注释信息 |
-d, --home HOME_DIR | 以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件 |
-s, --shell SHELL | 指定用户的默认shell,可用的所以shell列表存储在/etc/shells文件中 |
-r, --system | 创建系统用户 |
注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
-
useradd -D: 查看创建用户的默认配置
相当于查看/etc/default/useradd文件
-
useradd -D [options]:修改默认选项的值
修改的结果保存于/etc/default/useradd文件中
2、usermod:修改指定用户的属性
命令用法:
- usermod [OPTIONS] username
常用选项:
Options | Function |
---|---|
-u, --uid UID | 修改用户的ID为此处指定的新UID |
-g, --gid GROUP | 修改用户所属的基本组 |
-G, --groups GROUP1[,GROUP2,…[,GROUPN]] | 修改用户所属的附加组,原来的附加组会被覆盖 |
-a, --append | 与-G一同使用,用于为用户追加新的附加组 |
-c, --comment COMMENT | 修改注释信息 |
-d, --home HOME_DIR | 修改用户的家目录,用户 原有的文件不会被转移至新位置 |
-m, --move-home | 只能与-d选项一同使用,用于将原来的家目录移动为新的家目录 |
-l, --login NEW_LOGIN | 修改用户名 |
-s, --shell SHELL | 修改用户的默认shell |
-L, --lock | 锁定用户密码;即在用户原来的密码字符串之前添加一个’!’ |
-U, --unlock | 解锁用户的密码 |
3、userdel: 删除用户
命令用法:
- userdel [OPTION] username
Options | Function |
---|---|
-r | 删除用户时一并删除其家目录 |
4、passwd: 修改用户的密码信息
命令用法
-
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
-
passwd: 修改用户自己的密码
-
passwd USERNAME: 修改指定用户的密码,但仅root有此权限
常用选项:
Options | Function |
---|---|
-l, -u | 锁定和解锁用户 |
-d | 清除用户密码串 |
-e DATE | 过期期限,日期 |
-i DAYS | 非活动期限 |
-n DAYS | 密码的最短使用期限 |
-x DAYS | 密码的最长使用期限 |
-w DAYS | 警告期限 |
–stdin | echo “PASSWORD” | passwd --stdin USERNAME |
5、gpasswd:管理组和组密码
命令用法:
- gpasswd [option] group
常用选项:
Options | Function |
---|---|
-a USERNAME | 向组中添加用户 |
-d USERNAME | 从组中移除用户 |
6、newgrp: 临时切换指定的组为基本组
命令用法:
- newgrp [-] [group]
常用选项:
Options | Function |
---|---|
- | 会模拟用户重新登录以实现重新初始化其工作环境 |
7、id: 显示用户的组和有效ID
命令用法:
- id [OPTION]… [USER]
常用选项:
Options | Function |
---|---|
-u | 仅显示有效的UID |
-g | 仅显示用户的基本组ID |
-G | 仅显示用户所属的所有组的ID |
8、su: switch user
命令用法:
- su [options…] [-] [user [args…]]
常用选项:
Options | Function |
---|---|
-l USERNAME | 与 su - 功能相同,都是登录式切换用户 |
USERNAME | 非登录式切换用户 |
-c ‘COMMAND’ | 仅以指定的用户身份运行此处指定的命令 |
其他几个命令:chage, chsh, chfn, finger, whoami, pwck, grpck
权限管理
权限是Linux中一个重要的机制,保证了Linux的安全性,通俗的讲权限就是你能不能完成一件事。Linux中一个重要的哲学思想是一切皆文件,而对文件的操作一般有读、写以及执行,对于用户来说,对一个文件能进行如上的三个操作,就说该用户有相对应操作的能力,即就是有对应权限对文件进行操作,这个过程涉及了两个对象,一个是用户另一个是对象文件,所以在权限中用户和对象文件是必不可少的两个因素。我们思考一个问题,用户在console中执行cat命令来查看一个文件,想一下该用户为什么能查看该文件呢?
进程安全上下文:
进程对文件的访问权限应用模型
当一个用户利用cat查看某个文件时,内核会以该用户的身份发起cat这个进程;此时会判断进程的属主与文件的属主是否相同;如果不同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限;
文件的权限
Permission | Meaning |
---|---|
r | 可获取文件的数据 |
w | 可修改文件的数据 |
x | 可将此文件运行为进程 |
目录的权限
Permission | Meaning |
---|---|
r | 可使用ls命令获取其下的所有文件列表 |
w | 可修改此目录下的文件列表,即创建或者删除文件 |
x | 可cd至此目录中,其可使用 ls -l 来获取所有文件的详细属性信息 |
权限组合机制
Mode | Binary |
---|---|
- - - | 000 |
- - x | 001 |
- w - | 010 |
- w x | 011 |
r - - | 100 |
r - x | 101 |
r w - | 110 |
r w x | 111 |
权限管理命令
Linux中文件一般对应三个用户类型的权限:
Uers | Meaning |
---|---|
u | 属主 |
g | 属组 |
o | 其他用户 |
a | 所有用户 |
1、chmod: 改变文件的权限属性值
命令用法
- chmod [OPTION]… MODE[,MODE]… FILE…
MODE表示方法:
(1) 赋权表示法:直接操作一类用户的所有权限位rwx
u=- - -
g=- - -
o=- - -
a=- - -
(2)授权表示法:直接操作一类用户的一个权限位r, w, x
u+, u-
g+, g-
o+, o-
a+, a- - chmod [OPTION]… OCTAL-MODE FILE…
此方式是利用八进制格式来更改权限 - chmod [OPTION]… --reference=RFILE
此法是将某个文件的权限属性赋给指定文件,也可以说是参考某个文件的权限属性值
选项:
Options | Function |
---|---|
-R, --recursive | 递归修改 |
注意:递归修改建议在授权表示法下使用;用户仅能修改属性为自己的那些文件的权限
2、chown和chgrp: 文件从属关系管理
chown命令用法:
- chown [OPTION]… [OWNER][:[GROUP]] FILE…
- chown [OPTION]… --reference=RFILE FILE…ch
chgrp命令用法:
- chgrp [OPTION]… GROUP FILE…
- chgrp [OPTION]… --reference=RFILE FILE…
注意:仅管理员可修改文件的属主和属组
当某一用户创建文件或者目录时,都会默认创建一个默认权限的文件和目录,这是因为文件的权限返向码(遮罩码 umask)的存在。在创建文件时,文件的权限为666-umask;创建目录时,目录的权限为777-umask。
之所以文件用666减去,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限,则需要将其权限加1。
3、umask命令:
- umask: 查看当前umask
- umask MASK: 设置umask