用户的分类:
超级用户:root 至高无上
本地用户:由管理员创建,权限受到一定能限制,在自己的宿主目录是完整的权限
系统用户:(伪用户)一般是不会登陆系统的,用户维持某个服务程序正常运行。Linux当中的每个命令都要有个用户对应。因此与这些命令对应的用户就叫做伪用户。例如:nobody用户,它的用户id和组id都是99. 可以通过cat /etc/passwd | grep nobody查看。由于这个用户不需要登录,因此它的shell就是sbin下的nologin。
用户信息保存的文件:/etc/passwd 每一行代表一个账号,例如:root:x:0:0:root:/root:/bin/bash,一共有七部分组成,每一部分使用冒号分开:
-
账号名称,用来对应UID的,root的账号名对应的UID为0(第三栏位)
-
密码:早期Unix系统的密码就是放在这栏位上!但是因为这个档案的特性是所有的程序都能够读取,这样一来很容易造成密码资料被窃取,因此后来就将这个栏位的密码放在/etc/shadow中了。所以这里你会看到一个'x'
-
UID:使用者识别码。id为0表示为系统管理员,所以当你要让其他的帐号名称也具有 root 的权限时,将该帐号的 UID 改为 0 即可。 这也就是说,一部系统上面的系统管理员不见得只有 root 喔! 不过,很不建议有多个帐号的 UID 是 0。1到499是系统账号(CentOS7从1到999),由于系统上面启动的服务希望使用较小的权限去运作,因此不希望使用root的身份去执行这些服务,所以我们就得要提供这些运作程序当中的拥有者账号才行。500~65535是给普通用户的(CentOs6,CentOS7是从1000开始)。其实目前的Linux核心可以支持4294967295 (2^32-1)的用户账号的UID。
-
GID:这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范群组名称与 GID 的对应而已!
-
使用者咨询账号说明栏,用来解释这个账号的意义,仅仅是起到一个描述的作用。
-
家目录:这是使用者的家目录,以上面为例, root 的家目录在 /root ,所以当 root 登入之后,就会立刻跑到 /root 目录里头啦!呵呵! 如果你有个帐号的使用空间特别的大,你想要将该帐号的家目录移动到其他的硬碟去该怎么作? 没有错!可以在这个栏位进行修改呦!预设的使用者家目录在 /home/yourIDname
-
命令解析器,也就是用户使用的shell,默认是bash。
保存密码的文件:/etc/shadow
我们知道很多程序的运行都与权限有关,而权限与 UID/GID 有关!因此各程序当然需要读取 /etc/passwd 来了解不同帐号的权限。 因此 /etc/passwd 的权限需设定为 -rw-r--r-- 这样的情况, 虽然早期的密码也有加密过,但却放置到 /etc/passwd 的第二个栏位上!这样一来很容易被有心人士所窃取的, 加密过的密码也能够透过暴力破解法去 try and error (试误) 找出来!
因为这样的关系,所以后来发展出将密码移动到 /etc/shadow 这个档案分隔开来的技术, 而且还加入很多的密码限制参数在 /etc/shadow 里头。这个文件当中的每一行公有9个栏位,例如root用户的内容为root:$1$DmqaML6.$hBgICkm7hE53sn8t4/rhM0:17718:0:99999:7:::说明如下:
-
账号名称
-
密码,经过加密的密码。
-
最近更改密码的日期
-
密码不可被更动的天数(与第三栏位相比)
-
密码需要重新变更的天数(与第三栏位相比)
-
密码需要变更期限前的警告天数(与第五栏位相比)
-
密码过期后的账号宽限时间(密码失效日,与第五栏位相比)
-
账号失效日期
-
保留:这个栏位是保留的,看以后有没有新功能加入
添加用户:useradd
-
-d 目录,创建用户时的主目录
-
-m选项,不创建用户宿主目录
-
-u后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个帐号
-
-g 后面接的那个群组名称就是 initial group,该群组的 GID 会被放置到 /etc/passwd 的第四个栏位内
-
-G 后面接的群组名称则是这个帐号还可以加入的群组。这个选项与参数会修改 /etc/group 内的相关资料,可以指定多个组,用逗号分开
-
-c 用户描述这个就是 /etc/passwd 的第五栏的说明内容,是可以随便我们设定的
-
-e 失效时间。后面接一个日期,格式为‘YYYY-MM-DD’此项目可写入 shadow 第八栏位,亦即帐号失效日的设定项目
举例:
-
useradd zhangsan 这样就可以直接创建一个叫做zhangsan的账户 创建完毕后可以通过 ll /home查看zhangsan是否已经创建成功,也可以通过cat /etc/passwd查看该账户是否创建成功。可以使用passwd lisi为新用户设置密码
-
useradd -u 1888 -g users -G sys,root -c "hr zhang" zhangsan 表示创建的用户id为888,它目前所在的组为uses组,通过查看/etc/group可以看到该组的id为100。这个账号还可以加入的群组为sys和root;hr zhang表示该用户的描述,最后的zhangsan就是用户的名字
-
useradd -d /opt/sam -s /bin/sh sam 将用户的家目录设置为opt/sam 它使用的shell为/bin/sh 用户名为sam
-
使用tail命令可以从后向前看某个文件的内容,例如 tail -1 /etc/passwd表示从后面查看一条/etc/passwd文件当中的内容
修改用户命令:usermod
-
-l 修改用户名 (login)usermod -l lisi zhangsan(zhangsan改为lisi) 注意此时home目录下的内容不会改变,如果进入home目录看的话lisi的home目录仍然为zhangsan。可以进入/etc/passwd下查看被修改的用户信息
-
-g 添加组 usermod -g sys tom
-
-G添加多个组 usermod -G sys,root tom
-
–L 锁定用户账号密码(Lock)
-
–U 解锁用户账号(Unlock)
删除用户命令:userdel(user delete)
-
-r 删除账号时同时删除目录(remove) 例如:userdel -r lisi 将会删除lisi这个账户并且同时删除他的家目录。
操作用户组命令
-
添加组:groupadd 例如:groupadd group1
-
-g 指定gid
-
-
修改组:groupmod 例如:
groupmod -g 201 -n mygroup group1 注意一般不要去改id,容易造成系统资源的错乱。
-
-n 更改组名(new group)
-
-
删除组:groupdel 例如:groupdel mygourp
-
groups 显示用户所属组