Linux用户管理和组

GNU/Linux 通过用户和用户组实现访问控制----包括对文件访问、设备使用的控

GNU/Linux 系统中的每一个文件都有属一个用户(属主)和一个用户组(属组)。另外,还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组、而设置相应的访问权限。再次,我们可以通过 ls | stat命令查询文件属主、属组和权限

用户的分类

Linux用户三种角色

超级用户: root  拥有对系统的最高的管理权限  ID=0

普通用户:系统用户 UID:1-999(centos7版本)   1-499(centos6版本)

               本地用户 UID:1000+          500+

        UID:即每个用户的身份标示,类似于每个人的身份证号码.

虚拟用户:伪用户  一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如:ftp,apache

下图是用户和组的关系:

一对一:一个用户可以存在一个组中;     一对多:一个用户可以存在多个组中

多对一:多个用户可以存在一个组中;     多对多:多个用户可以存在多个组中

用户命令

命令:useradd

useradd -d -u “UID” -g "初始组" -G "附加组" -s "登陆的shell” 用户

-d:  -d 用户主目录路径, 可以指定用户家目录


-M:   不创建用户的主目录


-g:设置用户初始组的名称或数字ID;该组必须是存在的;如果没有设置该选项,useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。默认USERGROUPS_ENAB yes 会用和用户名相同的名字创建群组,GID 等于 UID.


-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。(一个用户只允许有一个主组,可以有多个附属组)


-s:用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已经安装,默认是 Bash。有时候需要禁止某些用户执行登录动作,例如用来执行系统服务的用户。将shell设置成 /sbin/nologin 就可以禁止用户登录。

添加登录用户
例:添加一个名为harry的用户,并使用bash作为登录的shell
[root@panda ~]# useradd harry
[root@panda ~]# tail -1 /etc/passwd
harry:x:1001:1001::/home/harry:/bin/bash
说明:此命令会自动创建harry组,并成为harry用户的默认主组,同时默认的登录shell是bash
用户帐户的全部信息被保存在/etc/passwd文件。这个文件以如下格式保存了每一个系统帐户的所有信息 (字段以“:”分割)
harry:x:1001:1001::/home/harry:/bin/bash
 harry:用户名
x:密码占位符
1001:用户的UID,它都是用数字来表示的
1001:用户所属组的GID,它都是用数字来表示的
用户描述信息:对用户的功能或其它来进行一个简要的描述
/home/harry:用户主目录(shell提示符中“~”代表的那个)
/bin/bash:用户登录系统后使用的shell
#查看系统中,支持哪些shell
[root@xuegod63 ~]# cat /etc/shells    #查看系统中,支持哪些shell
/bin/sh
/bin/bash
/sbin/nologin
/bin/csh

 

指定用户UID  :  -u 用户ID
[root@xuegod63 ~]# useradd  -u 1100 oracle
[root@xuegod63 ~]# id oracle
uid=1100(oracle) gid=1100(oracle) 组=1100(oracle)
[root@xuegod63 ~]# tail -1 /etc/passwd
oracle:x:1100:1100::/home/oracle:/bin/bash
[root@xuegod63 ~]# ls /home/oracle/ -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
6.2.4 指定用户主目录
[root@xuegod63 ~]# useradd  -d /opt/mk1 mk1
[root@xuegod63 ~]# tail -1 /etc/passwd
mk1:x:1102:1102::/opt/mk1:/bin/bash
6.2.5 指定用户的主组
例:
[root@xuegod63 ~]# useradd  xuegod
[root@xuegod63 ~]# id xuegod
uid=1103(xuegod) gid=1103(xuegod) 组=1103(xuegod) 
[root@xuegod63 ~]# useradd  -g xuegod xuegod2
[root@xuegod63 ~]# id xuegod2
uid=1104(xuegod2) gid=1103(xuegod) 组=1103(xuegod)
6.2.6 指定用户的附属组
我们也可以把这个附属组称为补充组,用户可以有0个或多个附加组的成员
如果一个组有多个成员,我们是可以在/etc/group文件中最后一个字段看到的
[root@xuegod63 ~]# useradd  -G xuegod,harry,root xuegod3
[root@xuegod63 ~]# id xuegod3
uid=1105(xuegod3) gid=1105(xuegod3) 组=1105(xuegod3),0(root),1001(harry),1103(xuegod)
[root@xuegod63 ~]# vim /etc/group  #在文件的最后
 
6.2.7 创建用户的另外一个命令
[root@xuegod63 ~]# adduser xuegod4
[root@xuegod63 ~]# id xuegod4
uid=1106(xuegod4) gid=1106(xuegod4) 组=1106(xuegod4)
[root@xuegod63 ~]# which  adduser
/usr/sbin/adduser
[root@xuegod63 ~]# ll /usr/sbin/adduser 
lrwxrwxrwx. 1 root root 7 9月  19 2017 /usr/sbin/adduser -> useradd  
注: adduser是useradd的软链接
6.2.8 删除用户
usage: userdel [options] LOGIN

未查找到harry这个账号代表以及删除

选项:-r 删除的时候,会同时删除用户的家目录和/var/mail下的目录

 

[root@xuegod63 ~]# head -3  /etc/shadow
root:$6$C88LCVx5ZjfBU7xv$cKcdyNeTFmOYTs9NbRZDTA4hGcbMXc/5hQEWZKCtNyLqlBagrjct.pMfs39iEaF1UbEvcOzWZHMDf9Q5KojXM1::0:99999:7:::
 
格式如下:
name    登录名称,这个必须是系统中的有效账户名
password    已加密密码,分为三个部分,第一部分是表示使用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密的哈希
哈希算法:$1表示MD5 ; $6 表示SHA-512 ;  $5 SHA-256
查看帮助说明:
man 5 passwd
man 5 shadow
man 5 group
man 3 crypt
lastchange    最近一次更改密码的日期,以距离1970/1/1的天数表示
min-age    不能更改密码的最少天数,最近更改过后几天才可以更改;如果为0表示“最短期限要求”
maxage    密码过期时间,必须更改密码前的最多天数
warning    密码即将到期的警告期,以天数表示,0表示“不提供警告”
inactive    宽限天数,密码到期后
expire    账号过期时间,以距离1970/1/1的天数计算 (千年虫)
blank    预留字段

给用户添加密码:

[root@localhost ~]# passwd oracle 交互

不交互

 

[root@localhost ~]#  egrep -v "^$|^#" /etc/login.defs

MAIL_DIR /var/spool/mail

PASS_MAX_DAYS    99999

PASS_MIN_DAYS    0

PASS_MIN_LEN       5

PASS_WARN_AGE   7

UID_MIN                  1000   #用户ID开始的数字

UID_MAX                 60000  #  用户ID结束的数字

SYS_UID_MIN               201

SYS_UID_MAX               999

GID_MIN                  1000

GID_MAX                 60000   #组ID结束的数字

SYS_GID_MIN               201

SYS_GID_MAX               999

CREATE_HOME       yes    #是否为用户建立home目录

UMASK           077

USERGROUPS_ENAB yes

ENCRYPT_METHOD SHA512    #shadow文件的加密算法


 cat /etc/default/useradd


/etc/default/useradd  文件中的内容如下:

GROUP=100   #表示可以创建普通组 。 users组ID为100 。如果没有这一条,或者你把users这个组删除了,当你再创建用户时,将提示:useradd: group '100' does not exist

HOME=/home   #哪个目录作为用户主目录存放目录。如果你不想让用户家目录在/home下,可以修改这个地方。

INACTIVE=-1  #是否启用帐号过期。passwd文件中第7栏。即:密码过期后是否会失效的设定值 。INACTIVE:无效。-1表示启用

EXPIRE=     #帐号终止日期 shadow中第8栏。账号失效的日期 就是 shadow 内的第八字段,你可以直接设定账号在哪个日期后就直接失效,而不理会密码的问题。 通常不会设定此项目,但如果是付费的会员制系统,或许这个字段可以设定!

SHELL=/bin/bash  #默认shell使用哪个

SKEL=/etc/skel  #模板目录

CREATE_MAIL_SPOOL=yes  #是否创建邮箱文件

修改用户信息

usermod 【参数】用户名
常用参数:
-u        UID
-d        宿主目录
-g        起始组                #只能有一个
-G        附加组                #可以有多个
-s        登录shell
-L      锁定

修改UID

[root@localhost ~]# id test
uid=1001(test) gid=1001(test) 组=1001(test)
[root@localhost ~]# usermod -u 1111 test
[root@localhost ~]# id test
uid=1111(test) gid=1001(test) 组=1001(test)

 

为什么我们创建的文件的权限是644呢?

我们创建文件的默认权限是怎么来的?

umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字

文件默认权限=666 ,目录默认权限=777

我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

永久生效,编辑用户的配置文件vim .bash_profile  

vim /etc/profile

 

如果用户id大于199 且用户组名和用户名一样那么umask值为002 否则为022 

id -g 显示用户组ID ,id -gn显示组名。  

临时生效: umask 权限补码

[root@xuegod63 ~]# umask 044

 

权限的算法:一般情况是:目录默认权限-umask 值 

666-022=644 

777-022=755

#这是一个好的记忆方法,但不严谨。

 

命令:chattr  

参数:  a  只能追加内容   ;  i  不能被修改

+a: 只能追加内容  如: echo aaa  >> hack.sh

+i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

注:immutable  [ɪˈmju:təbl]  不可改变的  ;  Append [əˈpend] 追加

-i :移除i参数。  -a :移除a参数

 

posted @ 2019-07-10 10:49  {Dxd}  阅读(405)  评论(0)    收藏  举报