视频链接:http://www.bilibili.com/video/av10669732/
1. Linux 的账号与群组
1.1 使用者识别: UID 与 GID
1.2 使用者账号:/etc/passwd, /etc/shadow (passwd里面存的是账号的相关信息,shadow里面存放的是账号的密码信息)
1.3 关于群组: 有效与初始群组、 groups, newgrp (groups群组信息,newgrp是切换有效群组的)
2. 账号管理:
2.1 新增与移除使用者: useradd, 相关设定档, passwd, usermod, userdel
2.2 使用者功能: chsh, chfn, finger, id (chsh是修改自己的shell的,chfn是修改自己的一些信息的)
2.3 新增与移除群组: groupadd, groupmod, groupdel, gpasswd, newgrp
2.4 密码管理: passwd
3. 使用者身份切换:
3.1 su
3.2 sudo, visudo (/etc/sudoers)
4. 使用者的特殊 shell 与 PAM 模块
4.1 特殊的 shell , /sbin/nologin
4.2 PAM 模块: /etc/nologin, /etc/securetty, /etc/security/* (PAM模块是验证登录的,环境相关的设置在/etc/security/* 内)
5. Linux 系统上使用者的对谈与 mail 的使用:
5.1 查询使用者: w, who, last, lastlog (w who使用者的相关数据,last可以看本月的记录,lastlog可以看每个账号的最近登录时间)
5.2 使用者对谈: talk, mesg, wall (和其他登陆者聊天...)
5.3 使用者邮件信箱: mail
6. 手动新增使用者: (不建议手动新增使用者,因为涉及到许多权限的问题,还是)
6.1 一些检查工具: pwck, pwconv, pwunconv, chpasswd (pwck检查passwd和shadow里面的信息是否一致。pwconv将passwd里面的密码转移到shadow里面。pwunconv将shadow里面的密码再写回passwd并删除shadow。chpasswd将passwd里面未加密的密码加密后写入shadow)
6.2 特殊账号,如纯数字账号的建立:
6.3 不开放终端机登入的账号 (ex>mail acccount)
6.4 一个大量建置账号的范例:
/etc/passwd的构造 有7个,以:进行分隔
1.账号名称 对应UID
2.密码 早期是在这里,后来为了安全转移到shadow里面,所以这里都是x
3.UID id范围:
id范围 | 该id使用者的特性 |
0 | 系统管理员 |
1~499 | 留给系统的 |
500~65535 | 给一般用户的 |
4.GID 和/etc/group有关
5.使用者信息说明栏 基本没啥用
6.家目录
7.shell 通常用户的shell都是bash 有一种特别的shell叫/sbin/nologin让账号无法登陆,也可以制作纯Pop邮件账号者的数据
/etc/shadow 放密码的地方 9个字段
1.账号名称
2.密码 经过加密编译的,如果第一个字符是 * 或者 ! 表示这个账号无法登陆,知道怎么玩了吧~嘻嘻^_^
3.最近改动密码的日期 以1970年1月1日作为1,1971年1月1日就是366...你自己的数字算去吧...无聊...
4.密码不可被更改的天数 如果是0就是随时可以更改,如果是20就是20天后才可以再次更改
5.密码需要重新变更的天数 你一直不改密码也不安全,所以设定一个时间让你强制性的更改密码
6.密码需要变更期限前的警告期限 如果是7就是7天前提醒你快要变更密码啦
7.密码过期的恕限时间 密码失效后,n天内你还能登陆,如果还延长,sorry...
8.账号失效日期 也是1970....为1
9. 保留...看看以后有没有啥新的功能...
如果root密码忘记了或者被入侵了
不需要重装系统,可以进去单人维护模式进入shadow清除root的密码
/etc/group 分为4栏
1.群组名称
2.群组密码 密码同样是X 密码存在了/etc/gshadow里面
3.GID 群组的id
4.加入这个群组的账号名称 以,进行分隔
每个用户账号都可以加入多个群组,所以群组分为有效群组和默认群组
passwd里面可以看到的GID就是默认群组,那我创建文档的时候这个文档是属于哪一个群组呢?
这就用到了有效群组,在当前账号下输入groups就可以看到我支持的所有群组,第一个显示的就是有效群组
那么怎么更换有效群组呢?newgrp 群组名 然后你在groups就会发现有效群组变了,原理是一个新的shell
要想切换群组,如果账号在群组里可以直接切换。如果不在群组里,那么群组必须满足两个条件
1.这个群组在/etc/gshadow里面的密码必须是正常的(不以!开头)
2.root或群组管理员必须加入这个群组
/etc/gshadow 4个栏目
1.群组名称
2.密码栏 以!开头表示无法接入
3.群组管理员的账号
4.该群组包含的账号(要和/etc/group的内容相同)
新增用户 useradd
参数:
-u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号;
-g :后面接的那个群组名称就是我们上面提到的 initial group 啦~
该 group ID (GID) 会被放置到 /etc/passwd 的第四个字段内。
-G :后面接的群组名称则是这个账号还可以支持的群组。
这个参数会修改 /etc/group 内的相关资料喔!
-M :强制!不要建立使用者家目录
-m :强制!要建立使用者家目录!
-c :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设定的啦~
-d :指定某个目录成为家目录,而不要使用默认值;
-r :建立一个系统的账号,这个账号的 UID 会有限制 (/etc/login.defs)
-s :后面接一个 shell ,预设是 /bin/bash 的啦~
useradd jim
passwd 给你的账号添加密码 root用户直接改任何用户 普通用户还要输入旧密码而且只能改自己的
passwd jim
usermod 修改账号的信息 useradd不合适想修改,当然可以去shadow和passwd这俩文件里面,也可以使用usermod命令
参数:
-c :后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。
-d :后面接账号的家目录,即修改 /etc/passwd 的第六栏;
-e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦!
-g :后面接 group name,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段!
-G :后面接 group name,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~
-l :后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏!
-s :后面接 Shell 的实际档案,例如 /bin/bash 或 /bin/csh 等等。
-u :后面接 UID 数字啦!即 /etc/passwd 第三栏的资料;
-L :暂时将使用者的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码栏。
-U :将 /etc/shadow 密码栏的 ! 拿掉,解冻啦!
userdel 删除账号
-r 连同使用者的家目录一起删除
userdel -r jim
使用者功能 chfn chsh
useradd/usermod/userdel 这三个命令是管理员才能用的,那么普通用户呢就使用chfn和chsh吧
chsh 修改自己使用的shell 还有就是看自己的shell
-s 修改自己的shell
chfn 更改自己的相关信息的
-f 后面接完整的大名
-o 办公室的房间号码
-p 办公室的房间号码
-h 家里的电话号码
直接打个chfn 然后回车 按照提示去设置信息 目前还不知道怎么取消......
finger 查看你账号的信息,也就是查看chfn设定的那些东东
-s 使用长串数据输出格式
finger -s jim
id 可以查询某人或者自己的相关UID/GID的信息
自己的:id
别人的:id 小明
groupadd 新建群
-g 后面接GID,直接给予某个GID~
-r 建立系统群组
groupadd jim #新建一个组
sudo grep jim /etc/group /etc/gshadow #查看这两个文档
groupmod 和usermod差不多,是修改群组的相关信息的
-g 修改GID
-n 修改群组名称
#将 jim 这个群组的名字改成Vae GID改成514 groupmod -g -n Vae jim
然后你可以去grep一下group和gshadow文档看一下变化。提示!不要随意的更变GID,容易造成系统资源的错乱
groupdel 删除群组
groupdel jim #我删除了jim这个群组
这里需要注意一个地方,如果群组里面有用户的话,你是删除不了的,否则用户就找不到自己的GID那不是一脸懵逼...
这时的解决方法是
1.修改用户的GID 给他换到其他组
2.删除这个用户... 吃惊.jpg
gpasswd 给群组设定密码 还可以给群组设定团长....这个不讲了.....
su
参数:
- :如果执行 su - 时,表示该使用者想要变换身份成为 root ,且使用 root 的
环境设定参数档,如 /root/.bash_profile 等等。
-l :后面可以接使用者,例如 su -l dmtsai ,这个 -l 好处是,可使用欲变换身份者
他的所有相关环境设定档。
-m :-m 与 -p 是一样的,表示『使用目前的环境设定,而不重新读取新使用者的设定档。』
-c :仅进行一次指令,所以 -c 后面可以加上指令喔!
使用su的时候最好加上 - 就是因为环境的设定参数档,环境变量PATH也是一样的
su - #这是切换到root用户 su -l jim #这是切换到jim用户 其实没写用户的时候预设的就是root
sudo
su很简单是吧,但是有一个致命的缺点就是root的密码谁都知道...如此不安全的事情我选择狗带...
但是sudo可以帮助我们解决这个问题,嘻嘻,我不用狗带了~~
•当使用者执行 sudo 时,系统会主动的去寻找 /etc/sudoers 档案,判断该使用者是否有执行
sudo 的权限;
• 若使用者具有可执行 sudo 的权限后,便让使用者『输入使用者自己的密码』来确认;
• 若密码输入成功,便开始进行 sudo 后续接的指令;
• 不过, root 执行 sudo 时,不需要输入密码;
• 若欲切换的身份与执行者身份相同,那也不需要输入密码。
-u 后面可以接使用者账号名称,或者是 UID。例如 UID 是 500 的身份,可以: -u #500 来作为切换到 UID 为 500 的那位使用者
#创建一个test文件夹
sudo mkdir test #jim要把身份切换成tom来进行touch
sudo -u tom touch Vae
注意咯,上面我们说过要设定/etc/sudoers之后才可以使用sudo 不过我们最好不要用vim编译器,还是用visudo比较好(visudo需要root权限)
使用者的特殊shell与PAM模块
我想建立一个账号,只给他mail sever的权限
我们在/etc/shells和/etc/passwd里面可以看到,有一种shell的名字是/sbin/nologin 这种shell也就是单纯的接受信件而已,不能登录主机的
PAM模块 /etc/nologin /etc/securetty 这两个
talk mesg wall 和其他登陆者聊天
talk这个需要网络服务所以暂时不讲,我们可以write其他用户,这个用户的mesg必须是y 如果是n的话你是无法发给他的,按下mesg就可以看自己的状态
wall是群发的,只要在线的用户的mesg是y 那么都可以收到你发的消息
#write的格式
write tom
hi tom i am jj #wall的格式
wall "lalala"
mail 使用者邮件信箱
wall和write前提是对方需要在线是吧,我们可不可以在对方不在线的时候也给他发东西呢?就要用到mail啦