Linux 入门学习之用户管理

Linux入门之用户管理

linux用户进行访问一般需要认证、授权、审计,其中linux提供了很多的相关命令和相关文件来供使用者分层管理。

用户分类 user

按权限划分:

管理员:root uid为0

普通用户:

系统用户:uid:1-499(centos6)  uid:1-999(centos7)

特性:1、用来运行特定进程的一种身份

2、对守护进程获取资源进行分配

3、不需要登录

登录用户:uid:500+(centos6)  uid:1000+(centos7)

用来登录系统的普通用户

注意:系统是用uid来区分用户的,如果root为500,tom用户uid为0,那么tom身份为超及管理员

用户组 group

按权限划分:

管理员组:root gid:0

普通组:

系统组:1-499(centos6)  1-999(centos7)

一般组:500+(centos6)  1000+(centos7)

按单个用户分配组划分:

用户组分类:

私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组

基本组:用户的默认组

附加组:默认组以外的其它的组

基本组和附加组区别:

primary group:主要组、基本组,一个用户只有一个

secondary group:辅助组、附加组,可以有多个,也可以没有

 

安全上下文

用来控制进程所能访问恩资源的权限取决于进程的发起者(执行者)的身份

用户及组相关的配置文件

/etc/passwd     用户及其属性信息(名称、UID、基本组GID等)

/etc/shadow    用户密码以及密码相关的属性

/etc/group      组的属性信息

/etc/gshadow    组的密码及相关属性

/etc/passwd   用户属性文件

account:登录名

password:密码token

UID:用户ID,唯一性

GID:基本组ID,只能有一个

CECOS:注解信息

HOME DIRECTORY:用户家目录,不指定默认为/home/[username]

SHELL:用户的默认shell类型,默认为/bin/bah

SHELL为/sbin/nologin时表示为无法登录

/etc/shadow   用户口令信息

用户名

加密的口令 !或*不能登录

最后一次修改口令的天数 为0表示登录时必须修改口令

口令最短使用期限

口令最长使用期限

警告天数

账号多少天后锁定

账号多少天后失效 从1970年计算

提示:如果最长使用期限小于最短使用期限,用户将不能修改密码

注意:date +%s 当前用户修改的秒数 / (24小时*60秒*60秒)=当前使用天数

/etc/group  用户组属性文件

组名

组口令:类似于/etc/passwd,口令信息被保存到影子文件(/etc/gshadow)中

gid : 类似入uid,于uid不冲突,但也是唯一性

以此为附加组的用户列表:如果为多个用户,中间用“,”隔开

注意:组文件关系修改后,必须重新登录才会重新读取组成员关系

/etc/gshadow  用户组密码及相关属性文件

组名

组密码:一般用于非组成员需要临时切换进入某组时需要输入密码

组成员列表:组管理员的列表,可以更改组成员变动和密码

以此为附加组的用户列表:如果为多个用户,中间用“,”隔开

用户及组相关文本操作工具

一般情况下,修改文本可能使用gedit、nano、vim等文本专用编辑工具,但是在某些情况下如果修改特殊格式的文本出现了内容或格式错误,一般难以检查,这时需要用到专用的用于修改特定文本的单一工具来检查格式

vipw  作用等价于 vi /etc/passwd

vigr   作用等价于 vi /etc/group

用于检查用户及组相关配置文件内容格式的命令

pwck  检查/etc/passwd中的用户及密码信息

grpck  检查/etc/group中的组及相关信息

注意:在/etc/paswd文件中,一般设定了密码的第二位(用:隔开的第二个字段)用x显示,这是说明把密码保存到了/etc/shadow中,但是可能在原来没有/etc/shadow文件,密码就是存在此文件中的第二字段,这时输入pwck命令将会把第二字段的密码移动到/etc/shadow中,添加一条信息,并将/etc/passwd文件第二字段设为x

关于口令加密的问题

加密方法:

对称加密:加密和解密使用同一个密码

公钥加密:每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key)

单向加密,散列加密:提取数据特征码,常用于数据完整性校验,hash算法不可逆推

1、雪崩效应:初始微小的改变都会引起全局巨大改变

2、定长输出

MD5:Message Digest, 128位定长输出

SHA1:Secure Hash Algorithm, 160位定长输出

 

更改新创建用户的加密算法

authconfig  --passalgo=[passtype]  --uptdate   (修改后只是再次新创建用户生效)

passtype(加密使用算法): md5、sha1、sha512等

使用openssl命令生成一个固定位数的复制口令

openssl  rand  --base64  #        生成base64算法的口令,#为位数

用户管理命令

useradd  usermod  userdel  id  su  passwd

useradd  添加用户

useradd  [option]  [uname]

-u # :指定uid

-o:不检查uid唯一性,一般和-u配合使用

-g [gname|gid]:指定基本组

-G [gname|gid]:指定附加组,多个用“,”隔开

-c “comment” :注释信息

-d /path/to/dir :指定家目录,目录事先不能存在,因为要自动生成

-s [shelltype] :指定用户的默认shell类型

-N:表示创建用户时不创建私有组做基本组

-r:添加为系统用户,一般和 -s /sbin/nologin配合使用

-M:不自动创建家目录,系统用户默认不创建

-D [option] [arg]:显示或设置新建用户的默认设置

如果加了选项和表示设置,如useradd -D -s /bin/bash修改默认shell类型

提示:useradd  -D显示的默认设置保存在/etc/default/useradd文件中,如果创建用户时使用了-N(及不创建同名私有组做基本组),那么就把此用户加入到文本中GROUP字段中字段指定GID的组作为基本组,一般默认GID为100,表示组名为USERS的组

userdel 删除用户命令

userdel  [option]  [uname]

-r :默认不加表示保存用户家目录,加此选项会彻底删除家目录

usermod 修改用户配置信息命令

usermod [option] [uname]

-u #:修改uid

-l [newname]:修改用户的账号名

-g #:修改所属基本组

-G [group1],..:修改附加组

-a:表示append(追加),一般和-G配合使用追加附加组

-c "COMMENT":修改注释信息

-s [SHELL]:修改默认shell类型

-d:修改家目录

-m:一般配合-d选项,表示迁移家目录数据

-L:表示锁定(lock)用户      在/etc/shadow第二字段(密码口令)中加入!

-U:表示解锁(unlock)用户    在/etc/shadow第二字段(密码口令)中拿掉!

-e [YYYY-MM-DD]:指定账号过期时间,-1表示不过期

-f [day]: 指定非活动期限

 

id 查看用户相关的id信息

id  [option]  [username]

-u: 显示uid

-g:显示gid

-n:显示名字

-G:显示GROUPS

su: 切换用户 switch username

su  [option] [-] [uname]  不指定用户名默认表示切换至root

-   [uname]           完全切换

-c  ‘[command]’        通过临时调用指定用户身份来执行命令

如:su - root -c “ls /etc/shadow”     #以root身份查看密码配置文件

-l  [uname]: 等价于 - [uname] 或 --login [uname]

提示:关于切换方式介绍

su uname:非登录式切换,既保留当前用户的配置,不改变当前工作目录

su - uname:登陆式切换,会读取自身的用户配置,并切换至家目录

root用户下切换到其它用户无需密码,非root切换时需要密码

passwd  用户密码信息设置命令

passwd  [option]  [uname]  只有root用户有权限设置指定用户信息

-l:lock表示锁定指定用户

-u:unlock表示解锁指定用户

-e:强制用户下次登陆时修改密码

-x maxday:密码最长使用期限

-n minday:密码最短使用期限

-w warndays:表示提前多少天发出警告

-i inactiveday:非活动期限

--stdin:从标准输入接收用户密码

例如: echo “PASSWORD” | passwd  --stdin USERNAME

chage  修改密码及账户相关信息

chage   [OPTION]...   [USERNAME]

-d LAST_DAY  密码最后修改时间

-E, --expiredateEXPIRE_DATE 账户过期时间

-I, --inactive INACTIVE非活动期限

-m, --mindaysMIN_DAYS设置密码最短使用期限

-M, --maxdaysMAX_DAYS设置密码最长使用期限

-W, --warndaysWARN_DAYS密码警告期限

–l,显示密码策略

例子:

chage  -d  0  tom   
#表示下次tom登录必须修改密码
chage  -m  0  -M  42  -W 14  -I  7  tom
#表示tom用户密码最短可以不使用,最长使用到42天,第14天开始警告,前一周用户为非活动状态
chage  -E  2016-09-10 tom
#设定用户到2016年9月10号不能再次登陆并使用

用户其它信息的相关命令

chfn  设置个人备注信息(如电话、姓名等)

chsh  [shelltype]  设置当前默认shell类型

finger  查看备注信息

用户组管理命令

groupadd  groupmod  groupdel  gpasswd  newgrp  groupmems  groups

groupadd 添加组命令

groupadd  [option]  [gname]

-g #:指定gid

-r:创建为系统组

groupmod 修改或设定组属性信息

groupmod  [option]  [gname]

-g #:设置组的gid

-n newgname:修改组名字

groupdel 删除组

groupdel   [gname]

gpasswd  设置组密码、组成员关系

gpasswd  [option]  GROUP

-a user:将指定用户添加至指定组中

-d user:将指定用户从指定组中删除关系

-A user1,user2... :设置指定用户对指定组有管理权限,既组管理者

newgrp 临时切换基本组

newgrp  <gname>

如果用户不属于此组,则需要组密码

groupmems 组成员关系调整命令

groupmems  [option]  [action]

option:

-g  <gname>:更改为指定组

action:

-a ,--add username:指定用户加入组

-d ,--del username:从组删除指定用户

-l:列出组成员列表

-p ,--purge:清除所有成员

groups 根据用户查看组信息

groups [option] [uname] 不指定用户默认为查看当前登录用户的组

getent  查看指定配置文件信息

getent  [cmd]  [uname]  默认不指定用户为查看所有

cmd:

passwd   查看/etc/passwd下信息

group    查看/etc/group下信息

shadow   查看/etc/shadow下信息

gshadow  查看/etc/gshadow下信息

批量创建用户和设置用户密码

newusers  [userfile]

chpasswd  [passfile]

file:为特定格式

userfile:   用户名:x :uid :gid : 家目录 : 默认shell类型

passfile:   用户名:密码

案例:

1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

useradd  -G bin,root -s /bin/csh -c "Gentoo DIStribution" gentoo

2、创建下面的用户、组和组成员关系

名字为admins 的组

用户natasha,使用admins 作为附属组

用户harry,也使用admins 作为附属组

用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos

groupadd admins                      #添加admins组
useradd -G admins natasha #添加natasha用户附加组为admins
useradd -G admins harry                #添加harry用户附加组为admins
useradd -s /sbin/nologin sarah       #添加sarah并指定默认shell类型为不登陆
echo "centos" | passwd --stdin natasha     #通过管道将输出传给标准输入修改密码
echo "centos" | passwd --stdin harry
echo "centos" | passwd --stdin sarah

3、创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser

useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser testuser
id test                    #查看test用户id gid等信息

4、修改testuser uid:4321,主组:root,辅助组:nobody,loginname:test,home:/home/test 家数据迁移

usermod -u 4321 -g root -G nodody -l test -d /home/test -m testuser
id user
groups test
groupmems -l -g root
ls -a /home/test

5、批量创建帐号:user1...user10

uid:3000-3009,shell:/bin/csh,home:/testdir/username

passwd:usernamepass

注意家目录相关配置,使用户正常登录

第一步:

vim /testdir/adduser.txt#创建指定格式用户信息文本文件
[[email protected] ~]# cat /testdir/addusers.txt    #要添加的内容
user1:x:3001:3001::/testdir/user1:/bin/csh
user2:x:3002:3002::/testdir/user2:/bin/csh
user3:x:3003:3003::/testdir/user3:/bin/csh
user4:x:3004:3004::/testdir/user4:/bin/csh
user5:x:3005:3005::/testdir/user5:/bin/csh
user6:x:3006:3006::/testdir/user6:/bin/csh
user7:x:3007:3007::/testdir/user7:/bin/csh
user8:x:3008:3008::/testdir/user8:/bin/csh
user9:x:3009:3009::/testdir/user9:/bin/csh

第二部:

newuser /testdir/adduser.txt    #对刚才的文件做批量添加用户读取

第三部:

vim /testdir/addpasswd.txt                #创建指定格式密码文本文件
[[email protected] ~]# cat /testdir/addpasswd.txt  #内容入下
user1:user1pass
user2:user2pass
user3:user3pass
user4:user4pass
user5:user5pass
user6:user6pass
user7:user7pass
user8:user8pass
user9:user9pass

第四步:

cat /testdir/addpasswd.txt | chpasswd    #对密码文件做匹配设定密码操作

第五步:

tail -n 9 /etc/passwd                    #操作最近添加的9个用户信息
tail -n 9 /etc/shadow                    #查看最近添加的9个用户的密码信息
 
getent passwd | tail -n 9#作用同上面2条命令
getent shadow | tail -n 9

第六步:

cat /etc/default/adduser#查看默认配置信息
 
cp -r /etc/kel/.[^.]* /testdir/user1#将默认用户配置模板文件拷贝至家目录
cp -r /etc/kel/.[^.]* /testdir/user2
cp -r /etc/kel/.[^.]* /testdir/user3
cp -r /etc/kel/.[^.]* /testdir/user4
cp -r /etc/kel/.[^.]* /testdir/user5
cp -r /etc/kel/.[^.]* /testdir/user6
cp -r /etc/kel/.[^.]* /testdir/user7
cp -r /etc/kel/.[^.]* /testdir/user8
cp -r /etc/kel/.[^.]* /testdir/user9

总结:在调整用户组关系信息中有很多命令可以使用,usermod可以指定用户来设定,groups可以指定用户来查看,而指定组可以用gpasswd和groupmems,查看各种配置信息,可以用getent来安全查看

时间: 2024-10-26 05:06:50

Linux 入门学习之用户管理的相关文章

linux命令学习系列-用户管理2

先复习一下上节内容: 1.       用户和用户组的基本介绍,UID,GID,用户类型(普通用户,系统用户,根用户) 2.       用户和组常用命令id,groups,who命令,加用户名参数和不加用户名参数的区别 3.       用户添加命令useradd,执行命令后系统进行了哪些操作,如何通过参数自定义添加用户信息 4.       同时还给大家留了一个小作业,不知道大家完成了没有呢,作业的命令是 useradd –u 503 –g users –d /home/users user

Linux学习之用户管理命令与用户组管理命令(十五)

Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel 用户切换命令su 用户组管理命令 添加用户组 修改用户组 删除用户组 将用户添加到组或者从组中删除 用户管理命令 用户添加命令useradd 只能超级用户才能添加用户. useradd [选项] 用户名 选项: -u UID:手工指定用户的UID号 -d 家目录:手工指定用户的家目录 -c 用户说明

Linux入门学习教程:虚拟机体验之KVM篇

在上一篇中,我展示了虚拟机软件QEMU的使用.效果及其性能,同时也分析了不同用户对虚拟机的不同追求.但是不管是桌面用户还是企业级用户,对虚拟机 软件的追求有一点是共同的,那就是性能.QEMU是一个强大的虚拟机软件,它可以完全以软件的形式模拟出一台完整的电脑所需的所有硬件,甚至是模拟出不同 架构的硬件,在这些虚拟的硬件之上,可以安装完整的操作系统.QEMU的运行模式如下图: 很显然,这种完全以软件模拟硬件的形式虽然功能强大,但是性能难以满足用户的需要.模拟出的硬件的性能和物理硬件的性能相比,必然会

Linux 程序设计学习笔记----进程管理与程序开发(下)

转载请注明出处:http://blog.csdn.net/suool/article/details/38419983,谢谢! 进程管理及其控制 创建进程 fork()函数 函数说明具体参见:http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html 返回值:Upon successful completion, fork() shall return 0 to the child process and shall re

Linux系统学习之用户与用户组

在Linux中,每个用户都拥有一个唯一的用户名和与之相关的用户标识符(UID,数值型).一个用户可以属于多个用户组,每个用户组都拥有唯一一个名称和一个用户组标识符(GID,数值型). UID和GID的主要用途有:一,确定各种系统资源的所有权:二,对赋予进程访问资源的权限进行控制. 说起用户和用户组,就必须谈谈相关的系统文件:/etc/passwd./etc/shadow和/etc/group.这些文件在Linux系统上都是以纯文本的形式存储.我们可以使用编辑器来修改它,也可以使用专有的命令来更改

Linux 程序设计学习笔记----进程管理与程序开发(上)

转载请注明出处,http://blog.csdn.net/suool/article/details/38406211,谢谢! Linux进程存储结构和进程结构 可执行文件结构 如下图: 可以看出,此ELF可执行文件存储时(没有调入内存)分为代码区.数据区和未出花数据区三部分. 代码区:存放cpu的执行的机器指令. 数据区:包含程序中的已经初始化的静态变量,以及已经初始化的全局变量. 未初始化数据区:存入的是未初始化的全局变量和未初始化的静态变量. 现在在上面的程序代码中增加一个int的静态变量

linux内核学习:进程管理

进程状态 TASK_RUNNING 可运行或正在运行 TASK_INTERRUPTIBLE 进程被阻塞,但可以被信号唤醒 TASK_UNINTERRUPTIBLE 进程被阻塞,且不可以被信号唤醒 TASK_STOPPED 进程已停止,且不能再投入运行 TASK_ZOMBIE 所谓的僵死进程,进程描述符仍然保留 关键函数和结构 task_struct thread_info current clone fork exec wait exit linux内核学习:进程管理,布布扣,bubuko.co

—linux 磁盘配额按用户管理(quota)

我根据下面的ref链接整理的基本是的按用户额度管理步骤 (按组的额度管理被简化掉) 我在Ubuntu服务器12.04下整理,其他版本的Ubuntu和Linux应该都没有问题的 (有任何错误都指正给我,包括typo) <->准备: sudo apt-get install quota <二>按用户名配额步骤如下: 1. 设定有配额的分区:/etc/fstab: like: UUID=5ce4f28a-23ce-464a-86e0-7caa61503961 /mnt/sdb3    

linux下mysql的用户管理及访问问题

1.mysql的安装配置 linux下有一个很神奇的东西叫yum,只要有源,用yum来安装是一件非常容易的事,什么都不用管,它会为你解决好一些软件依赖的问题.一键安装mysql: [[email protected] ~]# yum install mysql-server mysql-devel 安装完成后我们就可以使用mysql了: [[email protected] ~]# /etc/init.d/mysqld start Starting mysqld: [ OK ] [[email