首页 > 代码库 > 第八章 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系统用户及用户组相关知识