使用Linux命令生成随机密码
老男孩IT教育,只培养技术精英
使用Linux命令生成随机密码
使用Linux命令生成随机密码是一种基本的Linux操作功能,并有多种实现形式,具体使用方式如下:
1. 使用openssl生成随机密码
具体用法如下:
openssl rand -base64 20
几乎所有Linux发行版都包含openssl。
我们可以利用它的随机功能来生成可以用作密码的随机字母字符串,其中后面的数字10和20是指定密码的长度。
2. 使用urandom生成随机密码
具体用法如下:
strings /dev/urandom |tr -dc A-Za-z0-9 | head -c20; echo
3. 使用dd生成随机密码
具体用法如下:
dd if=/dev/urandom bs=1 count=15|base64 -w 0
使用dd生成随机密码,我们需要将结果通过base64编码使它能被人类可读。
4. 使用md5sum生成随机密码
具体用法如下:
date |md5sum
以上是用Linux命令生成随机密码,除此之外还可以使用第三方工具进行生成,如mkpasswd、randpw、pwgen、spw,gpg、xkcdpass等,有兴趣的可以了解一下!。
linux中的password命令的详细解释
linux中的password命令的详细解释linxu下的password命令用于设置用户的认证信息,下面由店铺为大家整理了linux的password命令的详细解释的相关知识,希望对大家有帮助!一、linux中的password命令的详细解释passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。
系统管理者则能用它管理系统用户的密码。
只有管理者可以指定用户名称,一般用户只能变更自己的密码。
语法passwd(选项)(参数)选项-d:删除密码,仅有系统管理者才能使用;-f:强制执行;-k:设置只有在密码过期失效后,方能更新;-l:锁住密码;-s:列出密码的相关信息,仅有系统管理者才能使用;-u:解开已上锁的帐号。
参数用户名:需要设置密码的用户名。
二、Linux中的password命令的几个重要参数[root@localhost beinan]# passwd --helpUsage: passwd [OPTION...] <accountName>-k, --keep-tokens keep non-expired authentication tokens 注:保留即将过期的用户在期满后能仍能使用;-d, --delete delete the password for the named account (root only)注:删除用户密码,仅能以root权限操作;-l, --lock lock the named account (root only)注:锁住用户无权更改其密码,仅能通过root权限操作;-u, --unlock unlock the named account (root only)注:解除锁定;-f, --force force operation注:强制操作;仅root权限才能操作;-x, --maximum=DAYS maximum password lifetime (root only) 注:两次密码修正的最大天数,后面接数字;仅能root权限操作;-n, --minimum=DAYS minimum password lifetime (root only) 注:两次密码修改的最小天数,后面接数字,仅能root权限操作;-w, --warning=DAYS number of days warning users receives before 注:在距多少天提醒用户修改密码;仅能root权限操作;password expiration (root only)-i, --inactive=DAYS number of days after password expiration when an 注:在密码过期后多少天,用户被禁掉,仅能以root操作;account becomes disabled (root only)-S, --status report password status on the named account (root 注:查询用户的密码状态,仅能root用户操作;only)--stdin read new tokens from stdin (root only)比如我们让某个用户不能修改密码,可以用-l 参数来锁定:[root@localhost ~]# passwd -l beinan 注:锁定用户beinan不能更改密码;Locking password for user beinan.passwd: Success 注:锁定成功;[beinan@localhost ~]# su beinan 注:通过su切换到beinan 用户;[beinan@localhost ~]$ passwd 注:beinan来更改密码;Changing password for user beinan.Changing password for beinan(current) UNIX password: 注:输入beinan的当前密码;passwd: Authentication token manipulation error 注:失败,不能更改密码;再来一例:[root@localhost ~]# passwd -d beinan 注:清除beinan用户密码;Removing password for user beinan.passwd: Success 注:清除成功;[root@localhost ~]# passwd -S beinan 注:查询beinan用户密码状态;Empty password. 注:空密码,也就是没有密码;注意:当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意;三、Linux中的password命令知识扩展与用户、组账户信息相关的文件存放用户信息:/etc/passwd/etc/shadow存放组信息:/etc/group/etc/gshadow用户信息文件分析(每项用:隔开)例如:jack:X:503:504:::/home/jack/:/bin/bashjack //用户名X //口令、密码503 //用户id(0代表root、普通新建用户从500开始)504 //所在组: //描述/home/jack/ //用户主目录/bin/bash //用户缺省Shell组信息文件分析例如:jack:$!$::13801:0:99999:7:*:*:jack //组名$!$ //被加密的口令13801 //创建日期与今天相隔的天数0 //口令最短位数99999 //用户口令7 //到7天时提醒* //禁用天数* //过期天数。
shell脚本生成随机数的若干方法总结
shell脚本⽣成随机数的若⼲⽅法总结shell脚本⽣成随机数的若⼲⽅法总结⽬录创建账户时我们需要配置初始随机密码,使⽤⼿机注册时会需要随机的验证码,再如俄罗斯⽅块需要随机出形状。
这都说明随机数据很重要,让我们来看看shell脚本中随机数的⽣成⽅法的⼀些案例1.使⽤字符串截取的⽅式⽣成随机密码#!/bin/bash#功能描述(Description):使⽤字串截取的⽅式⽣成随机密码.#定义变量:10个数字+52个字符.key="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"randpass(){if [ -z "$1" ];thenecho "randpass函数需要⼀个参数,⽤来指定提取的随机数个数."return 127fi#调⽤$1参数,循环提取任意个数据字符.#⽤随机数对62取余数,返回的结果为[0-61].pass=""for i in `seq $1`donum=$[RANDOM%${#key}]local tmp=${key:num:1}pass=${pass}${tmp}doneecho $pass}#randpass 8 取8个字符#randpass 16#echo $(randpass 6) 从key中随机取6个字符输出#创建临时测试账户,为账户配置随机密码,并将密码保存⾄/tmp/pass.log.useradd tomcatpasswd=$(randpass 6)echo $passwd | passwd --stdin tomcatecho $passwd > /tmp/pass.log2.使⽤命令⽣成随机数uuid的⽣成⽅法[root@localhost ~]# uuidgencc3652e3-7e54-498b-a4e3-6ff746f5cc73[root@localhost ~]# uuidgen6f5d5581-f4b4-4443-8cb3-37ad11b97d52[root@localhost ~]# uuidgenfc48a818-d323-48f1-b975-86e8f6d9046aopenssl命令来⽣成⽣成16进制的随机字符串[root@localhost ~]# openssl rand -hex 18e[root@localhost ~]# openssl rand -hex 2eeb6[root@localhost ~]# openssl rand -hex 32aefbb[root@localhost ~]# openssl rand -hex 478706e3a[root@localhost ~]# openssl rand -hex 50dfdd2bbbc[root@localhost ~]# openssl rand -hex 6e7a550493377⽣成含有特殊符号的随机字符串[root@localhost ~]# openssl rand -base64 1eQ==[root@localhost ~]# openssl rand -base64 6PdOc8SXT[root@localhost ~]# openssl rand -base64 10mHDkK/mEgITaVA==使⽤base64算法⽣成的随机数据,其最终的长度为(n/3)向上取整后在乘以4.如(1/3)=0.333333 ,向上取整为1,base64编码后长度为1×4=4位如(6/3)=2 ,向上取整为2,base64编码后长度为2×4=8位如(10/3)=3.333333 ,向上取整为4,base64编码后长度为4×4=16位[root@localhost ~]# date +%s #通过时间提取随机数字1588802225[root@localhost ~]# date +%s #1970-1-1到现在的秒数1588802231[root@localhost ~]# date +%s%N #1970-1-1到现在的纳秒数1588802237373838045#对明⽂加密⽣成随机字符串[root@localhost ~]# echo abc | openssl passwd -stdin89n8souuGpQS6[root@localhost ~]# echo 1234 | openssl passwd -stdinMhm/mQIxCm5nE#对密⽂⽤⼀段杂字⽣成随机字符串openssl passwd -1 -salt string //string⼀般为8位[root@localhost ~]# openssl passwd -1 -salt hellotomPassword:$1$hellotom$5j6sZNiOfuQiZuz421aFS.3.使⽤设备⽂件来⽣成在linux操作系统中默认提供了两个可以⽣成随机数的设备⽂件:/dev/random/dev/urandom。
30个关于Shell脚本的经典案例(下)
初次使用你要注意这几点:
脚本位置参数会与optstring中的单个字母逐个匹配,如果匹配到就赋值给name,否则赋值name为问号;
optstring中单个字母是一个选项,如果字母后面加冒号,表示该选项后面带参数,参数值并会赋冒号,表示屏蔽系统错误(test.sh: illegal option -- h);
允许把选项放一起,例如-ab
下面写一个打印文件指定行的简单例子,引导你思路:
#!/bin/bash
while getopts :f:n: option; do
case $option in
f)
FILE=$OPTARG
[ ! -f $FILE ] && echo "$FILE File not exist!" && exit
\"(yes/no)\" {send \"yes\r\"; exp_continue} \"password:\" {send \"$PASS\r\"; exp_continue} \"$USER@*\" {send \"df -h\r exit\r\"; exp_continue} }" 方法3:将expect脚本独立出来
Linux密码学随机数
Linux密码学随机数
在Linux系统中,密码学随机数通常由内核提供,并且可以通过各种方式使用。
这些随机数对于加密、密钥生成和其他安全相关的操作非常重要。
在Linux中,你可以通过以下方式获得密码学随机数:
1. /dev/random 和/dev/urandom:这两个设备文件是Linux系统中最常用的密码学随机数生成器。
它们由内核提供。
`/dev/random` 会产生高质量的随机数,但可能会阻塞等待熵(系统中的随机性源),如果系统熵不足。
而`/dev/urandom` 则不会阻塞,但它会尽量保持生成高质量的随机数,如果熵不足,可能会包含一些伪随机性。
2. OpenSSL:OpenSSL 是一个流行的密码库,它可以用于生成随机数。
你可以使用`openssl rand` 命令来生成密码学安全的随机数。
例如:
```bash
openssl rand -hex 16
```
上述命令会生成一个包含16个十六进制字符的随机数。
3. Cryptographic Libraries:许多编程语言和密码学库都提供了生成密码学随机数的函数或类。
例如,在Python中,你可以使用`secrets` 模块来生成密码学安全的随机数。
4. 硬件随机数生成器:某些计算机系统具有硬件随机数生成器,可以提供高质量的随机数。
这些硬件设备通常与操作系统集成,可以通过`/dev/hwrng` 或其他设备文件来访问。
请注意,在使用密码学随机数时,确保使用适当的生成方法,并避免使用不安全的伪随机数生成器。
密码学随机数对于密码学和安全应用非常关键,因此要确保你的随机数生成方式足够安全。
在Linux上使用Shell脚本实现文件加密与解密
在Linux上使用Shell脚本实现文件加密与解密在计算机的日常使用中,文件的安全性和隐私保护是非常重要的。
为了保护文件的机密性,我们可以使用加密技术来对文件进行加密和解密。
在Linux操作系统上,我们可以使用Shell脚本来实现文件的加密和解密功能。
本文将介绍在Linux上使用Shell脚本实现文件加密与解密的方法。
一、文件加密在Linux中,我们可以使用openssl命令来进行文件的加密。
openssl 是一个开源的加密工具包,它提供了各种加密算法和加密函数。
下面是一个使用openssl命令进行文件加密的示例Shell脚本:```bash#!/bin/bash# 获取要加密的文件名read -p "请输入要加密的文件名:" filename# 生成随机的加密密码password=$(openssl rand -base64 32)# 加密文件openssl enc -aes-256-cbc -salt -in $filename -out $filename.enc -pass pass:$passwordecho "文件加密成功!加密密码已保存在password.txt文件中。
"# 将加密密码保存到文件中echo $password > password.txt```在以上示例中,首先通过read命令获取用户输入的要加密的文件名,然后使用openssl rand命令生成一个随机的加密密码。
接下来,使用openssl enc命令对文件进行加密,加密算法使用的是aes-256-cbc,加密后的文件保存为原文件名加上.enc后缀。
最后,将生成的加密密码保存在password.txt文件中。
二、文件解密对于加密后的文件,我们可以使用相同的加密密码来进行解密。
下面是一个使用openssl命令进行文件解密的示例Shell脚本:```bash#!/bin/bash# 获取要解密的文件名read -p "请输入要解密的文件名:" filename# 获取加密密码password=$(cat password.txt)# 解密文件openssl enc -d -aes-256-cbc -in $filename -out $filename.dec -pass pass:$passwordecho "文件解密成功!解密后的文件保存为$filename.dec。
--linux下用gnupg实现加密
--linux下⽤gnupg实现加密1.⾸先我们要看当前的Linux系统上是否已经了gnupg软件,对于Red Hat linux7.0 版本之后会⾃动地安装此软件;我们输⼊下列命令查看本机是否安装 Linux$rpm-qa│grep gnupg gnupg-1.0.4-11 从上⾯返回的情况可以看出软件包已经安装过了, 如果没有安装请按照教师的指导安装2.在安装完gnupg软件包后,我们需要做的是⽣成⼀对密钥 Linus$/usr/bin/gpg-gen-key gpg(GnuPG)1.0.4;Copyright(C)2000 Free Software Foundation,Inc. This program comes sith ABSOLUTELY NO WARRANTY. This is free software,and you are welcome to redistribute it under certain conditions.See the file COPYING for details. gpg:Warning:using insecure memory! gpg:/home/zhuxg/.gnupg/secring.gpg:keyring created gpg:/home/zhuxg/.gnupg/pubring.gpg:kdyring created Please select what kind of key you wang: (1)DSA and E1Gamal(default) (2)DSA(Sign only) (4)E1Gamal(sign and encrypt) Your selection?3.我们输⼊1然后回车(选择采⽤DSA and ELGamal算法) DSA keypair sill have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What Keysize do you want?(1024)4.输⼊2048然后回车(选择密钥长度的位数) Please specify how long the key should be valid. 0=key does not expire =key expires in n days w=key expires in n weeks m=key expires in n months y=key expires in n years Key is valid for?(0)5.输⼊0回车(0代表密钥永不过期);然后输⼊y继续6.接下来可能会要求输⼊rdal name,以及email地址和passphrase7.可以把passphrase看作是保护私钥的密码,输⼊:ciwcertified; 我们需要任意地敲打键盘,程序会随机⽣成⼀对密钥,在⽤户的宿主⽬录的.gnupg⽬录下 ====================8.我们可以下列命令查看⾃⼰刚才建⽴的私钥 Linux$ gpg-list-secret-keys 查看⾃⼰的公钥 Linux$ gpg-list-keys9.⽤同样的⽅法在另⼀台机器上安装gpg,并使⽤下列命令导出公钥 Linus$ gpg-exportmachine2.asc 公钥的名字⼀定要以asc为扩展名,把将这个⽂件传到你的机器上 10.在你的机器上使⽤下列命令将对⽅的公钥导⼊ Linux$ gpg-import machine2.asc 并再次⽤gpg-list-keys命令看是否成功导⼊了对⽅的公钥 11.接下来我们⽤做的就是对这把新导⼊的公钥签名 Linux$ gpg-sign-key machine2 注:这⾥machine2应是对⽅建⽴密钥的real name 我们可以利⽤pgp-list-sigs来查看是否正确地对对⽅公钥签名了 采⽤同样的⽅法将你的公钥导出传到对⽅的机器上 12.这样我们就可以⽤对⽅的公钥来加密⽂件了;⾸先建⽴⼀个⽂件 Linux$ eacho this is a test .encryptfile 13.⽤对⽅的公钥来加密此⽂件 Linux$ gpg-encypt-r receiver_public_keyname encryptfile receiver_public_keyname在这⾥应为接收者的公钥名字;执⾏完毕后,会⽣成 加密后的⽂件encryptfile.gpg,我们cat encryptfile.gpg 输出结果,看看怎样! 14.将此加密后的⽂件传到对⽅机器上,接收⽅⽤下命令解密 gpg ?decrypt encryptfile.gpg 输⼊正确的passphrase后,会⽣成解密后的encryptfile⽂件。
Linux使用密码管理工具pass管理密码的方法电脑资料
Linux使用密码管理工具pass管理密码的方法 -电脑资料Linux使用密码管理工具pass管理密码的方法。
对于那些不想要依赖图形化进行密码管理的用户,笔者将会讲述如何在命令行下使用 pass来管理密码,这是一个简单的用于命令行管理密码的工具。
该密码工具实际上是一个shell脚本编写的前端,其中调用了几个其它工具(如gpg,pwgen,git,xsel)来使用OpenGPG管理用户的密码信息。
各个密码使用gpg工具进行加密,并存储到本地密码仓库中。
密码信息可以通过终端或者自清除的剪贴板工具使用。
该密码工具相当灵活,并且使用起来及其简单。
你可以将每个密码信息存储到一个OpenGPG保护的普通文本文件,并且将不同的密码文件分组多个类目中。
它支持bash自动补全特性,因此可以很方便地使用TAB键来补全命令或者很长的密码名称。
在Linux上安装pass在Debian,Ubuntu或者Linux Mint上安装pass:$ sudo apt-get install pass$ echo “source /etc/bash_completion.d/password-store”》》~/.bashrc在Fedora上安装pass:$ sudo yum install pass$ echo “source /etc/bash_completion.d/password-store”》》~/.bashrc在CentOS上安装pass,首先启用EPEL仓库,然后执行以下命令:$ sudo yum install pass$ echo “source /etc/bash_completion.d/password-store”》》~/.bashrc在Archlinux上安装pass:$ sudo pac -S pass$ echo “source /etc/bash_completion.d/password-store”》》~/.bashrc初始化本地密码仓库在使用密码工具之前,你需要执行一次初始化步骤,该步骤包括创建一个GPG密钥对(如果你还没有)以及一个本地密码仓库。
linux crypto 用法
linux crypto 用法Linux Crypto的用法Linux Crypto是Linux操作系统中的一个加密模块,用于提供数据的加密和解密功能。
它可以被用于各种场景,比如保护敏感数据、网络通信中的加密等。
本文将逐步介绍Linux Crypto的用法,以帮助读者了解如何在Linux系统中使用这一强大的加密模块。
第一步:检查系统是否支持Crypto在开始使用Linux Crypto之前,首先需要确保系统已经正确安装了Crypto模块,并且系统内核支持此功能。
可以通过运行以下命令来检查系统是否支持Crypto:lsmod grep crypto如果没有输出结果,表示系统没有安装Crypto模块。
可以通过安装相应的软件包来获取它。
第二步:生成密钥在开始加密和解密数据之前,我们首先需要生成一个密钥。
密钥可以通过不同的方式生成,比如使用随机数生成器或者密码学算法。
在Linux系统中,可以使用如下命令来生成一个随机的密钥:dd if=/dev/urandom of=keyfile bs=1 count=256这个命令将使用/dev/urandom设备生成一个256字节的随机数,并将其保存到名为keyfile的文件中。
第三步:加密数据生成了密钥之后,我们可以使用Linux Crypto来加密数据。
以下是一个简单的示例:c#include <linux/crypto.h>#include <linux/scatterlist.h>#include <linux/skcipher.h>void encrypt_data(const char *plaintext, size_t plainlen, const char *keyfile, char *ciphertext){struct crypto_cipher *tfm;struct scatterlist sg_in[1], sg_out[1];struct skcipher_request *req;tfm = crypto_alloc_cipher("aes", 0, 0);if (!tfm)return;if (crypto_cipher_setkey(tfm, keyfile, 256)){crypto_free_cipher(tfm);return;}req = skcipher_request_alloc(tfm, GFP_KERNEL);if (!req){crypto_free_cipher(tfm);return;}sg_set_buf(sg_in, plaintext, plainlen);sg_set_buf(sg_out, ciphertext, plainlen);skcipher_request_set_crypt(req, sg_in, sg_out, plainlen, 0);crypto_skcipher_encrypt(req);skcipher_request_free(req);crypto_free_cipher(tfm);}以上代码使用AES算法对输入的明文进行加密。
centos 生成密码8种方法
centos 生成密码8种方法1.使用passwd命令生成密码:在终端中输入passwd命令,按照提示输入新密码即可生成密码。
2. 使用 mkpasswd 命令生成密码:在终端中输入 mkpasswd 命令,按照提示设置密码的长度和类型,即可生成密码。
3. 使用 OpenSSL 命令生成密码:在终端中输入 OpenSSL rand -base64 8 命令,即可生成一个随机的8位密码。
4. 使用 pwgen 命令生成密码:在终端中输入 pwgen -s 8 1 命令,即可生成一个8位的随机密码。
5. 使用 apg 命令生成密码:在终端中输入 apg -a 1 -m 8 -x 10 -n 1 命令,即可生成一个8位的随机密码。
6. 使用 python 生成密码:在终端中输入 python -c 'import string; import random;print(''.join(random.SystemRandom().choice(string.ascii_let ters + string.digits) for _ in range(8)))' 命令,即可生成一个8位的随机密码。
7. 使用 perl 生成密码:在终端中输入 perl -e 'printmap{('a'...'z','A'...'Z',0..9)[rand(62)]}(0..7)' 命令,即可生成一个8位的随机密码。
8. 使用 Ruby 生成密码:在终端中输入 ruby -e 'print Array.new(8){[*'a'..'z', *'0'..'9'].sample}.join' 命令,即可生成一个8位的随机密码。
linux系统产生随机数的6种方法
linux系统产⽣随机数的6种⽅法⽅法⼀:通过系统环境变量($RANDOM)实现:[root@test ~]# echo $RANDOM11595[root@test ~]# echo $RANDOM21625RANDOM的随机数范围为0~32767,因此,加密性不是很好,可以通过在随机数后增加加密字符串(就是和密码⽣成有关的字符串)的⽅式解决,最后再⼀起执⾏md5sum操作并截取结果的后n位,这样⼀来,就⽆法根据随机范围0~32767猜出具体结果了。
⽰例:[root@test ~]# echo "$RANDOM"|md5sum|cut -c 5-154eaf70019cc⽅法⼆:通过openssl产⽣随机数,⽰例:[root@test ~]# openssl rand -base64 8yB0maNWRoQw=令数字与⼤⼩写字符相结合,并带上特殊字符,可以达到很长的位数,这样的随机数很安全。
⽅法三:通过时间(date)获取随机数,⽰例:[root@test ~]# date +%s%N1523402619479946400[root@test ~]# date +%s%N1523402622015235600⽅法四:通过/dev/urandom配合chksum⽣成随机数:[root@test ~]# head /dev/urandom|cksum2866845253 2890[root@test ~]# head /dev/urandom|cksum2131526544 2440/dev/random设备存储着系统当前运⾏环境的实时数据。
它可以看作系统在某个时候的唯⼀值,因此可以⽤作随机元数据。
我们可以通过⽂件读取的⽅式,读到⾥⾯的数据。
/dev/urandom这个设备的数据与random⾥的⼀样。
只是,它是⾮阻塞的随机数发⽣器,读取操作不会产⽣阻塞。
⽅法五:通过UUID⽣成随机数,⽰例:[root@test ~]# cat /proc/sys/kernel/random/uuidc984eb24-9524-4b07-af80-8b18b5a1b530[root@test ~]# cat /proc/sys/kernel/random/uuid28274c2f-c03b-4c6a-9bd2-d20b594972a4UUID码全称是通⽤唯⼀识别码(Universally Unique Identifier,UUID)它是⼀个软件建构的标准,亦为⾃由软件基⾦会的组织在分布式计算环境领域的⼀部分;UUID的⽬的是让分布式系统中的所有元素都能有唯⼀的辨别信息,⽽不需要通过中央控制端来做辨别信息的指定,如此⼀来,每个⼈都可以创建不与其他⼈发⽣冲突的UUID,在这种情况下,就不需要考虑数据库创建时的名称重复问题了,它会让⽹络中任何⼀台计算机所⽣成的UUID码都是互联⽹整个服务器⽹路中唯⼀的编码。
