课堂作业
- 添加2个组,一个组名为justice,另外一个组名为ninja。
- 添加4个新用户,分别为 superman、batman、wonderwoman、greenlantern,密码均为uplooking;其附加组为justice。
- 添加4个新用户,分别为 leo、raph、mikey、don ,密码均为uplooking,其附加组为ninja。
- mikey用户总是在系统里搞破坏,root决定封他的号,让他不能登陆。过了几天,再解封。
- leo想加入justice,root同意了,将justice作为附加组添加给leo。
- don整天搞创造,root要求他的密码要更安全,所以将他的密码设置成7天之后要换密码,并且密码过期前3天要提醒他,如果密码过期后2天还没有设置新密码,那么就封锁don账户。
- batman总是喜欢修改密码,没事就在修改密码,而使用该batman账户的人有好几个,比如蝙蝠侠,蝙蝠侠的管家,蝙蝠侠的助手罗宾等等。所以root决定将batman账户的密码的最小存活期改为10天。也就是说10天之内batman账户不能修改密码。
- leo想退出justice,root帮他设置一下。
- superman想把密码改为uplooking123,让他自己改。发现改不了,密码太简单了,自己去想一个复杂的密码。
- 让superman能够修改root用户的密码。
用户和组的相关文件
文件名 | 作用 |
---|---|
/etc/passwd | 系统中的账号信息 |
etc/shadow | 存放密码及其策略相关信息 |
/etc/group | 存放用户组的信息 |
/etc/gshadow | 存放用户组的密码及其策略相关信息 |
/etc/default/useradd | 创建新用户时默认的配置信息 |
/etc/skel/* | Directory containing default files. |
/etc/login.defs | 用户和组默认的配置信息 |
/etc/shells | 该文件记录着合法的 shell 版本 |
/etc/passwd
每一行都代表一个账号 , 有几行就代表有几个账号在你的系统中
系统统账号: bin, daemon, adm, nobody
以“:”作为分隔符,七个字段
root:x:0:0:root:/root:/bin/bash
- 账号名称 :root
- 密码 :X
- UID: 使用者标识符
rhel6 root_uid=0 sys_uid=1-499 user_uid=500-65535 ( 2^32-1 )
rhel7 root_uid=0 sys_uid=201-999 user_uid=1000-65535 - GID: 用户组标识符 root_guid=0
- 用户信息说明栏
- 家目录 : 用户的家目录 root 的家目录在 /root, 默认用户的家目录在 /home/yourname
Shell: 命令解释器
- 系统默认为 /bin/bash
- /sbin/nologin 不可通过终端登录系统
/etc/shadow
存放密码及其策略相关信息
以“:”作为分隔符九个字段
root:$1$/30QpE5e$y9N/D0bh6rAACBEz.hqo00:14126:0:99999:7:::
- 账号名称 :root
- 密码 : 加密后的字符串,以$N$ 开头
- 最近变更密码的日期 : 天数,以 1970 年 1 月 1 日作为 1 而累加的日期
echo $(($(date —date=”2008/09/04” +%s)/86400+1))
14126 - 密码不可被更改的天数 :0 : 表示密码随时可以更改, 20 :表示 距最近一次修改密码20 天之内都不能修改密码
- 密码需要重新变更的天数 :99999 ( 计算为 273 年 ) 表示密码的变更没有强制性。
- 密码需要变更期限前的警告天数 : 在密码到期之前几天提醒
- 密码过期后的账号宽限时间 ( 密码失效日 ): 密码过期特性。
- 账号失效日期 : 天数,以 1970 年 1 月 1 日作为 1 而累加的日期
- 保留 : 保留段
/etc/group
存放用户组的信息
每一行代表一个群组以“:”作为分隔符四个字段
root:x:0:root
- 组名 :root
- 群组密码 :x 一般不设定,通常是给『群组管理员』使用
- GID: 群组的 ID
- 此群组支持的账号名称 : 一个账号可以加入多个群组
例如,将 dabao 加入 root 群组后 :root:x:0:root,dmtsai
/etc/gshadow
存放用户组的密码及其策略相关信息
每一行代表一个群组 “: ” 作为分隔符四个字段
newgroup:!::redhat
- 组名 :newgroup
- 密码栏 : 开头为 ! 表示无合法密码 , 所以无群组管理员
- 群组管理员的账号
- 此群组支持的账号名称 : 与 /etc/group 相同
/etc/default/useradd
创建新用户时默认的配置信息GROUP=100 <== 预设的群组,现已不生效,如果创建用户时不指定群组,则使用与用户同名的群组
HOME=/home <== 默认的家目录所在目录
INACTIVE=-1 <== 密码失效日 , 在 shadow 第 7 栏
EXPIRE= <== 账号失效日 , 在 shadow 第 8 栏
SHELL=/bin/bash <== 预设的 shell /sbin/nologin 将无法登陆
SKEL=/etc/skel<== 用户家目录的内容数据参考目录
CREATE_MAIL_SPOOL=yes <== 是否主动帮助使用者建立邮件信箱 (mailbox)
/etc/skel/
Directory containing default files.
.bash_logout .bash_profile .bashrc .gnome2 .mozilla
[root@rhel7 skel]# ll -a /etc/skel |
/etc/login.defs
默认的配置信息 rhel6 下的信息MAIL_DIR /var/spool/mail 用户默认邮件信箱放置目录
PASS_MAX_DAYS 99999 /etc/shadow 第 5 栏 , 密码需要重新变更的天数
PASS_MIN_DAYS 0 /etc/shadow 第 4 栏 , 密码不可被更动的天数
PASS_MIN_LEN 5 密码最短的字符长度 , 已被 pam 模块取代 , 失去效用 !
PASS_WARN_AGE 7 /etc/shadow 第 6 栏 , 过期前会警告天数
UID_MIN 500 使用者最小的 UID 不能 <500
UID_MAX 60000 使用者最大的 UID 不能 >60000
GID_MIN 500 自定义组最小的 UID 不能 <500
GID_MAX 60000 自定义组最大的 UID 不能 >60000
CREATE_HOME yes 在 username 命令不加 -M 及 -m 时 , 是否主动建立用户家目录
UMASK 077 用户家目录建立的 umask , 因此权限会是 700 『 drwx------ 』
USERGROUPS_ENAB yes 使用 userdel 时 , 是否会删除初始群组(如果使用 userdel 去删除一个账号时 , 该账号所属的初始群组已经没有人隶属于该群组了 , 那举就删掉该群组)
ENCRYPT_METHOD SHA512 经过 SHA512 进行加密处理
/etc/shells
该文件记录着合法的 shell 版本[root@rhel7 skel]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
用户和组的相关命令
用户和组 | |
---|---|
新建组 | groupadd |
新建用户 | useradd |
修改密码 | passwd 密码 >8 位字符、小写 / 大写 / 数字 / 特殊符号之间任选 3 位 |
修改用户属性 | usermod |
修改组属性 | groupmod |
修改密码属性 | chage |
修改 shell | chsh |
删除用户 | userdel |
删除组 | groupdel |
查看已存在用户的基本信息 | id |
查看当前用户支持的群组信息 | groups |
通过文件查看/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
新建用户和组
groupadd
groupadd 创建组 |
useradd
创建新用户 |
passwd
给用户设置密码 |
[root@rhel7 ~]# passwd t1 |
修改用户和组属性
groupmod
修改组属性
groupmod -g gid [gname] 修改 gid |
usermod
修改用户属性usermod [-cdegGlsuLU] username
选项不参数 :
-c : 后面接账号的说明 修改 /etc/passwd 第 5 字段
-d : 后面接账号的家目录 修改 /etc/passwd 第 6 字段
-e : 后面接日期 , 格式是 YYYY-MM-DD 修改 shadow 第 8 字段 ( 账号失效日 )
-f : 后面接天数 修改 shadow 第 7 字段 ( 密码失效日期 )
-g : 后面接初始群组 修改 /etc/passwd 第 4 字段 GID
-G : 后面接次要群组 , 修改这个使用者能够支持的群组 修改 /etc/group
-aG : 『增加次要群组的支持』而非『设定』
-l : 后面接账号名称 修改账号名称 修改 /etc/passwd 第 1 字段
-s : 后面接 Shell 的实际档案 , 例如 /bin/bash /bin/csh 等等
-u : 后面接 UID 数字啦 ! 卲 /etc/passwd 第三栏的资料 ;
-L : 暂时将用户的密码冻结 , 让他无法登入。修改 /etc/shadow 密码栏
-U : 将 /etc/shadow 密码栏的 ! 拿掉 , 解冻
[root@rhel7 ~]# usermod -g test2 -G test3 t1 |
chage
修改用户密码属性
chage [-ldEImMW] 账号名 |
[root@rhel7 ~]# chage t1 |
chsh
change shell 的简写
chsh [-ls] |
删除用户和组
groupdel
删除组
groupdel groupname
userdel
删除用户
userdel [-r] username |
查看用户和组信息
id
查看已存在用户的基本信息
[root@rhel7 ~]# id root |
groups
查看当前用户支持的群组信息
[root@rhel7 ~]# groups |
思考题: root 和普通用户都可以修改 /etc/passwd 文档,那么这个文档的权限是什么呢?
SUID
用户身份切换 sudo / su
su
su [-lm] [-c 指令 ] [username] |
总结:
- su - username 或 su -l username
完整切换成新使用者的环境 用 env 查看环境变量
PATH/USER/MAIL - su - -c “ 指令 “
仅想要执行一次 root 的指令 - 使用 root 切换成为任何使用者时 , 不需要输入新用户密码
- 缺点:当主机多人管理时, su 切换成 root ,那每个人都需要知道 root 密码,不安全。
sudo
sudo [-u user name | #uid] [command]
sudo 执行流程
- 在 /etc/sudoers 档案中查看 user 是否有 sudo 执行权限
- 若有 sudo 执行权限 , 『输入用户的密码』
- 密码正确 , 开始执行 sudo 后续接的指令
- root 无需密码,自己切换自己也无需密码
添加用户 sudo 执行权限的方法
(如何让用户可以使用 sudo ?)
- visudo 可以让系统检验 /etc/sudoers 的语法是否正确
- 修改 /etc/sudoers 中的语法
1 )单一用户可使用 root 所有指令或某些指令
root ALL=(ALL) ALL <== 找到这一行 ,rh6 在 98 行 |
语法解释:
使用者账号 登入者的来源主机名 =( 可切换的身份 ) 可下达的指令
root ALL=(ALL) ALL <== 这是默认值
- 使用者帐号:系统哪个帐号可以使用 sudo
- 登入者的来源主机名:信任用户 默认 root 可来自任何一部网络主机
- 可切换的身份:该账号可以切换成谁来下命令 , 末日 root 可以切换成任何人
- 可下达的指令:可用该身份下达什么指令。必需使用绝对路径 ( 可通过 which\whereis 查询 )
- ALL : 是特殊关键词 , 代表任何身份、任何主机、任何命令
2 )群组和免密码的功能处理
wheel ALL=(ALL) ALL<== 找到这一行 ,rh6 在 105 行 |
语法解释:
- % 接群组
- wheel 群组内的用户有使用 sudo 的权限,并可以切换成任何人,执行切换后身份的任何命令
- wheel 群组内的用户切换用户时不需要输入自己的密码
3)有限的权限操作
dabao ALL=(root) /usr/bin/passwd <== 有 bug , dabao 能修改 root 密码 |
4 )别名设置 visudo
User_Alias DABAO=dabao,jerry,tom,g1,g2,g3 |
5) sudo 搭配 su 使用
username ALL=(root) /bin/su - |
可以直接切换成 root 用户,而且不需要输入 root 密码
6 ) 5 分钟内可以不用再输入密码。
Linux用户和组课后作业
- 新建一个用户名为 redhat。密码为 password ,配置以下信息,以达到要求:
- 密码的最小存活期为:1 天
- 密码的最大存活期为:10 天
- 密码过期前 5 天提醒
- 密码过期后如 15 天仍未设置新密码,则封锁该帐户。
- 创建一个新组 newgroup、将 redhat 以附加组成员的身份加入 到 newgroup 中。
- 添加 3 个用户,用户 harry,natasha,tom,和一个组 ,组名为 admin 组 ,
要求 :
- harry,natasha 用户的附加组为 admin 组;
- tom 用户的登陆 shell 为非交互式 shell;
- 用户密码都为 uplooking
- 使用 harry 用户登陆系统,尝试修改自己的密码,密码自己设 定。
- 创建一个叫做 alex 用户,用户 uid 为 1234,不能登陆系统。
- 以 root 用户身份给 natasha 用户修改密码,密码修改为 abc12345。
- 给 tom 用户追加附加组,追加的附加组为 alex,同时给 tom 用户修改 uid,修改为 2222。