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
示例:
#创建admin用户,默认家目录为/home/admin
[root@localhost ~]# useradd admin
#指定admin用户的登录使用的shell
[root@localhost ~]# useradd -s /sbin/nologin admin
#建立admin用户并设置uid为544
[root@localhost ~]# useradd admin -u 544
#创建yangxz用户并加入到www组钟,加到附属组admin,admin1中
[root@localhost ~]# useradd -g www yangxz -G 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组