rootpw密码生成方法/c-exit
linux kickstart文件里rootpw密码可以使用明文,也可以使用加密过的值,这里主要介绍下三种加密方法:md5、sha256、sha512
使用明文的方法
使用加密的方法
二、加密生成方法,这里统一用password来加密
1、md5加密
使用openssl passwd命令:
使用grub-crypt命令,会提示输出密码:
使用python,同样也会提示输出密码:
2、sha256加密
使用grub-crypt命令,会提示输出密码:
使用python,提示输入密码:
3、sha512加密
使用grub-crypt命令,会提示输出密码:
使用python,提示输入密码:
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的更多相关文章
- kickstart之中rootpw密码生成方法
一.简介 linux kickstart文件里rootpw密码可以使用明文,也可以使用加密过的值,这里主要介绍下三种加密方法:md5.sha256.sha512 使用明文的方法 rootpw &quo ...
- Linux 忘记密码解决方法,Linux 远程登录
一.Linux 忘记密码解决方法 很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步 ...
- mysql忘记root密码拯救方法(flush privileges)
修改的用户都以root为列.一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password " ...
- Linux远程登录ssh免密码配置方法(仅供参考)
这篇文章主要介绍了linux远程登录ssh免密码配置方法,需要的朋友可以参考下(http://www.0834-3659999.com) 一.情景 公司刚上几台Linux,现在要把主机之间都能远程ss ...
- CentOS 7紧急救援模式修改root用户密码的方法
最近无聊在网上搜索linux系统root用户密码破解方法,看来很多朋友的博文,同时也试了一下,但是感觉他们写的还是不是很清晰.简洁,因此自己就心血来潮写了这篇博文,提供一个比较清晰的思路给新手,如果有 ...
- SSL证书生成方法【转】
转自 SSL证书生成方法 - fyang的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/fyang2007/article/details/6180361 一般情况 ...
- 四、Linux 忘记密码解决方法
Linux 忘记密码解决方法 很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如 ...
- Linux数据库忘记密码-修改方法
一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"E ...
- laravel hash密码生成和密码验证
在laravel中 登录表单中的密码是用hash来生成的. 在生成密码需要用到 laravel框架中的方法(都是laravel封装好了的) bcrypt($password)方法,直接将获取到的pas ...
随机推荐
- php 快速读取文件夹下文件列表
在读取某个文件夹下的内容的时候 以前是使用 opendir readdir结合while循环过滤 . ..当前文件夹和父文件夹来操作的. 代码如下: 然后偶然发现了有scandir函数 可以扫描文件夹 ...
- ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类
从苹果系统自带的请求类,到ASIHttpRequest第三方请求类,再到AFNetWorking第三方请求类,目前只要牵扯到数据请求,基本上都是用AFN,所以,这里纯粹是记录下: hRequestTo ...
- Android 蓝牙学习
Android 蓝牙学习 学习缘由 上个礼拜公司要开发个简单的五子棋游戏!其中一个需求就是支持蓝牙对战!所以苦逼的我学习蓝牙方面的知识了! 简介 Bluetooth是目前使用最广泛的无线通讯协议,近距 ...
- 【黑金原创教程】【Modelsim】【第五章】仿真就是人生
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- linux如何查看某个pid的进程?
Linux通过PID查看进程完整信息 [root@gsidc-4q-saas23 ~]# netstat -anp|grep 8282tcp 0 0 :::8282 :::* LISTEN 16923 ...
- hibernate的日期映射
2. 映射 Java 的时间, 日期类型 1). 两个基础知识: I. 在 Java 中, 代表时间和日期的类型包括: java.util.Date 和 java.util.Calendar. 此外, ...
- hibernate的.hbm.xml文件文件配置属性详解
一般.hbm.xml文件如下面: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "- ...
- TFS中工作项的定制-修改面板
上一篇文章我们讲到了<TFS 中工作项的订制-修改工作流>,工作流只要我们设计出来,就可以进行定制修改了.这次通过简单的案例,了解一下,工作项的面板如何定制. 1.软件准备 ...
- Uncaught TypeError: Cannot set property 'value' of null
w拼写多一个空格导致. document.getElementById(winput_id).value = value; http://stackoverflow.com/questions/161 ...
- Apache Kafka源码分析 – Replica and Partition
Replica 对于local replica, 需要记录highWatermarkValue,表示当前已经committed的数据对于remote replica,需要记录logEndOffsetV ...