首页 > 代码库 > 第八章 linux系统用户及用户组相关知识
第八章 linux系统用户及用户组相关知识
使用较多的技能为增删系统账号、设置修改用户密码、切换账户等。
1. 查看配置文件/etc/shadow第一行中root账号的第三个字段(以‘:‘分隔)中的数字,请算一下这个数字是怎么来的?
距离1970年1月1日到上次更改密码的时间的间隔天数。例如root密码日期更改时间为2013年9月1日星期日,那么配置文件/etc/shadow中root的第三个字段为15949,计算如下:
15949 = (2013-1970)*365+MOD((2013-1970)/4)+(5*31+2*30+28)+1=15695+10+241+1=15949
2. 写出一个您认为很强悍的密码.
2ZbzHsi4#?fega8
3. 查资料搞明白 /sbin/nologin 和 /bin/false 的区别,您知道他们用在什么场合吗?
/sbin/nologin不允许账号登陆,但是可以使用在ftp账号上,也就是说ftp账号即使设置了该项也可以通过ftp登陆
/bin/false 严格禁止用户登录系统,禁止使用一切服务
4. 请想一想,当我们创建一个新的账号时,系统会修改哪几个文件呢?
/etc/passwd 帐号
/etc/shadow 密码
/etc/group 用户组
/etc/gshadow 组密码
5. 假如我们已经创建了一个普通用户user1, 默认这个用户的家目录为/home/user1, 做实验证明能否直接修改/etc/passwd配置文件中user1的家目录那个字段而改变user1的家目录呢? (提示: 您可以使用 “cd ~ ”命令来进入当前用户家目录的方法来验证)
[root@uhza006714 ~]# useradd user1
[root@uhza006714 ~]# grep user1 /etc/passwd
user1:x:502:503::/home/user1:/bin/bash
[root@uhza006714 ~]# sed -i ‘s#/home/user1#/tmp#‘ /etc/passwd
[root@uhza006714 ~]# grep user1 /etc/passwd
user1:x:502:503::/tmp:/bin/bash
[root@uhza006714 ~]# su - user1
-bash-3.2$ echo $HOME
/tmp
-bash-3.2$ cd
-bash-3.2$ pwd
/tmp
证明可以通过更改/etc/passwd而更改用户的家目录
6. /etc/passwd 文件以":"为分隔符,第三和第四个字段表示什么含义?如果把某一行的第三个字段改为‘0‘ 会发生什么?
root:x:0:0:root:/root:/bin/bash
第三个表示用户id(uid),第四个为组id(gid),如果把第三个字段改为0,则该用户变成root
7. 先新增一个组group11,然后再新增一个账号user12, 使该账号所属组为刚刚新增的组。
groupadd group11
useradd -g group11 user12
8. 如果删除一个组时报错: “cannot remove the primary group of user ‘aming‘” 这是什么意思?如何解决该问题呢?
这是因为删除的组内有用户,需要先删除该组内的账号,再删除组
9. 如何删除某个账户时,连带这个账户的家目录一并删除?
userdel -r username
10. 如果您的Linux没有命令"mkpasswd", 需要安装哪个包?
yum install -y expect
11. 普通账户可以修改自己的密码吗?
可以修改
12. 使用su时,后面加了 ‘-‘ 表示什么含义?
加上- 表示,切换用户时,使用该用户的所有用户环境变量,例如$HOME, $BASH
13. sudo的作用是什么呢?
使用sudo可以使普通账户不用知道root的密码而临时拥有root的权限,这是为了提高安全性
14. 创建系统账号时,帐户名要符合什么样的规范?
可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆。
15. Linux系统里,你知道最大uid能有多大吗?默认创建一个普通帐号的uid最小是多少?
普通用户的uid最大为65535,目前的 linux 核心 (2.6.x 版)已经可以最大支持到 4294967295 (2^32-1) 。
默认普通账号的最小uid为500
16. 请思考,一个用户可以同时属于多个用户组吗?如果可以,如何把一个用户加入到另外的组里? 同时加入多个组怎么做?
可以, usermod -G GROUP1,GROUP2,GROUP3 username
好了,做完了作业题,阿铭再给您介绍几个小知识点:
1. 锁定和解锁某个账户
假如要锁定 user1 账户,命令为: passwd -l user1
解锁user1: passwd -u user1
注意,这两个用法只有root账户才有资格执行哦!
2. 如何限制远程登陆时,不允许root登陆,而只允许普通用户登陆? (上一章节已经介绍过,这里复习一遍)
答案:
修改配置文件/etc/sshd/sshd_config, 在文件中查找 "#PermitRootLogin yes" 这句话, 修改为 "PermitRootLogin no”表示不允许root用户远程登录。
/etc/sshd/sshd_config 为sshd服务的配置文件,默认虽然在前面加"#"注释了这句,"PermitRootLogin yes” 但它默认就是允许root账户登陆的,所以要想不让root登陆,修改为no 就可以了。保存配置文件后,重启sshd 服务: service sshd restart
3. 如何限制远程登陆时,只允许root使用密钥登陆,而不能使用密码登陆?(上一章节已经介绍过,这里复习一遍)
答案:
打开配置文件 /etc/sshd/sshd_config 加上一句:
PermitRootLogin without-password
保存配置文件后,重启sshd 服务: service sshd restart
这样就可以了。
4. 以某一个用户的身份执行某一个命令 http://www.lishiming.net/thread-422-1-3.html
在控制台中以某个用户的身份运行一条命令可以用
su -c “command” user
例如,我想用www的用户身份执行 /home/www/test.sh 这个脚本,则
su -c “/home/www/test.sh” www
前提是,/home/www/test.sh 这个脚本文件www用户有执行权限
本文出自 “helin” 博客,谢绝转载!
第八章 linux系统用户及用户组相关知识