linux杂记(十二?) 关于账号和密码的二三事

时间:2023-03-09 16:16:38
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 -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】代表的意义是:

使用者账号 登入的主机=(可以变换的身份) 可以下达的指令

好了,今天终于扯完了- -||,我们下次见。