首页 > 其他 > 详细

rootpw密码生成方法/c-exit

时间:2018-07-03 23:35:03      阅读:403      评论:0      收藏:0      [点我收藏+]

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)),"\n"‘

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

其中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"),"\n"‘

生成的密码串样式如下:

/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 ‘\n’; 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步的操作如下图所示。 

rootpw密码生成方法/c-exit

原文:https://www.cnblogs.com/klb561/p/9261032.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!