一. 用户、组
用户:资源获取标识符,资源分配,安全权限模型的核心要素之一
密码:来实现用户认证的
注意: linux中依据用户id 来识别用户,而不是用户名
(windows中组名和用户名不可以一样)
(linux 中,组名和用户名可以一样,ID可以可以一样,两者是不同的)
Linux安全上下文
运行中的程序:进程 (process)
以进程发起者的身份运行(而不是进程所有者):
eg: root: /bin/cat
mage: /bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份
Linux用户类型: Username/UID
管理员: root, 0
普通用户: 1-65535
系统用户: 1-499( CENTOS6) , 1-999 (centos7)(家目录、邮箱不会自动创建)
(对守护进程获取资源进行权限分配, nologin)
登录用户:500( CENTOS6) +, 1000+
使用交互式登录
Linux组: Groupname/GID
一种容器:能够容纳很多用户的容器,可以分配权限 组(group),角色(role)
管理员组: root, 0
普通组:
系统组: 1-499(Centos6), 1-999(centos7)
普通组: 500+(6), 1000+(7)
Linux组的类别:
用户的主要组(主组):
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户:私有组
用户的附加组(辅助组):
一个用户可以属于零个或多个辅助组
( 注意: 一个账号可以属于多个组,但是只能有一个主组primary group,
其他组为辅助组secondary group)
二.Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、 UID、主组ID等)
(普通用户无权限访问和修改)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
(当用于没有设置密码时,密码处会有两个!!,表示不允许登录,如果删除!!,则无密 码直接可以登录,此处是一个安全隐患,5以后的版本已经无法操作)
/etc/gshadow:组密码及其相关属性
/etc/passwd文件格式详解:
格式(实例):
natasha:x:504:505::/home/natasha:/bin/bash
login name:登录用名( natasha)
passwd:密码 (x)
UID:用户身份编号 (504)
GID:登录默认所在组编号 (504)
GECOS:用户全名或注释 (此处为空白)
home directory:用户主目录 (/home/natasha)
shell:用户默认使用shell (/bin/bash)
/etc/shadow文件格式详解:
格式:lin:$6$gHS24uAlG8TAHbeK$.7EMOA9iS19/CshbmHjeZwlAiCbjKmP8z9VTKbAqWZDihACn
sG7lbFp6LVXDlgvk/tDbIhx9uE7kaVtoVqDc9.:17014:0:99999:7:::
登录用名:lin
用户密码:一般用sha512加密
第一个$后内容代表加密算法
第二个$之后的为杂质
第三个$后的内容为加密后的密码
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更( 0表示随时可被变更)
密码再过几天必须被变更( 99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效。
/etc/group 文件格式详解:
格式:lin:x:500:
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在/etc/gshadow
GID:就是群组的 ID
以当前组为附加组的用户列表(分隔符为逗号)
/etc/gshadow 文件格式详解:
格式: admins:!::natasha
群组名称:就是群组名称
群组密码:! (无密码)
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表: (分隔符为逗号)
注意:以上四个文件,介意使用一下命令来修改内容,在退出时可以检测语法错误
vipw = vi /etc/passwd
vigrp = vi /etc/group
pwck/grpck :用于检测passwd、group两个文件是否有错误
三.用户、组管理命令
1.用户管理
用户添加: useradd [options] LOGIN(仅支持操作单个用户,不可同时操作多个)
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
-o 配合-u 选项,不检查UID的唯一性(可以强行指定ID,即使已经ID相同的用户)
-g GID:指明用户所属基本组,可为组名,也可以GID
-c "COMMENT":用户的注释信息
-d HOME_DIR: 以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存
在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户 CentOS 6: ID<500, CentOS 7: ID<1000
useradd 默认值设定: /etc/default/useradd文件中
显示或更改默认设置:
useradd -D
useradd –D -s SHEL
/etc/skel/ 详解:
skel:skeleton(框架),用于初始化新用户的根目录,即每当一个新用户被添加,才目录下的全
部文件会原封不动复制到新用户的家目录下
注:
1.如果在新建用户时,没有自动建立用户根目录,则无法调用到此框架目录。
2.如果不想以默认的/etc/skel目录作为框架目录,可以在运行useradd命令时指定新的框架目
录。例如:
sudo useradd -d /home/chen -m -k /etc/my_skel chen
上述命令将新建用户chen,设置用户根目录为/home/chen,并且此目录会自动建立;同时
指定框架目录为/etc/my_skel。
3.如果不想在每次新建用户时,都重新指定新的框架目录,可以通过改/etc/default/useradd
配置文件来改变默认的框架目录,方法如下:
查找SKEL变量的定义,如果此变量的定义已被注释掉,可以取消注释,然后修改其值:
SKEL=/etc/my_skel
/etc/login.defs
login.defs是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,密码的最大
长度约束等内容。该文件里的配置对root用户无效。如果/etc/shadow文件里有相同的选项,
则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs #
主要内容解释:
MAIL_DIR/var/spool/mail注:创建用户时,要在目录/var/spool/mail中创建一个用户mail
文件;
PASS_MAX_DAYS99999注:用户的密码不过期最多的天数;
PASS_MIN_DAYS0注:密码修改之间最小的天数;
PASS_MIN_LEN5注:密码最小长度;
PASS_WARN_AGE7注:密码过期警告时间
UID_MIN500注:UID 最小值规定
UID_MAX60000注:UID最大值规定
CREATE_HOMEyes注:是否创用户家目录,要求创建;
批量创建用户 newusers passwd(格式文件)
使用方法:1.先创建格式与/etc/passwd文件一直的文件,需要添加的用户及其信息均填入其中
2. newusers 格式文件 即可
注意:此方法生成的用户,需要手动建立对应的家目录
方法: 复制某用户家目录下文件至相应新建家目录即可
批量修改用户口令 chpasswd
(用法与上述一致,文件格式改为/etc/passwd中用户、密码这两部分即可,后面的内容不需
要加入)
用户属性修改 usermod [OPTION] login (只能操作一个用户)
-u UID: 新UID
-g GID: 新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加
组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
-s SHELL:新的默认SHELL;
-c ‘COMMENT‘:新的注释信息;
-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移
动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字;
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;
删除用户 userdel [OPTION]... login(单用户操作)
-r: 删除用户家目录
用户ID信息查询 id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: Name
用户切换
su [options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
su [-] UserName -c ‘COMMAND‘
选项: -l --login:
su -l UserName 相当于 su - UserName
用户密码修改
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码;
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限;
--stdin:从标准输入接收用户密码;
echo "PASSWORD" | passwd --stdin USERNAME
用户密码策略修改
chage [OPTION]... LOGIN
-d LAST_DAY
-E, --expiredate EXPIRE_DATE
-I, --inactive INACTIVE
-m, --mindays MIN_DAYS
-M, --maxdays MAX_DAYS
-W, --warndays WARN_DAYS
–l,显示密码策略
下一次登录强制重设密码
chage -d 0 tom
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
其他快捷命令:
chfn 指定个人信息
chsh 指定shell
finge 需手动添加的命令,默认下未安装,可以查看用户详情
2.组创建组 groupadd [OPTION]... group_name
-g GID: 指明GID号; [GID_MIN, GID_MAX]
-r: 创建系统组;
CentOS 6: ID<500
CentOS 7: ID<1000
修改、删除组
组属性修改: groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID;
组删除: groupdel
groupdel GROUP
组密码修改
组密码: gpasswd
gpasswd [OPTION] GROUP
-a user: 将user添加至指定组中;
-d user: 从指定组中移除用户user
-A user1,user2,...: 设置有管理权限的用户列表
newgrp命令:临时切换基本组;
如果用户本不属于此组,则需要组密码
修改、查看组成员
groupmems [options] [action]
options:
-g, --group groupname 更改为指定组 (只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups [OPTION].[USERNAME]... 查看用户所属组列表