zoukankan      html  css  js  c++  java
  • 用户管理

    --


    用户管理


    以后学习到的任何服务都需要一个用户身份来跑daemon(守护进程)

    操作系统的分类:
    单用户单任务操作系统: DOS
    单用户多任务操作系统: windows 95 windows 98 windows 2000
    多用户多任务操作系统: windows 2003 server windows 2008 server
    linux unix

    基于多用户的基础上,引出的用户的分类:
    管理员 root uid=0 (uid为0的就是管理员,不能说用户名叫root就是管理员)
    系统帐号 uid 1-499 65534
    普通用户帐号 uid 500到2^32-1

    # echo $[2**32-1]
    4294967295

    id 命令 查看当前使用用户的用户信息和组信息

    # id
    uid=0(root) gid=0(root) groups=0(root))

    # id bin
    uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys)

    用户管理相关的文件

    /etc/passwd
    /etc/shadow
    /etc/group
    /etc/gshadow


    --vim /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    第一列: 用户名
    第二列:密码 老版本这里放的就是密码,为了安全性考虑,密码放到了/etc/shadow的第二列
    x代表/etc/shadow的第二列生效,去掉x就表示此用户登录的时候没有密码
    第三列:uid 用户识别ID值,系统是通过这个值来确认是哪个用户
    第四列:gid 组识别ID值
    第五列:描述项 comment description
    第六列:家目录
    第七个:bash 当前用户使用的bash

    /bin/bash 表示此用户使用bash,用户可以登录系统,可以收邮件,可以登录FTP
    /sbin/nologin 表示用户不能登录系统,可以收邮件,可以登录FTP
    /bin/false 表示用户不能登录系统,可以收邮件,不能登录FTP


    --vim /etc/shadow
    root:$1$.1RfCu/n$ModWntxLJRC6SpgAXSDO81:14694:0:99999:7:::
    与/etc/passwd相对应 (但这里有九列)
    第一列: 用户名
    第二列:密码 (这里以*号开头或!开头默认是不能登陆的)
    第三列:上一次修改密码的时间 linux以1970年1月1日到现在的天数来算的
    第四列:修改密码后几天内不允许再修改 如果这里为5,那改过密码后5天内不能再修改 0代表不限制(只对普通用户有效)
    第五列:多少天内必须要求你改 99999代表不限制
    第六列:过期前几天给你一个告警信息
    第七列:密码过期后还给的一个宽限天数
    第8列: 这里可以写一个过期天数 这里也是以1970年1月1日到现在的天数来计算的,多用于收费系统
    第九列: 保留,留着以后功能扩展

    # date
    # date +%F
    2017-07-22
    # date +%T
    10:23:51
    # date +'%F %T'
    2017-07-22 10:24:02

    # echo $[`date +%s`/86400] --计算今天离1970-01-01有多少天;``为执行符号,里面必须是一个可执行的命令;$[]是运算符;date +%s是得到离1970-01-01有多少秒

    例子:
    我的/etc/shadow下的bin用户的行为以下显示,它的第三列为15937,它应该为redhat工程师在做rhel6.5此文件时的一个时间,请问如何计算出这个时间为哪一天?
    bin:*:15937:0:99999:7:::

    # date -d "@$[15937*86400]" +'%F'
    2013-08-20


    用户相关的命令
    useradd
    usermod
    userdel
    passwd

    useradd 增加一个普通用户
    -c comment
    -u uid
    -g gid
    -e 过期时间
    .......... 找man

    # useradd -u 4294967295 user2 --不成功,报错
    # useradd -u 4294967294 user2 --成功,这个数就是linux目前版本支持的最大uid数
    # id user2
    uid=4294967294(user2) gid=502(user2) groups=502(user2)

    usermod 修改一个用户信息
    参数基本与useradd相同

    # usermod -u 502 user2
    # id user2
    uid=502(user2) gid=502(user2) groups=502(user2)


    userdel 删除一个用户
    -r 参数 连同家目录与邮件目录全删除

    # userdel -r user2

    passwd 修改密码

    # passwd user1
    Changing password for user user1.
    New password:
    BAD PASSWORD: it is WAY too short
    BAD PASSWORD: is too simple
    Retype new password:
    passwd: all authentication tokens updated successfully.

    几个小实验:
    1,去掉/etc/passwd里root用户第二列的x,确认登录系统不需要密码,加回x,密码不变


    2,普通用户只能自己改自己的密码,还需要原密码才能改,改的密码还要一定的密码复杂度(最少8位,字母,数字,符号最好都有就没问题;这是默认的密码策略,学习了pam后可以使用pam来自定义密码策略)

    # useradd user1
    # echo 123 | passwd --stdin user1
    # su - user1
    $ passwd

    3,用一个普通用户来测试/etc/shadow里的第四列
    步骤一:第四列为0,这个普通用户随时可以修改自己的密码
    步骤二:把0改为2,这个普通用户改密码会报You must wait longer to change your password的错误
    步骤三:可以使用root用户date -s "20170725"这样的命令把当前时间改成3天后,再去测试,发现可以改了,验证成功;
    步骤四:时间同步回来:使用root用户ntpdate 0.rhel.pool.ntp.org(这条命令是同步一个公网的时间服务器,需要能访问公网才行)


    4,验证/etc/shadow里的第8列
    步骤一:以测试user1用户为列,把它在shadow里的第8列改成16368(这相当于今天来说是昨天就过期了)
    步骤二:先用su - test切换另一个普通用户,再用这个普通用户来su - user1切换user1,输入正确密码,但报下面的错误
    $ su - user1
    Password:
    Your account has expired; please contact your system administrator
    su: incorrect password


    ============================================================================

    组管理

    vim /etc/group
    bin:x:1:root,bin,daemon

    第一列:组名
    第二列:与/etc/passwd第二列一样
    第三列:gid
    第四列:哪些用户属于这个组

    vim /etc/gshadow
    bin:::root,bin,daemon

    组管理的相关命令:

    groupadd
    groupdel
    groupmod
    gpasswd


    groupadd 增加一个组

    groupdel 删除一个组

    groupmod 修改组信息

    gpasswd 修改组登陆密码


    # groupadd group1
    # groupadd group2
    # useradd -g group1 user3
    # useradd -G group1 user4
    # useradd -G group1,group2 user5
    # id user3
    uid=503(user3) gid=503(group1) groups=503(group1)
    # id user4
    uid=504(user4) gid=504(user4) groups=504(user4),503(group1)
    # id user5
    uid=505(user5) gid=506(user5) groups=506(user5),503(group1),505(group2)


    -------------------------------------------------------

    --关于有效组和初始组的讨论

    # id user5
    uid=505(user5) gid=506(user5) groups=506(user5),503(group1),505(group2)


    gid=那个组就是你的初始组
    # su - user5
    [user5@li ~]$ groups --user3用户用此命令查看 靠前的是有效组
    user5 group1 group2


    --那么此用户现在创建目录或者文件的属组为 有效组user5

    [user5@li ~]$ touch 1
    [user5@li ~]$ ll
    total 0
    -rw-rw-r--. 1 user5 user5 0 Jul 16 16:08 1

    [user5@li ~]$ newgrp group1 --这个操作其实就是登录group1组,但是因为user5也属于group1组,所以不需要密码
    [user5@li ~]$ groups --现在发现group1组靠前了
    group1 user5 group2

    [user5@li ~]$ touch 2
    [user5@li ~]$ ll --这次创建的文件,发现属组变成了group1,就也就是说user5的有效组现在是group1;但你用另一个终端root用户id user5去查看,它的gid还是user5,并没有变成group1
    total 0
    -rw-rw-r--. 1 user5 user5 0 Jul 16 16:08 1
    -rw-r--r--. 1 user5 group1 0 Jul 16 16:10 2


    [root@li ~]# groupadd group3
    [root@li ~]# gpasswd group3 --另一个终端使用root用户新建一个组,给一个组密码
    Changing the password for group group3
    New Password:
    Re-enter new password:


    [user5@li ~]$ groups
    group1 user5 group2
    [user5@li ~]$ newgrp group3 --你登录一个你没有加入的组,那么就需要组密码了
    Password:
    [user5@li ~]$ groups
    group3 user5 group1 group2 --登录成功,现在user5有效组为group3


    [user5@li ~]$ touch 3
    [user5@li ~]$ ll --这次创建的文件,发现属组变成了group3
    total 0
    -rw-rw-r--. 1 user5 user5 0 Jul 16 16:08 1
    -rw-r--r--. 1 user5 group1 0 Jul 16 16:10 2
    -rw-r--r--. 1 user5 group3 0 Jul 16 16:13 3

    ----------------------------------------------------------

    建立a,b,c三个用户
    要求,
    1,a只属于b,c组,并且默认创建的文件的属组为c
    2, b属于a,b组,并且默认创建的文件的属组为b
    3,c属于a,b,c组,并且默认创建的文件的属组为a

    方法一:
    useradd a
    useradd b
    useradd c

    usermod -g c -G b a
    usermod -G a b
    usermod -g a -G b,c c

    方法二:
    groupadd a
    useradd -G a b
    useradd -G a,b c
    useradd -g c -G b a
    usermod -g a -G b,c c


    ==================================================================================


    su - user5 完全切换
    su user5 不完全切换

    exit 退出切换


    =================================================================================

    关闭selinux
    # vim /etc/selinux/config

    SELINUX=disabled --把enforcing改为disabled

    保存后reboot重启你的系统才能生效

    =================================================================================


    通过nfs拷贝远程的vmware虚拟机软件(linux版)


    # showmount -e 172.16.19.253 --查看此机器上的nfs共享了什么目录
    Export list for 172.16.19.253:
    /yum *
    /share/soft *


    # mount 172.16.19.253:/share/soft /mnt --把253这台机器上的/share/soft目录挂载(映射)到本机/mnt目录


    # mkdir /soft --可以在本地自建一个/soft目录,用于以后存放各种软件

    # cp -rf /mnt/vmware/ /soft/ --把253这台机器上的/share/soft/vmware目录全部拷贝到本地的/soft目录

    # ll /soft/vmware/ --用ls确认已经拷贝到了本地,并确认大小
    -rwxr-xr-x 1 root root 99 Jul 22 16:22 linux_version_sn
    -rwxr-xr-x 1 root root 422627638 Jul 22 16:23 VMware-Workstation-Full-10.0.1-1379776.x86_64.bundle


    # umount /mnt --断开挂载(映射)


    ==========================================================================

    安装方法


    # cd /soft/vmware/

    # ./VMware-Workstation-Full-8.0.2-591240.x86_64.bundle --用此命令执行安装

    安装完后,启动它

    # vmware &

    创建虚拟机过程见图(截图在笔记目录的/png/目录中)

  • 相关阅读:
    C# get和set
    动手学pytorch-优化算法
    动手学pytorch-梯度下降
    动手学pytorch-凸优化
    动手学pytorch-Batch Norm
    动手学pytorch-经典卷积神经网络模型
    动手学pytorch-卷积神经网络基础
    动手学pytorch-Transformer代码实现
    动手学pytorch-机器翻译
    动手学pytorch-循环神经网络进阶
  • 原文地址:https://www.cnblogs.com/yczlove/p/7326719.html
Copyright © 2011-2022 走看看