系统基础之用户,组及权限管理

用户及组详解


概论:


  现今,大多数操作系统都是多用户(Multi-tasks)多任务(Mulit-Users)的系统.在多年前,计算机资源远没有现在这么丰富,都是多人使用同一台计算机,为了保障使用计算机的用户权益不受到损害,完成资源使用隔离,人们采取了用户机制标识使用者的方法.

 每个使用者都是用户,用户是由UID进行标识,通过密码进行身份验证机制.而为了方便管理用户,人们又发明了组,组是用户的集合,由GID进行标识.在用户创建时,系统要求用户必须指定一个主组,且主组是唯一的,也可以不加或添加多个附加组.

 在对用户和组的管理上,为了安全性,有3A机制进行保护用户和组.3A分别为:

   认证机制:Authentication      登录 (用户名+密码)

   授权机制:Authorization       设置权限    

   审计机制:Audition          使用过程记录日志

 安全上下文(senurity context):

   进程以其发起者的身份运行,拥有发起者的权限

   进程对文件(系统资源)的访问权限,取决于发起此进程的用户及用户所属组的权限 而不是进程本身的权限 最好是所需要拥有的最小权限,不能拥有管理员权限

   为了能够让那些后台进程或服务进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从来不用登录系统 成为系统用户。


用户及组的介绍:


用户及组的类别:

用户分类

  管理:

  普通:    

   系统用户

   登录用户

  用户标识:UserID,UID  (16bits 二进制数字:1-65535)

   管理员:0

   普通用户:1-65535

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

    登录用户:500-60000(centos6),1000-60000(centos7)

  名称解析:名称转换

     Username <–> UID

    根据名称解析库进行:根据用户输入的名称与库(/etc/passwd)的数据做对比,转化名称,判断用户名是否存在,存在进入下一步登录,不存在则报错.   


组分类:

组类别1:

  管理员组:

  普通用户组:

    系统组:

    登录组:

  组标识:GroupID,GID              

   管理员组:0

   普通用户组:1-65535

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

    登录用户组:500-60000(centos6),1000-60000(centos7)

  名称解析:groupname <—->gid解析 库文件:/etc/group

组类别2

   用户的基本组: 用户的主组,每个用户只有一个

   用户的附加组:用户的附加组,可以没有且有多个

组类别3:

私有组:组名同用户名,且只包含一个用户

公共组:组内包含了很多个用户


用户及组的认证信息:

通过比对事先存储的密码信息,判断与登录时提供的信息是否一致

password:

  /etc/shadow 用户密码库文件

  /etc/gshadow 组密码库文件

密码的使用策略

1.使用随机密码

2.最短长度不低于8位

3.大小字母,数字,标点符号组合使用

4.定期更换   (随机生成字符串命令:  openssl rand -base64 10(20))

密码加密算法:

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

 加密机:输入明文,输出密文 解密机:输入密文,输出明文 

非对称加密:加密和解密使用的一对密钥。 使用公钥加密的,使用同对的密钥解密

  公钥:public key 

  私钥:private key

单向加密;只能加密,不能解密。提取数据特征码,例如:指纹,瞳  借助salt完成

  特征:

    定长输出,   2的512次方

[root@wen-7 shell]# echo “wen1”|sha512sum 
f7a02b034fffa7ee6faecdfd9114cee0a79467f76a379e7a4e7141c0fe9ed506df54c5c13ebbb3f85bed174f691670f761135720252674c673c2a3ab1388a864  -
[root@wen-7 shell]# echo “wen1rsdasdsadsa”|sha512sum 
18c75133db89c3f4054c4933db1041a8ab962f9d6b5bef4130a873f9bbfd37d6bf5e19c9fb13b0ff98f4e7aa618d891eadfb3497d85d10a0a61098096fb2259c  -

     雪崩效应,初始条件的微小改变,引起整体巨大变化,一个字符的变化,结果完全不同    

[root@wen-7 shell]# echo “wen”| md5sum
28dea8a57263903409d64b9e9731b5c0  -
[root@wen-7 shell]# echo “wen1”| md5sum
1d1f3e6cdcbb3b13b5b13d7a56119cbd  -

算法的种类:

MD5     128bit  (centos5系以下默认使用)

sha1    160bit

sha224   224bit

sha256   256bit

sha385   385bit

sha512   512bit  (centos6系以上默认使用

 密码创建时,用户输入的密码加随机数(salt),生成密文,保存在库文件中。用户再次登录时,输入密码,系统会自动把在密码库保存的上次使用的随机数补在用户输入字符串中,生成密文,与库文件中的实现存放的密文比较,如果密文一样,则表示密码正确,允许用户登录,不一样则报密码错误.

   在计算之时加salt,添加的随机数,相同的密码明文,密文不同

root@w6 home]# echo "centos" | passwd --stdin gentoo
[root@w6 home]# getent shadow gentoo
gentoo:$6$j9cSCq/L$7EwxsVScKKD176GnRiEzDAIBB2ewADEDSFcyBN12mza1JRhoMzvwueA1Tt1A1C4c4Q3.qHLyZMMv3KdCiXfEB/:17012:0:99999:7:::
[root@w6 home]# echo "centos" | passwd --stdin gentoo
[root@w6 home]# getent shadow gentoo  
gentoo:$6$JH5FOiaJ$3d0jDjigI5J7ZQoetn0J.lVdE9SjUAiIFOv08YEOlJ.COe8eR.0/YPZBNHlRHHzSuG74pyDoHl41/yd.NwuQU0:17012:0:99999:7:::

  可以更改系统默认密码算法,

    authconfig --passalgo=sha512 --update

命令如下:      

[root@w6 home]# authconfig --passalgo=sha512 --update 
[root@w6 home]# tail -5 /etc/login.defs   #此目录记载着创建用户的默认配置

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512

MD5_CRYPT_ENAB no
[root@w6 home]# authconfig --passalgo=sha256 --update 
[root@w6 home]# tail -5 /etc/login.defs 

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA256

MD5_CRYPT_ENAB no


用户及组的密码库格式:

1./etc/passwd/格式:  

   account:password:UID:GID:GECOS:directory:shell

   (帐号:密码:用户ID:组ID:一般的信息:目录:shell)

   name;用户名

   password:可以是加密的密码,也可以是占位符X  /etc/shadow保存加密密码(man pwconv :影子密码)

   UID:用户ID

   GID:用户所属的主组的ID号

   GECOS:可选的 提供用户的注释信息

   directory:用户的家目录 

   shell:用户的默认shell类型,登录时默认shell程序


        

2./etc/shadow      

   wen:$6$FGHaaLgp2OWH/K03sMzZDNmN.0AD0:17001:0:99999:7:::

   登录名:

   加密的字码串:                       不设密码的用户,此位默认为!!;

   最后一次更改密码的日期(从1970年1月1开始计算的天数):

   密码最短使用期限:这些天之后,用户必须更改密码。

   密码最长使用期限:这些天之后,用户必须更改密码。

   密码警告时间段:密码过期之前,提前警告用户的的天数

   密码禁用期:密码过期后,仍然接受此密码的天数,在此期间,用户应该在下次登录时修改码)。

   密码到期并且过了这个宽限期之后,使用用户的当前的密码将会不能登录。用户需要联系统管理员

   账户过期日期:账户过期不同于密码过期。账户过期时,用户将不被允许登录;密码过期时,用户将不被允许使用其密码登录。

   保留字段

1470195876551559.png

  pwunconv pwnconv   开启|关闭密码转化命令,实现密码加密分位存放 关闭后,/etc/shadow文件会消失

[root@w6 home]# pwunconv            #关闭密码转换
[root@w6 home]# ll /etc/shadow        #保存密文密码文件 不存在
ls: cannot access /etc/shadow: No such file or directory
[root@w6 home]# useradd yum1 ;echo "yum123"|passwd --stdin yum1 
Changing password for user yum1.
passwd: Authentication token manipulation error
[root@w6 home]# getent passwd yum1
yum1:!!:506:507::/home/yum1:/bin/bash          #新创建用户 密码格式异常

[root@w6 ~]# pwconv                #开启密码转换
 [root@w6 ~]# exit                    #命令生效,需重新登录用户
[root@w6 ~]# ll /etc/shadow           #保存密文密码文件恢复
-r--------. 1 root root 1946 Jul 30 15:27 /etc/shadow
[root@w6 ~]# useradd yum3 ;echo "yum123"|passwd --stdin yum3
Changing password for user yum3.
passwd: all authentication tokens updated successfully.
[root@w6 ~]# getent shadow  yum3              #用户密码继续用密文存储
yum3:$6$oW7NIo9Z$b53zN7S.m/nt/WDgUl5wMun9YA1jVkjieNQeEYPUJNcIU9iRteR1FhruUeGz66aGF6569eHDQYaQK9SHHStOb.:17012:0:99999:7:::

3./etc/group 组的信息库                      

  admins:x:502:natasha,harry

  group_name:passwd:GID:user_list

   group_name:组名

   password:(加密的)组密码.如果该字段为空,则不需要密码.

   GID  :  组的数字标识.

   user_list:组内所有成员的用户名,以逗号分隔.

4./etc/gshadow

  admins:!::natasha,harry

   组名:

   组密码:

   组管理员用户:

   组成员列表:


用户及组的管理使用:


用户及组的查看命令:

(1)groups Username: 查看用户所在的组

[root@w6 ~]# groups wen
wen : wen
[root@w6 ~]# groups gentoo
gentoo : gentoo root bin

(2)getent:

getent shadow  username= cat /etc/shadow | grep "wen"   查看密码存放文件

默认使用,显示文件全部内容.后接用户名,只显示指定用户名的所在行

[root@w6 ~]# getent shadow yum3
yum3:$6$oW7NIo9Z$b53zN7S.m/nt/WDgUl5wMun9YA1jVkjieNQeEYPUJNcIU9iRteR1FhruUeGz66aGF6569eHDQYaQK9SHHStOb.:17012:0:99999:7:::

getent passwd= cat /etc/passwd  查看用户密码文件

默认使用,显示文件全部内容.后接用户名,只显示指定用户名的所在行

[root@w6 ~]# getent passwd yum1
yum1:x:506:507::/home/yum1:/bin/bash

(3)vipw= vim /etc/passwd 比用文本编辑器 打开密文文件更安全,默认进入编辑界面 检查文件格式

[root@wen-7 ~]# vipwroot:x:0:0:root,123,123,12345:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologin

(4)  vigr =vim /etc/group 比用文本编辑器 打开密文文件更安全,默认进入编辑界面

[root@wen-7 ~]# vigrroot:x:0:bin:x:1:daemon:x:2:sys:x:3:adm:x:4:tty:x:5:disk:x:6:

groupmems -1 -g groupname:查看组内其他成员   修改配置文件,永久生效

[root@wen-7 ~]# groupmems -l -g gentoowen  zhifei [root@wen-7 ~]# groupmems -l -g wenzhifei

strace useradd usesrname:查看创建用户时,系统底层修改过程,调用过程

[root@wen-7 ~]# strace useradd zhifieexecve("/usr/sbin/useradd", ["useradd", "zhifie"], [/* 27 vars */]) = 0brk(0)                                  = 0x7f09e982a000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09e8692000access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=104555, ...}) = 0mmap(NULL, 104555, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f09e8678000close(3)                                = 0

chfn Username:添加用户注释信息

[root@wen-7 ~]# chfn wenChanging finger information for wen.名称 [wen]: wen办公 []: 12456办公电话 []: 5453214住宅电话 []: 133433123435          Finger information changed.[root@wen-7 ~]# getent passwd wen
wen:x:1000:1000:wen,12456,5453214,133433123435:/home/wen:/bin/bash


finger:显示用户的备注信息

[root@wen-7 ~]# finger wenLogin: wen            			Name: wenDirectory: /home/wen                	Shell: /bin/bashLast login 二 8月  2 08:32 (CST) on pts/0Mail last read 四 7月 28 21:39 2016 (CST)No Plan.

chsh :

  -s /bin/ch 修改当前系统shell类型

  -l 显示shell类型列表

[root@wen-7 ~]# chsh -l/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin/bin/tcsh/bin/csh/bin/zsh[root@wen-7 ~]# chsh -s /bin/cshChanging shell for root.Shell changed.

pwck:pwck: 检查passwd 文件语法

  

[root@wen-7 ~]# pwck用户“avahi-autoipd”:目录 /var/lib/avahi-autoipd 不存在用户“saslauth”:目录 /run/saslauthd 不存在用户“pulse”:目录 /var/run/pulse 不存在用户“gnome-initial-setup”:目录 /run/gnome-initial-setup/ 不存在用户“oprofile”:目录 /var/lib/oprofile 不存在用户“mariadb”:目录 /home/mariadb 不存在pwck:无改变

grpck:检查group文件的语法

[root@wen-7 ~]# grpck无效的组文件条目删除“dsfdsf”一行?y     grpck:文件已更新

用户及组的管理命令:

组管理命令:

1.groupadd: 添加组

   groupadd [选项] groupName

    -g GID:指定GID,默认是上一个组的GID加1

    -r:创建系统组:存放系统用户 GID位于1-999之间  也可以组合-g指定系统组ID

[root@wen-7 ~]# groupadd -g 5431 qwert
[root@wen-7 ~]# getent group qwert
qwert:x:5431:
[root@wen-7 ~]# groupadd -g 5432 -r  qweasd
[root@wen-7 ~]# getent group qweasd
qweasd:x:5432:                         #可用strace useradd usesrname:查看修改过程,调用过程

2.groupmod:修改组信息

   groupmod [OPTIONS] groupname

   选项:

    -g GID:修改GID

    -n name:修改组名:可能导致所属用户修改信息

[root@wen-7 ~]# groupmod -g 5433 -n asdfg qwert
[root@wen-7 ~]# getent group asdfg
asdfg:x:5433:

3.groupdel:删除组

  groupdel groupname

  删除组,会使所属用户失去组织

[root@wen-7 ~]# groupdel qweasd
[root@wen-7 ~]# getent group qweasd
[root@wen-7 ~]#                                  #

 

4.groupmems:用户主组的管理员成员

用法:groupmems [选项] [动作]

  选项:

    -g, –group groupname     更改组 groupname,而不是用户的组(只 root)

    -R, –root CHROOT_DIR       chroot 到的目录

  动作:

  -a, –add username       将用户 username 添加到组成员中

  -d, –delete username     从组的成员中删除用户 username

  -h, –help            显示此帮助信息并推出

  -p, –purge           从组中移除所有成员

  -l, –list            列出组中的所有成员


(5).gpasswd命令:

   gpasswd [选项] group

     -a username :想组中添加用户

      -dusername:从组中移 处用户

        -A username: 设置某用户为组的管理员

                gpasswd groupname : 更改组密码

[root@w6 ~]# groupmems -l -g  adminsnatasha  harry  user10 [root@w6 ~]# gpasswd -a user10 adminsAdding user user10 to group admins[root@w6 ~]# groupmems -l -g  adminsnatasha  harry  user10 [root@w6 ~]# gpasswd -d user10 adminsRemoving user user10 from group admins[root@w6 ~]# groupmems -l -g  adminsnatasha  harry

其他用户不得随意切换组,必须要输入组密码,配合newgrp命令,临时切换基本组,

(6)  newgrp 命令

    临时切换指定组为基本组. exit退出  组不能是私有组

        newgrp [-] [group]

            -:会模拟用户重新登录以实现初始化其工作环境

[user10@w6 ~]$ newgrp - user2Password: [user10@w6 ~]$ touch qwewqe[user10@w6 ~]$ lltotal 0-rw-r--r-- 1 user10 user2  0 Aug  1 18:16 qwewqe-rw-rw-r-- 1 user10 user10 0 Aug  1 18:13 user2


练习:

  创建sysadmins组 

[root@wen-7 ~]# groupadd sysadmins[root@wen-7 ~]# getent group sysadminssysadmins:x:6015:

  将用户User1,2,3加入到sysadmins组中

[root@wen-7 ~]# useradd -G sysadmins user1[root@wen-7 ~]# useradd -G sysadmins user2[root@wen-7 ~]# useradd -G sysadmins user3

  将user3设置为sysadmins的管理员用户

[root@wen-7 ~]# gpasswd -A user3 sysadmins

  用user3登录,将user2从组移除

[root@wen-7 ~]# su - user3 -c "gpasswd -d user2 sysadmins"正在将用户“user2”从“sysadmins”组中删除

  设置sysadmins密码为centos

[root@wen-7 ~]# gpasswd sysadmins正在修改 sysadmins 组的密码新密码:请重新输入新密码

  设置user1在创建新文件使,文件的所组为syaadmins

[root@wen-7 ~]# su - user1[user1@wen-7 ~]$ newgrp sysadmins[user1@wen-7 ~]$ touch fdsf | ll总用量 0-rw-rw-r-- 1 user1 user1     0 8月   3 10:35 a.sh-rw-r--r-- 1 user1 sysadmins 0 8月   3 10:36 dfa[user1@wen-7 ~]$

  删除用户user1,2,3

[root@wen-7 ~]# userdel -r user1[root@wen-7 ~]# userdel -r user2[root@wen-7 ~]# userdel -r user3userdel:组“user3”没有移除,因为它不是用户 user3 的主组

  删除组sysadmin

[root@wen-7 ~]# groupdel sysadmins






用户管理命令:

1.useradd:创建用户,更新默认新用户信息

  useradd 【OPTIONS】 Username

   选项:

    -u: 指定uid号

    -g:指定基本组ID,此组得事先存在

    -o:   配合-u 不检查UID的唯一性

    -G:指明用户所属的附加组名,多个组之间作用逗号分隔,此组得事先存在

    -c:指明注释信息

    -d:指明用户家目录位置,默认指向/home/    通过复制/etc/skel/此目录并重命名实现,指定的家目录如果实现存在,则不会为用户复制环境配置文件。 配合-m使用

    -s:指明用户的默认shell类型,可用的所有shell列表存储在/etc/shells/文件 

    -r:创建系统用户      ,家目录,邮箱不会自动生成

    -N:不创建私有组作为主组:

    -M:不创建用户家目录

    -f:密码过期后,账号被彻底禁用之前的天数  

[root@wen-7 ~]# useradd -o -u 1208  -G gentoo,wen -c "zhifei is Linux system" -d /users/zhifei zhifei
[root@wen-7 ~]# getent passwd zhifei
zhifei:x:1208:1208:zhifei is Linux system:/users/zhifei:/bin/bash

    useradd -D:显示用户创建时的默认选项

    useradd -D   选项:    修改默认选项的值  修改的结果保于/etc/default/useradd文件,也可以直接编辑文件来修改变量   

[root@wen-7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@wen-7 ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

  注意:创建用户时的诸多默认设定配置文件为/etc/login.defs      

[root@wen-7 ~]# cat /etc/login.defs 
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME	yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

 扩展: 批量创建用户:

     (1)创建用户文件 user.sh,按照/etc/passwd的格式

     (2) newusers  user.sh            #批量创建用户

     (3)创建密码文件passwd.sh, 格式:username:password

     (4)cat passwd.sh |chpasswd        #批量修改密码

[root@w6 ~]# cat user.sh 
we7:x:507:507::/home/we7:/bin/bash
we8:x:508:508::/home/we8:/bin/bash
we9:x:509:509::/home/we9:/bin/bash
[root@w6 ~]# newusers user.sh 
[root@w6 ~]# tail -n3 /etc/passwd
we7:x:507:507::/home/we7:/bin/bash
we8:x:508:508::/home/we8:/bin/bash
we9:x:509:509::/home/we9:/bin/bash
[root@w6 ~]# cat passwd.sh 
we7:123456
we8:123456
we9:123456
[root@w6 ~]# cat passwd.sh | chpasswd 
[root@w6 ~]# tail -n3 /etc/shadow
we7:$6$IfgzE/H6x.$OYFvTlN3HxiUDvlVGhFU5ubi5jQfrNY2P5C0fhted4PDHP3XI6DQuZw13LEyBvuanHnHkplvR25wP9ZFqViTq1:17012:0:99999:7:::
we8:$6$rzkZHmbVkD/2dgcz$/jx52XRml4tP4jB2HMdRAPlcAC5HDFS2K9ClKnSXulYnaPfceUbjBw9EAiFPBgE4clYVM5wtfII6mmIKRRs4T1:17012:0:99999:7:::
we9:$6$8weaIXfBEiP$Pg8JQSYEOFlYWhVW1FGtOFlLf7PJSMvoJOoqLy3FdfC7vNOBHsWjdAGqlKmaiB76AY5GRwA/aYMezIA5e9zaf/:17012:0:99999:7:::
[root@w6 ~]#cp -r /etc/skel/. /home/we9

练习:

1、创建用户gentoo,附加组为binroot,默认shell/bin/csh,注释信息为"GentooDistribution"

[root@w6 ~]# useradd  -G bin,root -c "GentooDistribution" -s /bin/csh gentoo1
[root@w6 ~]# getent passwd gentoo1
gentoo1:x:510:510:GentooDistribution:/home/gentoo1:/bin/csh
[root@w6 ~]# groups gentoo1
gentoo1 : gentoo1 root bin

2、创建下面的用户、组和组成员关系
名字为admins 的组
用户natasha,使用admins 作为附属组
用户harry,也使用admins 作为附属组
用户sarah,不可交互登录系统, 且不是admins 的成员
natasha, harry, sarah密码都是centos

[root@wen-7 ~]# groupadd admins
[root@wen-7 ~]# useradd -G admins natasha
[root@wen-7 ~]# useradd -G admins harry
[root@wen-7 ~]# useradd -s /sbin/nologin sarsh
[root@wen-7 ~]# tail -n3 /etc/passwd
natasha:x:4048:4048::/home/natasha:/bin/bash
harry:x:4049:4049::/home/harry:/bin/bash
sarah:x:4050:4050::/home/sarah:/sbin/nologin

[root@wen-7 ~]# echo "centos"| passwd --stdin natasha
更改用户 natasha 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@wen-7 ~]# echo "centos"| passwd --stdin harry
更改用户 harry 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@wen-7 ~]# echo "centos"| passwd --stdin sarah
更改用户 sarah 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@wen-7 ~]# echo "centos"| passwd --stdin sarah

(2)usermod:修改用户属性

  usermod  [OPTINOS] username

   选项:

     -u UID:修改用户的id号

    -g GROUP:修改用户所受的基本组

    -G GROUP:修改用户所属的附加组,原来的组会被覆盖

    -a:与 -G一同使用,用于为用户追加新的附加组

    -c:修改注释信息

    -d home_DIR:修改用户的家目录,用户原有的文件不会被转移

    -m:与-d配合使用,修改用户家目录后,移动原有的文件至新的家目录

    -l newname: 修改用户名

    -s shell:修改用户的shell类型

    -L:锁定用户密码,禁止用户登录,及即在用户原来的密码字符串之前添加一个“!“

    -U:解锁用户密码 删除 ”!“  !没有后,可免密码登录

           

(3).userdel :删除用户

   userdel [OPTIONS】 username

     -r:删除用户时,一并删除其家目录和邮箱,系统默认不删家目录


练习:

    1.创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);

[root@wen-7 ~]# groupadd -g 5000 distro
[root@wen-7 ~]# groupadd -g 5001 peguin
[root@wen-7 ~]# groupadd  gentoo
root@wen-7 ~]# useradd -u 4001 -g gentoo -G distro,peguin gentoo
[root@wen-7 ~]# tail -1 /etc/passwd
gentoo:x:4001:5002::/home/gentoo:/bin/bash
[root@wen-7 ~]# tail -3 /etc/group
distro:x:5000:gentoopeguin:x:5001:gentoogentoo:x:5002:

    2.创建用户fedore,其注释信息为“Fedore Core” 默认shell为/bin/tcsh

[root@wen-7 ~]# useradd -c "Fedora Core" -s /bin/tcsh  fedora
[root@wen-7 ~]# tail -1 /etc/passwd
fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh

    3.修改gentoo用户的家目录为/var/tmp/gentoo,要求其原有文件仍能被用户访问        

[root@wen-7 ~]# usermod -md  /var/tmp/gentoo  gentoo
[root@wen-7 ~]# tail -2 /etc/passwd
gentoo:x:4001:5002::/var/tmp/gentoo:/bin/bashfedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
[root@wen-7 ~]# ls -a /var/tmp/gentoo/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla  .zshrc

    4.为gentoo新增附加组netadmin;

[root@wen-7 ~]# usermod -aG netadmin gentoo
[root@wen-7 ~]# tail -2 /etc/group
fedora:x:4002:
netadmin:x:5003:gentoo

    5.删除用户fedore

[root@wen-7 ~]# userdel -r fedora
userdel:组“fedora”没有移除,因为它不是用户 fedora 的主组
userdel:/users/fedora/ 并不属于 fedora,所以不会删除
[root@wen-7 ~]# ll /home/
总用量 4
drwx------   3 docker  docker    87 7月  30 11:14 docker
drwx------   3    4002 fedora    87 7月  29 16:37 fedora
drwx------   3 hadoop  hadoop    87 8月   1 08:35 hadoop
drwx------   3 harry   harry     87 8月   1 21:24 harry
drwx------   3 natasha natasha   87 8月   1 21:24 natasha
drwx------   3 sarah   sarah     87 8月   1 21:26 sarah
drwx------. 15 wen     wen     4096 7月  30 11:42 wen
drwx------   3 wen1    wen1      87 7月  29 14:58 wen1

(4).passwd命令:

  passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S]

  passwd  [–stdin] [username]

   选项:

    -l:锁定用户

    -u:解锁用户

    -d:清除用户密码

    -e date:强制更改过期期限,日期

    -i date:非活动期限;

    -n date:密码的最短使用期限

    -x date:密码的最长使用期限

    -w date:警告期限

     –stdin:标准输入    echo ”PASSWD“|passwd –stdin USERNAME

[root@wen-7 ~]# echo "123456" | passwd --stdin gentoo
更改用户 gentoo 的密码 。
passwd:所有的身份验证令牌已经成功更新。

(5).chage命令 更改用户密码过期信息

     chage username:交互式更改,不用指定选项

                -d: 更改最后一次更改密码的日期       跟0表示下一次更改

     -E:

     -W:

     -m:

     -l: 查看密码策略

         

[root@w6 ~]# chage -d 17011  -E 3 -W 9 -m 4 wen[root@w6 ~]# getent shadow wenwen:$6$TfrxzyP7T.sVpvMD$phH8yrBzDQ.dfh3A/9SB8pr2pVHOAjfG3mgoA/g0szkU.Wvkd8z2RBa2IQQNVsj3.iYjSkP3UHUt348bt3n1B1:17011:4:99999:9::3:

(6)id 显示用户的真实有效id信息

   id [options] username

    默认是当前登录用户,后接其他用户名,查看其他用户

   选项:

    -u:只显示UID

    -g:只显示基本组ID

   -G: 所有组的ID号

   -n:只显示名称 而非id 配合以上选项使用   

[root@wen-7 ~]# id -u wen 
1000
[root@wen-7 ~]# id -g wen 
1000
[root@wen-7 ~]# id -G wen 
1000 4046
[root@wen-7 ~]# id -nu wen 
wen
[root@wen-7 ~]# id -ng wen 
wen
[root@wen-7 ~]# id -nG wen 
wen gentoo

 

(7) su命令 :swith user

   登录式切换:会通过重新读取用户的配置文件,环境变量来重新初始化

    su – USername

    su -l Username

  非登录式切换:不会读取目标用户的配置文件,环境变量来进行初始化

    su Username

[root@wen-7 ~]# su wen
[wen@wen-7 root]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[wen@wen-7 root]$ exit
exit
[root@wen-7 ~]# su - wen
上一次登录:一 8月  1 21:38:04 CST 2016pts/0 上
[wen@wen-7 ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wen/.local/bin:/home/wen/bin

    -c command:仅以指定用户的身份运行此处指定的命令,不进行实质切换            

[root@wen-7 ~]# su - wen -c 'whoami`
 wen

注意:管理员可无密码切换至其他用户,非管理员在切换用户时必须提供密码,否则无法切换

        切换后,不能再su回去,只能exit退出用户登

作业:

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

[root@wen-7 ~]# useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser testuser
[root@wen-7 ~]# getent passwd testuser 
testuser:x:1234:1::/testdir/testuser:/bin/csh

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

[root@wen-7 ~]# usermod -l test -u 4321 -g root -G nobody -d /home/test -m  testuser
[root@wen-7 ~]# getent passwd test
test:x:4321:0::/home/test:/bin/csh

3、批量创建帐号:user1…user10

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

passwd:usernamepass

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

[root@w6 ~]# mkdir /testdir                     #创建用户文件
[root@w6 ~]# cat  user.sh 
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
user10:x:3010:3010::/testdir/user10:/bin/csh
[root@w6 ~]# newusers user.sh                    #使用用户文件,生成用户
[root@w6 ~]# tail -10 /etc/passwd
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
user10:x:3010:3010::/testdir/user10:/bin/csh         

[root@w6 ~]# cat passwd.sh 
user1:user1pass
user2:user2pass
user3:user3pass
user4:user4pass
user5:user5pass
user6:user6pass
user7:user7pass
user8:user8pass
user9:user9pass
user10:user10pass
[root@w6 ~]# cat passwd.sh |chpasswd         #使用密码文件,批量生成密码
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user1              #复制家目录模板文件,使普通用户命令变量符恢复正常
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user2
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user3
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user4
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user5
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user6
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user7
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user8
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user9
            cp -r /etc/skel/. /home/user10           ######整个文件所有文件,隐藏和非隐藏
[root@w6 ~]# ll -a /testdir/user1
total 32
drwx------.  4 user1 user1 4096 Jul 30 16:58 .
drwxr-xr-x. 12 root  root  4096 Jul 30 16:53 ..
-rw-r--r--.  1 root  root    18 Jul 30 16:58 .bash_logout
-rw-r--r--.  1 root  root   176 Jul 30 16:58 .bash_profile
-rw-r--r--.  1 root  root   124 Jul 30 16:58 .bashrc
drwxr-xr-x.  2 root  root  4096 Jul 30 16:58 .gnome2
-rw-------.  1 user1 user1   53 Jul 30 16:56 .history
drwxr-xr-x.  4 root  root  4096 Jul 30 16:58 .mozilla

touch /etc/nologin   创建此目录可以禁止所有用户登录,并可以让用户看见文件中的提示信息,用于系统维护场景

touch /run/noligin    创建此目录可以禁止所有用户登录,并可以让用户看见文件中的提示信息,用于系统维护场景   centos7有/run/

原创文章,作者:wencx,如若转载,请注明出处:http://www.178linux.com/27634

(0)
wencxwencx
上一篇 2016-08-04
下一篇 2016-08-04

相关推荐

  • 马哥教育网络班第21期+第四周课程作业

    1. 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp -r /etc/skel /home/tuser1 chmod –R 700 /home/tuser1 2. 编辑/etc/group文件,添加组hadoop。 echo &q…

    Linux干货 2016-08-01
  • mysql—MHA原理与实现

    MHA 一:简述MHA 1.1关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过与其它从节点获取额外信息来避免一致性方…

    2016-11-27
  • 硬链接和软链接的区别

    硬链接和软链接在文件系统实现上的区别决定了两者之间功能上的不同,也就是说硬链接和软链在文件系统上两者实现的方式不同,让其各自具有不同的功能和特色,也决定了各自的优点和缺点。接下同文件系统上创建硬链接和软链接看各自的特点。 一文件系统上创建硬链接 下面命令是在文件系统上创建一个硬链接: ~]# ln test /testdir/t…

    Linux干货 2016-10-29
  • Linux基础知识点(一)

    此篇博客只是记录第一周未掌握或不熟悉的知识点,用来加深印象。

    2018-03-13
  • Bash的基础特性(二)

    Bash的基础特性(二) glob文件通配符 (* ; ? ; [ ] ; [^ ] ) 星号* 匹配任意所有字符的 [root@lyp ~]# ls h* hello.sh hello.shbak ?匹配单个字符 ls ???? 查看四个字符命名的文件 [0-9]匹配数字 [a-z] 字母 字母的顺序安装 a A b B c C… z Z 匹配的a-z […

    Linux干货 2017-04-01
  • Linux任务计划

    Linux任务计划,周期性任务执行         未来的某时间点执行一次某任务:at, batch          周期性运行某任务:crontab                 &n…

    Linux干货 2016-12-31