您的位置:首页 > 运维架构 > Linux

Linux 入门学习之用户管理

2016-08-02 13:26 316 查看

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:密码tokenUID:用户ID,唯一性GID:基本组ID,只能有一个CECOS:注解信息HOME DIRECTORY:用户家目录,不指定默认为/home/[username]SHELL:用户的默认shell类型,默认为/bin/bahSHELL为/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/passwdvigr 作用等价于 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 usernamesu [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/usernamepasswd:usernamepass注意家目录相关配置,使用户正常登录
第一步:
vim /testdir/adduser.txt#创建指定格式用户信息文本文件
[root@mzf ~]# 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                #创建指定格式密码文本文件
[root@mzf ~]# 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来安全查看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐