linux杂记(十二?) 关于账号和密码的二三事
关于密码的二三事
关于账号和密码的二三事
久了不更linux的相关知识,实在是懒得想内容点(纯粹是懒)。那么今天就来谈谈关于linux密码和账号的重要概念。
假如你的主机遭到入侵,那么对方的第一个侵入点自然就是主机上面的账号密码。所以,如果密码定义比较严格(就像我这种脑抽自然是有%&@#!这种自己都嫌烦的字符),那么自然对方就不容易猜到你的密码,保障也是杠杠的!
目前一些Cracker较常使用的密码破解软件,大抵也是【字典攻击法】及所谓的【暴力破解法】。就字面上意思,【字典攻击法】就是将字典里面所查到的任何单字或词组都输入到程序中,然后使用该程序一个个去尝试破解你的密码,但是也不要觉得这样的速度似乎很慢,实际上如今的计算机运算速度太高了,字典攻击法的操作效率基本上是很高的。另外一个【暴力破解法】就是直接使用键盘上任何可以使用 的按键,然后依照组合,以1个,2个,3个…。密码组合的方式去破解你的密码。这个方式比较慢,如果你的密码组合是6~8个字符以上,那么暴力破解法还是需要好长一段时间的。
由上面猜测密码的方式来说,设定一个好密码最好需要:
- 密码中含有数个特殊字符,例如#@$%^及数字键等等,你的按键越奇怪,那么对方越不容易使用既有的软件破解。什么123456、666666的就不要用了~
- 英文字母大小写混合使用
- 密码长度至少6~8个以上为好
- 没有特殊意义的字母或数字组合,并且夹着很多特殊字符
↑这种密码真的不容易破解,就是也容易被忘记就是了→ →
特别的什么【I&you~^_^~】也是可以的~
说回linux,基本上root可以设定【任何样式的密码】,而且root也可以帮助user订定他们的密码。那么修改密码使用什么命令?就是passwd了!
passwd
[root@linux ~]# passwd [-lunxwS] username
参数:
-l :将 username 这个账号的密码锁住 (lock),在 /etc/shadow 内的密码栏修订~
-u :将 -l 的 lock 解开!
-n :后面接天数 (数字) ,最短天数;亦即是 /etc/shadow 内的第四栏;
-x :后面接天数 (数字) ,最长天数;亦即是 /etc/shadow 内的第五栏;
-w :后面接天数 (数字) ,警告天数;亦即是 /etc/shadow 内的第六栏;
-S :显示目前这个 username 的相关信息。
范例:
范例一:将 dmtsai 这个使用者的密码冻结,并观察他!
[root@linux ~]# passwd -l dmtsai
Locking password for user dmtsai.
passwd: Success
[root@linux ~]# passwd -S dmtsai
Password locked.
[root@linux ~]# grep dmtsai /etc/shadow
dmtsai:!!$1$TDy6D7eg$jVJV/FMaQn14v5Kl7sqw6/:13026:0:99999:7::13149:
范例二:将上述密码冻结解开
[root@linux ~]# passwd -u dmtsai
实际上这个passwd指令功能强大,尤其很多功能仅有root才能执行。你可以使用passwd -l
及passwd -u
来强制让一个使用者暂时无法使用该账号。
在linux下,为了避免一不小心把系统玩坏,一般都会建议你以一般身份使用者来操作,等到需要设定系统环境时,才变换身份为root进行系统管理。
那么下面就来谈谈使用者身份切换问题。
一般而言,我们都不希望以root的身份登入主机,以避免被什么给入侵了。但是一部主机又不可能完全不进行修补或者设定等动作。这时候可以:
- 以
su
直接将身份变成root,但是这个指令需要root密码 - 所以当有很多人同时管理一部主机的时候,那么root的密码不就很多人知道了吗?这个时候可以使用
sudo
来进行工作
su
[root@linux ~]# su [-lcm] [username]
参数:
- :如果执行 su - 时,表示该使用者想要变换身份成为 root ,且使用 root 的
环境设定参数档,如 /root/.bash_profile 等等。
-l :后面可以接使用者,例如 su -l dmtsai ,这个 -l 好处是,可使用欲变换身份者
他的所有相关环境设定档。
-m :-m 与 -p 是一样的,表示『使用目前的环境设定,而不重新读取新使用者的设定档。』
-c :仅进行一次指令,所以 -c 后面可以加上指令喔!
范例:
范例一:由原本的 dmtsai 这个使用者,变换身份成为 root 。
[dmtsai@linux ~]$ su
Password: <==这里输入 root 的密码喔!
[root@linux ~]# env
USER=dmtsai
USERNAME=root
MAIL=/var/spool/mail/dmtsai
LOGNAME=dmtsai
# 注意到了吗?如果使用 su 没有加上 - 的话,那么很多原本使用者的相关设定会继续存在,
# 这也会造成后来的 root 身份在执行时的困扰。最常见的就是 PATH 这个变量的问题!
[root@linux ~]# exit<==这样可以离开 su 的环境!
[dmtsai@linux ~]$ su -
Password: <==这里输入 root 的密码!
[root@linux ~]# env
USER=root
MAIL=/var/spool/mail/root
LOGNAME=root
# 了解差异了吧?!所以,下次在变换成为 root 时,记得最好使用 su - !
范例二:使用 root 的身份,执行 head -n 3 /etc/shadow
[dmtsai@linux ~]$ su - -c "head -n 3 /etc/shadow"
Password: <==这里输入 root 的密码!
root:$1$jaldj9843u29jlj9u839jljlcghjlE/:12959:0:99999:7:::
bin:*:12959:0:99999:7:::
daemon:*:12959:0:99999:7:::
范例三:原本是 dmtsai 这个使用者,想要变换身份成为 vbird 时?
[dmtsai@linux ~]$ su -l vbird
Password: <==这里输入 vbird 的密码喔!
sudo
sudo的工作:
- 当使用者执行sudo时,系统会主动的去寻找/etc/sudoers档案,判断该使用者是否有执行sudo的权限
- 若使用者具有可执行sudo的权限后,便让使用者【输入使用者自己的密码】来确认
- 若密码输入成功,便开始进行sudo后续接的指令
- 不过,root执行sudo时,不需要输入密码
- 若欲切换的身份与执行者身份相同,那也不需要输入密码
要注意的是,使用者要【输入的是自己的密码,而不是欲切换成为他的那个身份的密码】。
[root@linux ~]# sudo [-u [username|#uid]] command
参数:
-u
:后面可以接使用者账号名称,或者是 UID。例如 UID 是 500 的身份,可以:
-u #500 来作为切换到 UID 为 500 的那位使用者。
范例:
范例一:一般身份使用者使用 sudo 在 /root 底下建立目录:
[dmtsai@linux ~]$ sudo mkdir /root/testing
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.Password: <==这里输入 dmtsai 自己的密码
dmtsai is not in the sudoers file.
This incident will be reported.
# 瞧!因为 dmtsai 不在 /etc/sudoers ,所以他就无法执行 sudo 喔!
范例二:假设 dmtsai 已经具有 sudo 的执行权限,如何在 /root 底下建立目录?
[dmtsai@linux ~]$ sudo mkdir /root/testing
Password: <==这里输入 dmtsai 自己的密码
范例三:如何将 sudo 与 su 搭配使用?
[dmtsai@linux ~]$ sudo su -
范例四:dmtsai 想要切换身份成为 vbird 来进行 touch 时?
[dmtsai@linux ~]$ sudo -u vbird touch /home/vbird/test
在预设情况下,没有设定/etc/sudoers是不能使用sudo的。而/etc/sudoers需要visudo去编辑,也就是要用root身份去执行visudo。
[root@linux ~]# visudo
# sudoers file.
# This file MUST be edited with the 'visudo' command as root.
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
dmtsai ALL=(ALL) ALL
<==这里将 dmtsai 制作成完全可用!
# Uncomment to allow people in group wheel to run all commands
# %wheel
ALL=(ALL)
ALL
# Same thing without a password
# %wheel
ALL=(ALL)
NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
基本上,/etc/sudoers的结构可以使用man sudoers去查阅。关于【dmtsai ALL=(ALL) ALL】代表的意义是:
使用者账号 登入的主机=(可以变换的身份) 可以下达的指令
好了,今天终于扯完了- -||,我们下次见。
linux杂记(十二?) 关于账号和密码的二三事的更多相关文章
- linux保存住github的账号和密码
我是用 shell 命令来执行 git 操作的,所以就决定在 --global 配置一下用户名和密码,不用每次手动输入了. 设置步骤 1. 首先需要 ftp 连接到你的 Linux 服务器,在根目录( ...
- Linux账号和密码文件 /etc/passwd和/etc/shadow
Linux系统中,所有用户(包括系统管理员)的账号和密码都可以在/etc/passwd和/etc/shadow这两个文件中找到,(用户和密码就放在文件中,不怕被其他人看的或者修改吗?/etc/pass ...
- webug第十二关:我系统密码忘记了!
第十二关:我系统密码忘记了! 文件上传 直接上传php一句话, 菜刀链接
- 数据库里账号的密码,需要怎样安全的存放?—— 密码哈希(Password Hash)
最早在大学的时候,只知道用 MD5 来存用户的账号的密码,但其实这非常不安全,而所用到的哈希函数,深入挖掘,也发现并不简单-- 一.普通的 Hash 函数 哈希(散列)函数是什么就不赘述了. 1.不推 ...
- (转) mysql的连接,创建账号,修改密码
原文:http://blog.chinaunix.net/uid-20749043-id-1878306.html mysql的连接,创建账号,修改密码 2008-10-13 15:31:29 分类 ...
- Linux系统 Cetos 7 中重置root密码
几个月前在自己电脑上面安装了一个Linux 的虚拟机环境,当时是为了测试某一个小功能,用完就扔那里了,长时间没有使用,发现Root密码忘记了,登陆不了,怎么办呢?(ps:如果实际情况中忘记密码的这个服 ...
- MongoDB 设置账号和密码
一.安装MongoDB 1.环境配置: i.操作系统:CentOS release 6.8 (Final) [root@iZ2ze2pbbffhmn53ao4tuaZ bin]# cat /etc/r ...
- (转)mysql账号权限密码设置方法
原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...
- 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)
在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在clie ...
随机推荐
- Java基础学习笔记2
运算符: 重点:++和--运算符; a++ (a--):表示先将a的原值带入计算,计算完毕后,再将a的值进行+1(-1); ++a (--a):先将a的值进行+1(-1)运算,然后将+1(-1)以后的 ...
- nginx fastcgi buffers影响页面输出数据大小记录
一台测试服务器由于没做fastcgi_buffer单独设置,在跑一个显示10w条数据的循环输出时只能显示4700-5200条记录 <?php $str = ''; for($i = 0; $i ...
- Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://127.0.0.1:3306/test'
原来的配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...
- java打包/命令行方式运行jar(命令行进行程序测试)
public class Testtmp { public static void main(String[] args) { // TODO Auto-generated method stub f ...
- 教你wamp下多域名如何配置
wamp下多域名配置问题 1.找到wamp安装目录的apache安装目录 找到 httpd.conf文件 例如我安装的目录为 E:\wamp\bin\apache\apache2.2.8\conf\h ...
- Python核心编程读笔 9: 异常
第10章 异常一.异常1 检测和处理异常 (1)try-except语句 try: try_suite #监控这里的异常 except Exception[, reason]: except_suit ...
- 关于函数strtok和strtok_r的使用要点和实现原理(二)
http://www.cnblogs.com/stemon/p/4013264.html已经介绍了使用strtok函数的一些注意事项,本篇将介绍strtok的一个应用并引出strtok_r函数. 1. ...
- 回调函数 callback 的简单理解
回调函数指当我执行完某一段代码之后在回过头来调用 jquery 最简单的例子 $(".className").each(function(i){alert(i)}) 她这个形参i是 ...
- C#两路list数组归并去重
两个相同类型已排序数据进行合并,虽然list数组中有AddRange方法,但它只是把第二个数组从第一个数组末尾插入,假如两个数组有重复数据,保存进去.还有Union方法合并去重,首先会从第一个数组进行 ...
- ReentrantLock(重入锁)以及公平性
ReentrantLock(重入锁)以及公平性 标签(空格分隔): java NIO 如果在绝对时间上,先对锁进行获取的请求一定被先满足,那么这个锁是公平的,反之,是不公平的,也就是说等待时间最长的线 ...