一、基础知识
1.针对目录的rwx权限有什么意义?
r:可以使用ls命令列出所有的文件
w:可以在这个目录中创建文件
x:可以使用cd命令切换到这个目录,也可以使用ls -l查看内部文件的详细信息
2.用户名和组名的保存
计算机无法识别用户名和组名,它只识别数字,使用ls -l命令之所以能够看到用户名和组名,是计算机计算得到的结果:用户名和用户id的映射保存到了/etc/passwd中,组名和组号的映射关系保存到了/etc/group中,想要查看各个字段的意思,只需要使用
man 5 passwd
命令,以及
man 5 group
命令即可。
3.不同类别用户账户ID号码的范围
管理员账户:永远为0
系统账户:1-499,该类用户不允许登陆,专门负责运行某一类进程。
一般账户:500-60000
这是针对RedHat来讲的,针对Ubuntu,规则则发生了变化,具体查看/etc/login.defs文件即可。
4.密码保存位置
/etc/passwd貌似是存放用户账号密码的,但是密码并没有保存到该文件中,早期Linux是这么干的,但是很容易发生安全性问题,现在Linux都将密码保存到了/etc/shadow文件中;同样针对/etc/gourp,将组密码保存到了/etc/gshadow文件中;使用
man 5 shadow
与
man 5 gshadow
可以查看配置文件中的各个字段的含义。
5.加密方法
密码保存到了/etc/shadow或者/etc/gshadow文件中,并且是经过加密处理的。
5.1 对称加密:加密和解密使用的是同一种密码
5.2 公钥加密:每个密码都是成对出现的,一个是公钥,一个是私钥,而且互为对方的解密密钥。
5.3单向加密:能加密但是不能解密
5.3.1:单向加密有以下的特征:
5.3.1.1:雪崩效应,初始条件的微小变化就会导致结果的巨大变化,这种特性能够防止暴力破解。
5.3.1.2:定长输出,使用这种加密方法,无论源数据有多长,得到的密文一定是固定长度的字符串。
5.3.2:单向加密的典型例子:
5.3.2.1:MD5加密,信息摘要,128位的定长输出
5.3.2.2:SHA1加密,160位的定长输出,比MD5更加安全
6.Linux中密码加密的方法
Linux中堆密码加密默认是使用MD5加密的方法,但是如果仅仅加密密码的话如果两个用户密码相同则就会产生安全性隐患,所以为了保证即使两个用户账号相同产生的密码加密后的密文也不相同,就需要给密码“加点儿盐”,由于MD5加密方法的"雪崩效应",就算加的盐非常少量,其加密结果也会有非常大的不同。
二、用户管理
1.使用useradd命令创建用户
实际上useradd是一个比较复杂的命令,学习该命令的过程中免不了总是man一下,man显示的useradd的使用方法还是非常全面的。
useradd -r :创建一个系统用户 -u :指定uid -g :指定"基本组",前提是组已经存在 -G :指定额外组(附加组),组要事先存在才行,可以有多个 -c :指定注释信息 -d :指定家目录,如果不指定,则默认在/home文件夹中创建和用户名同名的目录作 为用户的家目录 -s :指定默认shell,指定shell的路径即可,最好使用/etc/shells文件减重声 明的shell。如果指定的shell不存在(不合法),那么就会登录失败。 -m :强制给用户创建家目录 -k :使用了-m命令之后,如果使用了该命令的话就会将/etc/skel文件夹中的所有 文件复制到新创建的家目录中,实际上/etc/skel文件中存放的都是配置文件 ,如果用的是bash,则就是bash的配置文件。所以-k选项一般和-m文件一般 一起使用。 -M :不给用户创建家目录,就算配置文件中指定必须使用家目录也不给他创建。该配 置文件实际上存储了某些默认值,比如密码的过期策略默认值等。
2.使用userdel删除一个用户
userdel -r :删除用户信息的同时删除用户的家目录,默认不删除家目录
3.使用id命令查看用户的id以及分组信息
kdyzm@kdyzm:~$ id uid=1000(kdyzm) gid=1000(kdyzm) groups=1000(kdyzm),4(adm),24(cdrom), 27(sudo),29(audio),30(dip),46(plugdev),113(lpadmin),128(sambashare)
4.使用finger(外部命令)查看用户的注释信息
kdyzm@kdyzm:~$ finger kdyzm Login: kdyzm Name: kdyzm Directory: /home/kdyzm Shell: /bin/bash On since Sat Jan 30 08:29 (CST) on :0 from :0 (messages off) On since Sat Jan 30 11:25 (CST) on pts/5 from :0 1 second idle No mail. No Plan. kdyzm@kdyzm:~$
5.使用usermod修改用户账号信息
usermode -u :修改UID -g :修改基本组 -G :修改附加组,该选项默认覆盖掉之前的附加组,所以要慎用;想要只是追加 则需要联合-a选项使用即可 -s :修改shell -l :修改登录名 -e :指定账号过期时间 -L :锁定用户账号 -U :解锁用户账号 -d :指定新的家目录,一般结合-m选项这样能够将原来的家目录中的文件移动 到新的家目录中
6.使用chsh命令修改用户默认shell
chsh -s /bin/dash user1 #修改用户user1的默认登陆shell为dash,查看/etc/ #passwd文件可得
7.使用chfn修改用户的finger信息(change finger)
finger USERNAME
使用该命令直接回车即可导航设置自身的信息;如果想要设置其它用户的信息,则直接加上用户名即可(需要管理员权限)。
root@kdyzm:~# useradd -s /bin/bash user1 root@kdyzm:~# finger user1 Login: user1 Name: Directory: /home/user1 Shell: /bin/bash Never logged in. No mail. No Plan. root@kdyzm:~# chfn user1 Changing the user information for user1 Enter the new value, or press ENTER for the default Full Name []: user1_user Room Number []: 985 Work Phone []: 123-123456 Home Phone []: 123-12345677 Other []: no other infomation root@kdyzm:~# finger user1 Login: user1 Name: user1_user Directory: /home/user1 Shell: /bin/bash Office: 985, 123-123456 Home Phone: 123-12345677 Never logged in. No mail. No Plan. root@kdyzm:~#
8.使用passwd命令修改密码
passwd [username] --stdin :从标准输入流读取密码,结合管道在脚本编程中非常好用 -l :锁定用户账号 -u :解锁用户账号 -d :删除用户密码 -e :立即使得某用户的密码失效,强制用户下次登陆的时候修改密码 -i :定义用户密码过期之后经过多少天禁用账户(账户不能再登陆) -l :锁定指定用户的密码(并非锁定用户账户) -n :修改密码的最小期限,如果是0表示无期限 -u :解锁指定用户的密码 -w :设置密码失效前多少天进行警告 -x :设置更换密码的最大天数
管理员能够设置所有用户的密码,普通用户只能修改自己的密码。
9.验证用户账号的完整性
pwck
该命令只有管理员才有权限运行。
三、组管理
1.创建组groupadd
groupadd -g :指定组号 -r :创建系统组
2.修改组groupmod
groupmod -n:修改名字 -g:修改gid
3.删除组groupdel
groupdel
4.给用户组加密码gpasswd