• rootpw密码生成方法/c-exit


    linux kickstart文件里rootpw密码可以使用明文,也可以使用加密过的值,这里主要介绍下三种加密方法:md5、sha256、sha512

    使用明文的方法

    rootpw "password"

    使用加密的方法

    rootpw --iscrypted password_hash
    authconfig --enableshadow --enablemd5 (--passalgo=sha256 or --passalgo=sha512)

    二、加密生成方法,这里统一用password来加密

    1、md5加密

    使用openssl passwd命令:

    # openssl passwd -1 "password"
    $1$uMOl6YMI$7AAO8YG7l37ipRXCmmame.

    使用grub-crypt命令,会提示输出密码:

    # grub-crypt --md5
    Password:
    Retype password:
    $1$Y9TR8PpY$qm1VzsjKzbXtYInyAQLG70

    使用python,同样也会提示输出密码:

    # echo 'import crypt,getpass; print crypt.crypt(getpass.getpass(), "$1$8_CHARACTER_SALT_HERE")' | python -
    Password:
    $1$8_CHARAC$GVWpvO3Hu009C37IYF41L0

    2、sha256加密

    使用grub-crypt命令,会提示输出密码:

    # grub-crypt --sha-256
    Password:
    Retype password:
    $5$NSEqzlxQFNE998rG$gDTEQsndo1pQ9/2.bj1knNNqQ0tQgzKH4bdzEjinHKC

    使用python,提示输入密码:

    # echo 'import crypt,getpass; print crypt.crypt(getpass.getpass(), "$5$16_CHARACTER_SALT_HERE")' | python -
    $5$16_CHARACTER_SAL$sc08xCjatZRZPSxgCvHe2.RN7ocYGCrJZo6JzcOMtk5

    3、sha512加密

    使用grub-crypt命令,会提示输出密码:

    # grub-crypt --sha-512
    Password:
    Retype password:
    $6$twuCoL0kTI5ScTbr$GyUJymp1wU0ouFQFiWXoOfl2i.2G5E5wh3tqdprny4avv9kJWc3MdLR/GB9YbfKB1Kx9no9wpO8YcX4d28Mrz.

    使用python,提示输入密码:

    # echo 'import crypt,getpass; print crypt.crypt(getpass.getpass(), "$6$16_CHARACTER_SALT_HERE")' | python -
    $6$16_CHARACTER_SAL$ykxE75iUZiphsLz40.oQAi7QIM4meq41EYYvQ66JkbODcvIrGIeRxF7dzpfvnk20ztzE3GY359DSSNQuPQdun.

      

    rootpw密码可以使用明文,也可以使用加密过的值(密码为:IPPBXADMINROOT)

    注意:在这里要使用加密过的值,否则安全性就太低了

    rootpw --iscrypted $1$IPPBXADM$qlbCgDSCK/a.1ZzfEk/mT.

    linux系统的密码shadow一样,生成方法如下:

    perl -e 'print crypt("IPPBXADMINROOT",q($1$IPPBXADM)),"
    "'

    当使用特殊字符时,例如@$符时需要在前面加上,例:@$,否则加密字符串会错误;

    其中IPPBXADMINROOT为要给用户设置的密码,11IPPBXADM字符串是自定义字符串,shadow里一般用11后面跟8个字符这种格式。

    生成的密码串样式如下:

     $1$IPPBXADM$qlbCgDSCK/a.1ZzfEk/mT.

    中间有个$,前面算salt,后面的加密值,合在一起叫hash

    crypt 本身默认用des算法

    如果salt以11开头就使用md5算法

    des算法命令如下:

    perl -e 'print crypt("IPPBXADMINROOT","/g"),"
    "'

    生成的密码串样式如下:

    /g5fpEc81O2B2

    exit(0):正常运行程序并退出程序;
    exit(1):非正常运行导致退出程序;
    return():返回函数,若在主函数中,则会退出函数并返回一值。
    详细说:
    1. return返回函数值,是关键字;  exit 是一个函数。
      2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
      3. return是函数的退出(返回);exit是进程的退出。
      4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。
      5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出, 非0 为非正常退出。
      6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。
    函数名: exit()
    所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h)
    功 能: 关闭所有文件,终止正在执行的进程。
    exit(1)表示异常退出.这个1是返回给操作系统的。
    exit(x)(x不为0)都表示异常退出
    exit(0)表示正常退出
    exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以供其他程序使用。
    stdlib.h: void exit(int status);

    exit():

    在调用时,会做大部分清理工作,但是决不会销毁局部对象,因为没有stack unwinding。

    会进行的清理工作包括:销毁所有static和global对象,清空所有缓冲区,关闭所有I/O通道。终止前会调用经由atexit()登录的函数,atexit如果抛出异常,则调用terminate()。

    abort():

    调用时,不进行任何清理工作。直接终止程序。

    retrun:

    调用时,进行stack unwinding,调用局部对象析构函数,清理局部对象。如果在main中,则之后再交由系统调用exit()。

    return返回,可析构
    main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成
    内存泄露。exit返回不析构main或函数中的局部变量,但执行收工函数,
    故可析构全局变量(对象)。abort不析构main或函数中的局部变量,也不
    执行收工函数,故全局和局部对象都不析构。
        所以,用return更能避免内存泄露,在C++中用abort和exit都不是好习惯.

    Linux下产生随机密码10方法

    有特殊符号的:

    cat /dev/urandom | tr -dc "a-zA-Z0-9_+~!@#$\%^&*"| fold -w 16 |head -n 16

    无特殊符号的:

    #1

    date +%s | sha256sum | base64 | head -c 32 ; echo

    上述命令使用SHA来哈希日期,输出头32个字节。

    #2

    < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;

    上述命令使用内嵌的/dev/urandom,只输出字符,结果取头32个。

    #3

    openssl rand -base64 32

    上述命令使用系统自带的openssl的随机特点来产生随机密码

    #4

    tr -cd ‘[:alnum:]‘ < /dev/urandom | fold -w30 | head -n1

    #5

    strings /dev/urandom | grep -o ‘[[:alnum:]]’ | head -n 30 | tr -d ‘
    ’; echo

    通过过滤字符命令,输出随机密码

    #6

    < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6

    这个命令比起来比较简单了

    #7

    dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev

    上述命令使用命令dd的强大功能

    #8

     </dev/urandom  tr -dc ’12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB’ | head -c8; echo “”

    上述命令输出很简洁

    #9

    randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}

    使用randpw随时产生随机密码,可以把它放到~/.bashrc文件里面。

    (我这里没有什么密码产生,可留言讨论)

    #10

    date | md5sum

    如果只用这一个,足够了,因为它太简洁了,:-)

    用户、权力下放、非登录状态root用户密码修改

    1.用户理解 
    用户就是系统使用者的身份,用户以数据身份存在。在系统中用户存储为若干窜字符+若干个系统配置文件。 
    用户信息涉及到的系统配置文件: 
    (1)/etc/passwd ###用户信息 
    用户:密码:uid:gid:说明:家目录:用户使用的shell 
    ,在shell窗口输入 cat /etc/passwd即可查出用户的信息 

    (2)/etc/shadow ###用户认证信息 
    用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日 
    ,输入cat /etc/shadow即可查出用户认证信息。 

    (3)/etc/group ###组信息 
    组名称:组密码:组id:附加组成员 
    输入cat /etc/group即可查出组信息。 

    (4)/etc/gshadow ###组认证信息 
    如下图所示,输入cat /etc/gshadow即可查出组认证信息。 
    (5)/home/username ###用户家目录 
    (6)/etc/skel/.* ###用户骨架文件 
    如下图所示,输入cat /etc/skel/.*即可查出用户骨架文件。 
    注意:/etc/skel/这个目录中的所有文件或目录

    2.用户管理 
    (1)用户建立

    useradd   参数     用户名字
              -u      ##指定用户uid

    如下图所示,建立一个用户,并指定uid为888。 

        -g  ##指定用户初始组信息,这个组必须已经存在
    

    ,建立一个用户,并指定初始组为linux。 

        -G  ##指定附加组,这个组必须存在

    如下图所示,建立一个用户,并指定附加组的id为21。 

    -c ##用户说明 
    新建用户,用户说明为westos user。 

    -d ##用户家目录 
    建立一个用户,并指定家目录为/mnt/westos 

    -s ##用户所使用的shell,/etc/shells记录了用户能使用shell的名字 
    如下图所示,建立一个用户,并指定用户能使用的shell名字为/bin/tcsh。 

    ##用户和组的id须一致,否则提示组不存在。 
    ## 用户名不要为数字。数字的id与bin相同,用户名为数字时用户id的显示为bin。

    useradd -s  /sbin/nologin    westos  ##新建用户westos,并禁止该用户交互登陆

    如图所式,新建用户westos,然后切换到用户westos,系统提示该用户不可用 

    shell类型查询:cat /etc/shells 

    (2)用户删除

    userdel  -r 用户名称   ##-r表示删除用户信息及用户的系统配置

    如下图所示删除用户必须加上参数-r,否则会留下用户的系统配置。 

    (3)组的建立

    groupadd    -g    ##建立组
    groupdel    组名字 ##删除组
    组的存在意义是共享权限,组分为初始组(1个)和附加组(多个)。
    • 作以上实验的监控命令: 

    watch -n 1 ‘tail -n 3 /etc/passwd /etc/group;echo ====;ls -l /home;echo ===;ls -l /mnt’

    (4)用户id信息查看

    id  参数  用户
        -u   ##用户uid
        -g   ##用户初始组id
        -G   ##用户所有所在组id
        -n   ##显示名称而不是id数字
        -a   ##显示所有信息
    • 如下图所示,id -a westos即可显示该用户的所有信息;加上参数-u、-g、 -G分别可查询用户的uid、初始组id、所有所在组id 

    (5)用户信息更改

    usermod 参数  用户
        -l  ##更改用户名称
        -u  ##更改uid
        -g  ##更改gid
        -G  ##更改附加组
        -aG ##添加附加组
        -c  ##更改说明
        -d  ##更改家目录指定
        -md ##更改家目录指定及家目录名称
        -s  ##更改shell
        -L  ##冻结帐号
        -U  ##解锁
    • 注意:(1)passwd -l 用户 ##冻结帐号,使用usermod -u 用户解锁需要使用该命令两次。而passwd -u 用户执行一次就可以解锁。如下图所示 


    (2) passwd -u 用户 ##解锁 
    usermod命令及参数使勇如下图所示。 

    3.用户权力下放 
    (1)在系统中超级用户可以下放普通用户不能执行的操作给普通用户 
    下放权力配置文件:/etc/sudoers 

    (2)下放权力的方法 
    *)超级用户执行visudo进入编辑/etc/sudoers模式 
    *)格式:

    获得权限用户  主机名称=(获得到的用户身份) 命令
    test    desktop0.example.com=(root) /usr/sbin/useradd
    test用户能在desktop0.example.com以超级用户身份执行/usr/sbin/useradd
    • root用户执行visudo进入到/etc/sudoers文件,开始进行下放权力操作,添加内容如下图中的第100及101行。 

    (3)执行下放权限命令 
    sudo 命令 ##如果第一次执行sudo需要输入当前用户密码 
    在/etc/sudoers中如果设置如下:

    test  desktop0.example.com=(root)  NOPASSWD: /usr/sbin/useradd

    表示用户调用sudo命令的时候不需要自己密码

    当我们编辑结束保存文件后,即可使用下放的权力,如下图所示。 

    4.用户认证信息的控制

    chage   参数  用户
        -d  ##用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码 
        -m  ##最短有效期
        -M  ##最长有效期
        -W  ##警告期
        -I  ##用户非活跃天数
        -E  ##帐号到期日格式 -E "YYYY-MM-DD"
    • chage命令及参数的使用如下图所示。 


    当使用-m参数将最短有效期修改为1(表示需要在一天之后才能修改密码),立即修改密码就会得到如下提示,表示需要等一段时间才能改密码。 

    5.root密码忘记 
    操作程序如下: 
    1.重新启动系统 
    2.在系统启动阶段按上下健停止系统系统引导 
    3.选择启动引导标题,按“E”进行编辑

    按E进入如下图所示界面。 

    4.找到linux16引导条目这一行,从这行最后删除到ro选项,并把ro改为rw,然后添加rd.break选项

    修改后的结果如下图所示。 
     
    5.ctrl+x启动设定过后的系统引导条目 
    6.进入系统后执行chroot /sysroot切换到真实的系统环境 
    7.passwd root修改超级用户密码 
    8.建立文件/.autorelabel让系统从新扫描所有文件(touch /.autorelabel) 
    9.exit两次使系统自动重新启动 
    第6-9步的操作如下图所示。 

  • 相关阅读:
    python file op
    python write read
    Linux MD RAID 10
    bitmap.h
    1
    write 1 to block device
    tr '00' '377' < /dev/zero | dd of=/dev/$i bs=1024 count=1024000
    Superblock
    echo -e "33[41;36m something here 33[0m"
    May It Be
  • 原文地址:https://www.cnblogs.com/klb561/p/9261032.html
Copyright © 2020-2023  润新知