浅析Linux系统下用户与权限管理
Linux作为一种多用户多任务操作系统,在日常的使用中不可避免地要划分出一个角色的概念来管理和使用计算机,这个角色与每一个计算机使用者关联,在Linux中称这种角色为用户。而在每一个用户使用计算机的过程中,又必然存在对有限计算机资源使用的限制性,那么操作系统就必须提供一种途径来保证每个用户独立、合理的使用计算机。
一、用户和用户组管理
(一)用户及用户组相关基本概念
用户:泛指计算机的使用者。用计算机可识别的用户ID(UID,user id)标识。
用户组:用户容器,用来将多个用户合并为一个单一的逻辑组件。用计算机可识别的用户组ID(GID,group id)标识。
UID和GID:都是16位二进制数,其范围为0-65535,共计2^16=65536个。
用户类别:
(1)管理员用户:被称为root,UID为0。
(2)系统用户:为系统运行提供服务的非登陆式用户,UID从1-999这个范围进行分配。
(3)登陆用户:真正使用计算机的普通用户,UID从500-60000进行分配。
组类别:Linux系统中用户组可按三种方式划分:
1、与类似用户的分类方式
(1)管理员组:管理员所在组,GID为0。
(2)系统用户组:系统用户所在组,GID为1-999。
(3)登陆用户组:登陆用户所在组,GID为1000-60000。
2、从用户角度出发分类
(1)用户的基本组:每个用户的主要组。
(2)用户的附加组:每个用户加入的其他组。
3、从用户组的角度出发分类
(1)私有组:组名和用户名相同,且只包含一个用户。
(2)公共组:组名包含多个用户。
认证信息:用户名和密码,通过比对事先存储的信息与登陆时用户提供的信息是否一致来认证用户。
那么遵从Linux中“一切皆文件”的哲学理念,认证信息也保存在文件来中。我们来认识三个文件分别是/etc/passwd、/etc/group和/etc/shadow,这三个文件分别保存了用户的信息、组的信息和密码的信息,当用户登陆时就是通过比对这三个文件中的信息来实现认证,接下来,我们对这三个文件的内容格式作出解释。
(1)/etc/passwd 文件字段说明
name:password:UID:GID:GECOS:directory:shell
① name:用户名
② password:可以是加密的密码,也可以是占位符x:
③ UID:用户ID
④ GID:用户所属的基本组ID
⑤ GECOS:可选,用户的注释信息
⑥ directory:用户的家目录
⑦ shell:用户的默认shell(登陆时)
(2)/etc/shadow 文件字段说明
① name:用户名。
② $加密算法$salt$加密密码:salt称为杂质,加密时添加。
③ 最近一次修改密码的时间:表示从1970年1月1日(unix元年)开始的天数;0表示用户下次登录时应该更改密码;空字段表示这个功能被禁止。
④ 最短使用期限:从更改密码开始,下次可更改密码经过的天数。
⑤ 最长使用期限:从更改密码开始,可合法使用此密码的天数。
⑥ 警告期限:在最长使用期限过期之前,警告密码应更改的天数。
⑦ 非活动期限:在最长使用期限后,此密码还可被使用的一段时间。
⑧ 账户过期期限:从1970年开始,账户可被使用的天数。
⑨ 保留字段

(3)/etc/group 文件字段说明
group_name:password:GID:user_list
① group_name:用户组名
② passwd:组密码
③ GID:用户组ID
④ user_list:以该组为其附加组的用户的用户列表;
(二)用户和用户组管理相关命令
命令概述:useradd,userdel,usermod,passwd,groupadd,groupdel,groupmod,gpasswd,chage,id,su,chown,chgrp
1、groupadd 添加组
使用格式 :groupadd [options] group
-g,--gid GID 指定GID;如不指定则默认是上一个已存在组的GID加1
-r, --system 创建系统组
# group add mygroup
# groupadd -r mygroup
2、groupmod 修改组属性
使用格式 : groupmod [options] GROUP
-g GID: 修改GID
-n new_name:修改组名
# groupmod -g 1002 mygroup
# groupmod -n mynewgroup mygroup
3、groupdel 删除组
使用格式: groupdel [options] group
# groupdel mynewgroup
4、useradd 创建用户
使用格式: useradd [options] LOGIN
-u,--uid UID:指定UID;
-g,--gid GROUP:指定基本组ID,此组需要事先存在
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之
间用逗号隔开
-c,--comment COMMENT:指定注释信息
-d,--homeHOME_DIR: 以指定的路径为用户的家目录;通过复制/etc/skel此目录并
重命名来实现:指定的家目录路径事先存在,则不会为用户复制环境配置文件;
-s,--shell SHELL:指定用户的默认shell,而可用的所有shell列表存储在/etc/shells文
件当中;
-r,--system:创建系统用户;
-M 不创建用户主目录
-f 密码过期后的使用天数,0表示禁用,-1表示永不禁用
-D 显示创建用户的默认设定
注意:创建用户时的诸多默认设定在/etc/login.defs文件中
# useradd myuser
5、usermod 更改用户属性
使用格式: usermod [options] LOGIN
-u,--uid UID :修改用户ID
-g,--gid GROUP 修改用户所属的基本组,
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的
附加组会被覆盖
-a,--append:与-G一起使用,用于为用户追加新的附加组;
-c,--comment COMMENT:修改注释信息
-d,--home HOME_DIR: 修改用户的家目录,用户原有的文件不会被转移至新位置;
-m,--move-home:只能与-d一起使用,用于将用户的主目录移动到新位置
-l,--login LOGIN:修改用户登录名
-s,--shell SHELL:修改用户的默认shell
-L,--lock:锁定用户密码
-U,--unclock:解锁用户的密码;
# 将用户myuser的家目录更改为/tmp/home/user,并且原来的用户配置不变,且更改用户的默认shell为tcsh
# usermod -s /bin/tcsh -d /tmp/home/user -m myuser
6、userdel 删除用户
使用格式: userdel[option] login
-r 删除用户时,一并删除其家目录
注意:当删除一个用户时,其基本组也会被删除。
# 删除用户myuser
# userdel myuser
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 USENAME
# 更改用户user的密码
# passwd myuser
8、gpasswd: 更改用户组密码
使用格式: gpasswd [option] group
-a USERNAME: 向组中添加用户
-d USERNAME: 从组中移除用户
# 更改用户组密码
# gpasswd mygroup
# 将用户myuser添加进mygroup组中,即让mygroup成为myuser的附加组。
# gpasswd myuser
9、chage 更改密码过期信息
使用格式: chage [options] LOGIN
-d:更改上次修改密码的期限
-E:更改账户过期期限
-I:更改密码的非活动期限
-W:更改警告期限
-m:更改密码最短使用期限
-M:更改密码最长使用期限
10、id 显示用户的真实和有效 id 信息
使用格式: id[OPTION]... [USER]
id:显示自己的ID信息
-u:仅显示有效UID
-g:仅显示有效基本组ID
-G:显示用户所属的所有组的ID
-n:不显示ID而显示名称(配合以上显示ID的选项一起用)
11、su 切换用户
登陆时切换:会重新读取目标用户的配置文件来重新初始化
su- USERNAME
su-l USERNAME
非登陆式切换:不会读取目标用户的配置文件来进行初始化
suUSERNAME
-c 'COMMAND':仅以指定用户的身份运行此处指定的命令
注意:管理员可无密码切换至其他任何用户;非管理员必须要给出目标用户的登陆密码
12、chown 更改文件属主或者属组或者属主和属组
使用格式: chown [OPTION]... [OWNER][:|.[GROUP]] FILE...
可以使用OWNER:GROUP或者OWNER.GROUP
chown [OPTION]... --reference=RFILE FILE...
选项:
-R,--recursive:递归修改
注意:用户仅能修改属主为自己的那些权限
# 将文件file1的属组和属主更改为mygroup和myuser
# chown myuser:mygroup file1
13、chgrp 仅更改属组
使用格式: chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可修改文件的属组
原文地址:http://www.linuxidc.com/Linux/2015-12/126635.htm
浅析Linux系统下用户与权限管理的更多相关文章
- Linux系统下用户与组的管理
Linux系统下用户与组的管理 一.用户及组基本概述 Linux 系统上,用户管理是基于用户名和密码的方式进行资源的分配. 1.uid(用户身份标识) (1)root用户 uid为0 (2)普通用户: ...
- linux学习17 运维核心技能-Linux系统下用户权限管理
一.权限管理 1.ls -l rwxrwxrwx 左三位:定义user(owner)的权限 中三位:定义group的权限 右三位:定义other的权限 1.进程安全上下文 a.进程对文件的访问权限应用 ...
- Linux系统的用户和用户组管理
一.用户账户管理 Linux/Unix是一个用户.多任务的操作系统:在讲Linux账号及账户组管理之前,先简单了解一下多用户.多任务操作系统的基本概念. Linux的单用户多任务 在Linux下,当你 ...
- linux ftp 添加用户及权限管理
Linux下创建用户是很easy的事情了,只不过不经常去做这些操作,时间久了就容易忘记,顺便配置一下FTP.声明:使用Linux版本release 5.6,并以超级管理员root身份运行. 1.创建用 ...
- Linux云计算-04_Linux用户及权限管理
Linux是一个多用户的操作系统,引入用户,可以更加方便管理Linux服务器,系统默认需要以一个用户的身份登录,而且在系统上启动进程也需要以一个用户身份器运行,用户可以限制某些进程对特定资源的权限控制 ...
- Linux系统下常用的磁盘管理命令——du / df / fdisk / mount / xxd
之前使用虚拟机体验Linux操作系统的使用,一般使用默认的磁盘分区设置,也很少涉及磁盘管理操作,且总有删除重装作为后盾.在安装Ubuntu双系统后,在使用过程中遇到了磁盘分区不合理导致的/boot分区 ...
- linux文件系统的用户和权限管理
1. 为什么要有用户的概念? 多用户,多任务业务对系统资源的隔离产生需求 2. linux 用户的分类? 2.1. 管理员 拥有操作所有文件的权限 2.2. 普通用户 2.2.1. 普通登录用户 2. ...
- 小白养成记——Linux中的用户和权限管理
1.用户组管理 每个用户都属于一个用户组,系统可以对一个用户组中的所有用户进行集中管理. 在创建用户时,如果未指定组,则系统会创建一个与用户名同名的组. 以下是关于用户组管理的一些基本命令: 新建用户 ...
- Linux系统下目录的权限意义
访问者及其基本权限 Linux系统内的文件访问者有三种身份,分别是: a) 文件和文件目录的所有者: u---User(所有权);b) 文件和文件目录的所有者所在的组的用户: g---Group;c) ...
随机推荐
- p标签里面不能嵌套div
先申明本人代码水平为零起点,刚开始学习前端,所以就是小白.不过大神也是小白变身的么,所以要专心码代码,潜心钻研,haha~ 今天练习了段代码,发现效果和自己想象的不一样: 想了一下估计是<p&g ...
- Linux Stu
指定命令别名 alias ..='cd ..' 命令连接符 持续的执行命令,不管错误 [命令1]; [命令2]; [命令3]; 前一个正确才执行下一个 [命令1] && [命令2] ...
- struts2学生信息管理系统篇章④
把util包中的代码做了一下注释,分享一下 DateUtil 类 package com.java1234.util; import java.text.SimpleDateFormat; impor ...
- springmvc的几点见解
@Controller //标注在Bean的类定义处 @RequestMapping //可以标注在类定义处,将Controller和特定请求关联起来. //可以标注在方法签名处,以便进一步对请求进行 ...
- Sql Server插入随机数
--处理性别随机select (case when round(rand()*10,0)>5 then '男' else '女' end), --处理时间段范围内随机select dateadd ...
- iOS和hybird移动端性能
作为一名写了⑦年代码的程序员,目前我最擅长的领域是IOS的客户端开发,在移动领域的开发时间2年. ⑦年前,我刚入行的时候,曾经认为自己将会永远做一个LINUX 服务端C++程序员,于是花了大 ...
- UIView之常用方法
UIView之常用方法 将一个视图添加为子视图,并使之在最上面显示 -(void)addSubView:(UIView *)view; 将指定子视图移动到顶部 -(void)bringSubViewT ...
- hdu1230火星A+B (大数题)
Problem Description 读入两个不超过25位的火星正整数A和B,计算A+B.需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数.例如:地球上的10进制数2,在火星上 ...
- 如何遍历json属性和动态添加属性
var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss', hello:function (){ for(var i=0;i< ...
- sae crop 文档
原文是google缓存:http://webcache.googleusercontent.com/search?q=cache:MD_FP-G6RI8J:sae.sina.com.cn/%3Fm%3 ...