关于密码的二三事

关于账号和密码的二三事

久了不更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 -lpasswd -u来强制让一个使用者暂时无法使用该账号。

在linux下,为了避免一不小心把系统玩坏,一般都会建议你以一般身份使用者来操作,等到需要设定系统环境时,才变换身份为root进行系统管理。

那么下面就来谈谈使用者身份切换问题。

一般而言,我们都不希望以root的身份登入主机,以避免被什么给入侵了。但是一部主机又不可能完全不进行修补或者设定等动作。这时候可以:

  1. su直接将身份变成root,但是这个指令需要root密码
  2. 所以当有很多人同时管理一部主机的时候,那么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杂记(十二?) 关于账号和密码的二三事的更多相关文章

  1. linux保存住github的账号和密码

    我是用 shell 命令来执行 git 操作的,所以就决定在 --global 配置一下用户名和密码,不用每次手动输入了. 设置步骤 1. 首先需要 ftp 连接到你的 Linux 服务器,在根目录( ...

  2. Linux账号和密码文件 /etc/passwd和/etc/shadow

    Linux系统中,所有用户(包括系统管理员)的账号和密码都可以在/etc/passwd和/etc/shadow这两个文件中找到,(用户和密码就放在文件中,不怕被其他人看的或者修改吗?/etc/pass ...

  3. webug第十二关:我系统密码忘记了!

    第十二关:我系统密码忘记了! 文件上传 直接上传php一句话, 菜刀链接

  4. 数据库里账号的密码,需要怎样安全的存放?—— 密码哈希(Password Hash)

    最早在大学的时候,只知道用 MD5 来存用户的账号的密码,但其实这非常不安全,而所用到的哈希函数,深入挖掘,也发现并不简单-- 一.普通的 Hash 函数 哈希(散列)函数是什么就不赘述了. 1.不推 ...

  5. (转) mysql的连接,创建账号,修改密码

    原文:http://blog.chinaunix.net/uid-20749043-id-1878306.html  mysql的连接,创建账号,修改密码 2008-10-13 15:31:29 分类 ...

  6. Linux系统 Cetos 7 中重置root密码

    几个月前在自己电脑上面安装了一个Linux 的虚拟机环境,当时是为了测试某一个小功能,用完就扔那里了,长时间没有使用,发现Root密码忘记了,登陆不了,怎么办呢?(ps:如果实际情况中忘记密码的这个服 ...

  7. MongoDB 设置账号和密码

    一.安装MongoDB 1.环境配置: i.操作系统:CentOS release 6.8 (Final) [root@iZ2ze2pbbffhmn53ao4tuaZ bin]# cat /etc/r ...

  8. (转)mysql账号权限密码设置方法

    原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...

  9. 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)

    在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在clie ...

随机推荐

  1. git 删除远程主分支及其它操作

    1. 删除远程分支 如果不再需要某个远程分支了,比如搞定了某个特性并把它合并进了远程的 master 分支(或任何其他存放稳定代码的地方),可以用这个非常无厘头的语法来删除它:git push [远程 ...

  2. asp.net 使用HttpModule记录全局错误

    以前使用Global.asax记录全局的错误日志觉得挺好用,但是如果一个解决方案下有N多个项目,每个下边都需要加一个并且代码都还是重复的,终于有一天无法再忍受这种模式,考虑到HttpModule,直接 ...

  3. CRM setValue方法日期类型字段赋值

    setvalue datetime 赋值 得到“/Date(14000023232323)/”  这样的值 需要把 /去掉 var dd = Result.yt_purchase_date.subst ...

  4. SqlServer之表变量和临时表

    表变量: 表变量创建的语法类似于临时表,区别就在于创建的时候,必须要为之命名.表变量是变量的一种, 表变量也分为本地及全局的两种,本地表变量的名称都是以"@"为前缀,只有在本地当前 ...

  5. JAVA 从GC日志分析堆内存 第七节

    JAVA 从GC日志分析堆内存 第七节   在上一章中,我们只设置了整个堆的内存大小.但是我们知道,堆又分为了新生代,年老代.他们之间的内存怎么分配呢?新生代又分为Eden和Survivor,他们的比 ...

  6. jquery 获取当前元素的索引值

    $("#lisa > li").mouseover(function(){ alert($("#lisa > li").length); alert ...

  7. Android RadioGroup/RadioButton

    RadioGroup      RadioButton的集合,提供多选一的机制      属性:   android:orientation="horizontal/vertical&quo ...

  8. codeforces 13E . Holes 分块

    题目链接 nextt数组表示这个位置的下一个位置. cnt数组表示这个位置 i 到nextt[i]可以弹几次. end[i] 表示在从 i 弹出去的情况下, 最后一个位置是哪里. 然后就看代码吧. # ...

  9. 获取IP地址(简单实现)

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket ...

  10. RedMine 版本管理工具

    一.介绍: Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集 ...