Linux下用户及组管理


系统中的文件都有一个所属用户及所属组


使用id命令可以显示当前用户的信息


使用passwd命令可以修改当前用户密码


每个用户拥有一个UserID,操作系统实际使用的是用户ID,而非用户名


每个用户属于一个主组,属于一个或多个附属组(一个用户最多有31个附属组)


每个组拥有一个GroupID


每个进程以一个用户身份运行,并受该用户可访问的资源限制


每个可登陆用户拥有一个指定的shell环境


linux实现权限隔离机制(多用户)


操作系统识别用户:


用户:UID


组:GID(逻辑容器,包含用户;实现多个用户对于某个文件或者应用程序分配相同的权限)


用户ID为32位,从0开始,但是为了和老式系统兼容,用户ID限制在60000以下


用户分类:


管理用户:ROOT UID:0


普通用户:500-65535


程序(系统)用户:1-499


组分类:


管理员组/普通组


基本组:Linux中,新建用户时,没有指定隶属于的组,系统会为该用户建立一个同名组,作为该用户的基本组


附加组:方便以后为用户分配权限


解析:


/etc/passwd:存储用户基本信息


/etc/shadow:存储用户的加密口令


/etc/group:存放组的基本信息


/etc/passwd 解释:用冒号隔开


第一列:用户登录名


第二列:加密密码(x表示密码占位符,密码保在/etc/shadow中)


第三列:用户ID号


第四列:组ID号


第五列:用户的描述信息


第六列:用户家目录


第七列:用户默认使用的shell(/etc/shells)


/etc/shadow 解释:用冒号隔开


第一列:用户登录名


第二列:加密密码


第三列:最后一次更改密码时间


第四列:密码最小使用时间


第五列:密码最长使用时间


cat /etc/default/useradd 文件解释:


#useradd defaults file //注释行


GROUP=100                 //可以创建普通组


HOME=/home              //普通用户宿主目录位置(在/home下生成和用户同名的目录,作为用户的宿主目录)


INACTIVE=-1                //是否启用用户过期停止使用权,-1代表不启用


EXPIRE=20170501        //设定过期时间,格式为20170501


SHELL=/bin/bash         //设定用户的默认使用shell


SKEL=/etc/skel             //新用户宿主目录模板目录


CREATE_MAIL_SPOOL=yes         //是否为用户启用邮件通知功能


创建新用户时,可以设置新用户可登陆系统的时间范围(2017-5-1)


/etc/skel:目录(用户宿主目录模板目录)


.bash_logout:用户注销时执行的命令


.bash_profile:用户登录系统时执行的命令(用户变量)


.bashrc:用户登录一个新shell时执行的命令


/etc/profile:系统环境变量


/etc/login_defs文件解释:只对新建用户生效


MAIL_DIR /var/spool/mail                 //用户系统邮件存放目录


PASS_MAX_DAYS 99999                    //密码最长使用期限


PASS_MIN_DAYS 0                             //最短使用期限,0代表不受限制


PASS_MIN_LEN 5                                //密码最小长度


PASS_WARN_AGE 7                            //密码过期前警告时间


UID_MIN 500                                      //最小UID号


UID_MAX 60000                                 //最大UID号


GID_MIN 500                                      //最小GID号


GID_MAX 60000                                 //最大GID号


CREATE_HOME yes                            //是否创建宿主目录


UMASK 077                                        //关于权限反掩码


USERGROUPS_ENAB yes                   //删除用户时是否删除组


ENCRYPT_METHOD SHA512            //用户密码的加密方式


useradd命令


useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中


在Slackware中,adduser指令是个script程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的useradd命令建立新用户,如此可方便管理员建立用户帐号。在Red Hat Linux中,adduser命令则是useradd命令的符号连接,两者实际上是同一个指令。


需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。


语法:useradd [选项] [用户名]


-c<备注>:加上备注文字,备注文字会保存在passwd的备注栏位中


-d<登入目录>:指定用户登入时的启始目录


-D:变更预设值


-e<有效期限>:指定帐号的有效期限


-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号


-g<群组>:指定用户所属的群组


-G<群组>:指定用户所属的附加群组


-m:自动建立用户的登入目录


-M:不要自动建立用户的登入目录


-n:取消建立以用户名称为名的群组


-r:建立系统帐号


-s:指定用户登入后所使用的shell


-u:指定用户uid


示例:


[root@localhost ~]# useradd admin             //创建admin用户,默认家目录为/home/admin


[root@localhost ~]# useradd -s /sbin/nologin admin     //指定admin用户的登录使用的shell


[root@localhost ~]# useradd admin -u 544                      //建立admin用户并设置uid为544


[root@localhost ~]# useradd -g www yangxz -G admin,admin1             //创建yangxz用户并加入到www组钟,加到附属组admin,admin1中


userdel命令


userdel命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。


语法:


userdel (选项) (用户)


选项:


-f:强制删除用户,即使用户当前已登录;


-r:删除用户的同时,删除与用户相关的所有文件。


示例:


[root@localhost ~]# userdel linuxde             //删除用户linuxde,但不删除其家目录及文件


[root@localhost ~]# userdel -r linuxde         //删除用户linuxde,其家目录及文件一并删除


usermod命令


usermod命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。


语法:


usermod [选项] [用户名]


选项 :


-c<备注>:修改用户帐号的备注文字;


-d<登入目录>:修改用户登入时的目录;


-e<有效期限>:修改帐号的有效期限;


-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;


-g<群组>:修改用户所属的群组;


-G<群组>;修改用户所属的附加群组;


-l<帐号名称>:修改用户帐号名称;


-L:锁定用户密码,使密码无效;


-s:修改用户登入后所使用的shell;


-u:修改用户UID;


-U:解除密码锁定。


示例:


[root@localhost ~]# usermod -G staff newuser2         //将newuser2添加到组staff中


[root@localhost ~]# usermod -l admin admin1           //修改admin用户名为admin1


[root@localhost ~]# usermod -L admin                        //锁定admin账号


[root@localhost ~]# usermod -U admin                       //解除admin锁定


groupdd命令


groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。


语法 :


groupadd [选项] [组名]


选项:


-g:指定新建工作组的id;


-r:创建系统工作组,系统工作组的组ID小于500;


-K:覆盖配置文件"/ect/login.defs";


-o:允许添加组ID号不唯一的工作组。


示例:


[root@localhost ~]# groupadd -g 344 linuxde             //建立linuxde组并设置uid为344


[root@localhost ~]# groupadd admin                           //创建admin工作组


groupdel命令


groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。


语法:


groupdel [组名]


示例:


[root@localhost ~]# groupdel admin                            //删除admin组