Linux用户和用户组管理
Linux是个多用户多任务的分时操作系统,所有要使用系统资源的用户必须向系统管理员申请一个账号,然后以这个身份进入系统。用户登陆系统是也是一种验证方式,系统通过用户的UID(Username IDentification)这种机制来识别用户的身份和权限。每个用户账号都是唯一的用户名和用户口令。用户在登陆时键入正确的用户名和口令才能进入系统和自己的家目录。Linux用户分为管理员和普通用户。普通用户又分为系统用户和登陆用户。管理员的UID为0,系统用户的UID为CentOS6:1-499 登陆用户UID为500-60000. CentOS7系统用户为1-999 登陆用户为1000-60000。
Linux用户和组的主要配置文件:
/etc/passwd:#用户及其属性信息(名称、UID、主组ID等)
[root@localhost ~]# whatis passwd #查看passwd章节号 sslpasswd (1ssl) - compute password hashes passwd (1) - update user's authentication tokens passwd (5) - password file #5章节为配置章节 [root@localhost ~]# man 5 passwd ......
name:password:UID:GID:GECOS:directory:shell #用":"分为7个主要信息
#用户名:密码占位符:用户ID:用户主组ID:注释信息:家目录:默认shell
…..
/etc/group:组及其属性信息
组的主要信息有同":"为4个主要信息
root:x:0: #组用户:密码占位符:GUI:用户列表
/etc/shadow:用户密码及其相关属性
[root@localhost ~]# whatis shadow #查看章节号 shadow (3) - encrypted password file routines shadow (5) - shadowed password file [root@localhost ~]# head -1 /etc/shadow
#用:分9个字段,每个字段的信息如下
root:$6$dGARWYghrvhD9W7P$4af2uw8A4tHvNLe2F6bDrk0J69dt.uYoV4SneKG4kzIsc/nF3JpfnuHg7D5lVE.jxC3p6.K29FCjwtom9VXWf.::0:99999:7:::
#用户名:$#(算法)$salt(杂质)$密码占位符:从1970年1月1日起到密码最近一次被更改的时间:密码再过几天
可以被变更(0表示随时可被变更):密码再过几天必须被变更(99999表示永不过期):密码过期前
几天系统提醒用户(默认为一周):密码过期几天后帐号会被锁定:从1970年1月1日算起,多少天后帐号失效:保留
/etc/gshadow:组密码及其相关属性
root::: 4个分组
组名:组密码:组管理员:组的用户列表
Linux用户账号的管理
用户的管理用到用户的添加、删除和修改等操作。
useradd或adduser:添加用户或更改默认新用户信息
语法
useradd [options] LOGIN #创建用户 useradd -D #查看创建用户的默认属性 useradd -D [options] #修改新建用户默认属性
常用参数
-u --uid UID #指定新用户UID -o, --non-unique #不检测现存UID,创建相同UID的新用户 ou同用居多 -g, --gid GROUP:#指定基本组ID; -G, --groups,GROUP1[,GROUP2... [,GROUPN]]:#指明用户所属的附加组,多个组之间用逗号分隔 -c,--comment COMMENT: #添加注释信息: -d, --home HOME_DIR:# 以指定的路径为用户的家目录; -s,--shell SHELL: #指定用户的默认shell,可用的所有shell列表为/etc/shells文件 -r, --system:#创建系统用户 -M #不创建主目录 -N, --no-user-group #不创建私有组,还有user组做主组 -p, --password #创建新用户时,设置密码 -f, --inactive INACTIVE # 禁用启用账户 -1启用 0禁用 例如: 创建用户gentoo,UID为5000,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution" [root@localhost ~]# useradd -u 5000 -G bin,root -s /bin/csh -c "Gentoo Distribtution" gentoo [root@localhost ~]# tail -1 /etc/passwd gentoo:x:5000:5000:Gentoo Distribtution:/home/gentoo:/bin/csh #gentoo的信息 [root@localhost ~]# useradd -D #显示useradd默认用户配置 GROUP=100 #当不创建主组是用的的主组是UID的user组 HOME=/home #默认家目录 INACTIVE=-1 #不禁用账户 -f EXPIRE= #过期时间空为永不过期 SHELL=/bin/bash #默认shell SKEL=/etc/skel #配置文件路径 CREATE_MAIL_SPOOL=yes #默认创建邮箱
usermod:更改用户属性
语法
usermod [options] LOGIN
常用选项
-u, --uid UID #修改用户的ID为此处指定的新UID -g, --gid GROUP #修改用户所属的基本组 -G, --groups GROUP1[,GROUP2,...[,GROUPN]]] #修改用户的附加组,原来的附加组会被覆盖 a要放在G的前面 -a, --append:#与-G一同使用,为用户添加新的附加组; -c, --comment COMMENT #修改注释信息 -d, --home HOME_DIR #修改用户的家目录:用户原有的文件不会被移动到新的位置 -m, --move-home #只能与-d选项一同使用,用于将原来的家目录移动为新的家目录,所有原有的文件予以保留。 -l, --login NEW_LOGIN #修改用户名 -s, --shell SHELL #修改用户的shell为指定shell -L, --lock #锁定用户密码:即在用户原来的密码字符串之前添加一个“!” -U, --unlock #解锁用户的密码
例如 修改用户gentoo的UID为5001,更改用户的基本组为tty,默认shell改为/bin/dash,家目录为/var/Archilinux,更改用户名为Archilinux,注释信息为"Archilinux Distribution Now
[root@localhost ~]# usermod -u 5001 -g tty -s /bin/dash -d /var/Archilinux -l Archilinux -c "Archilinux Distribution Now" gentoo [root@localhost ~]# getent passwd Archilinux Archilinux:x:5001:5:Archilinux Distribution Now:/var/Archilinux:/bin/dash #改成Archilinux的原gentoo用户信息
usermod:删除用户
语法
userdel [options] LOGIN
常用选项
-r: 删除用户家目录
linux安全上下文:运行中的程序叫做进程,进程所能够访问资源的权限取决于进程运行者的身份,root用户和普通用户使用同一个命令,能够做的操作权限是不相同的!
如果有很多用户需要同样的权限时,管理用户和设定权限就很麻烦,所有就有了组的概念。每个系统都有组的概念,它能让系统更好的管理用户的权限和资源。组也可以说是用户的容器。
组分为系统组和普通组,GID和UID相同概念。普通组分为私有组和附加组,每个用户在创建时一般都会默认创建和自己同名的私有组,私有组只能有一个。一个用户也可以零或多个的附加组。
groupadd :创建新组
语法
groupadd [options] group
常用选项
-g GID: #指明GID号 -r: #创建系统组 -p:#指定组密码 -o:#不检车现存GID,创建相同的GID 和og通用
例如
[root@localhost ~]# groupadd -g 10000 -r goodluck #创建GID为10000的系统组goodluck [root@localhost ~]# tail -1 /etc/group goodluck:x:10000: #显示组
groupmod : 修改组属性
语法
groupmod [options] GROUP
常用选项
-g, --gid GID #修改GID -n, --new-name NEW_GROUP #组重命名 -o, --non-unique #修改GID为不唯一
例如
[root@localhost ~]# groupmod -g 10001 -n goodlook goodluck #更改GID为10001 改名goodlook [root@localhost ~]# tail -1 /etc/group goodlook:x:10001: #显示结果
groupdel 删除组 没有太多选项
passwd:修改指定用户的密码,仅root用户权限
选项
-d:#删除密码,仅有系统管理者才能使用;
-f:#强制执行;
-k:#设置只有在密码过期失效后,方能更新;
-l:#锁住密码;
-s:#列出密码的相关信息,仅有系统管理者才能使用;
-u:#解开已上锁的帐号。
-e:#强制用户下次登录修改密码
-n mindays: #指定最短使用期限
–stdin:#从标准输入接收用户密码;
[root@localhost ~]# echo "123456" |passwd --stdin root #使用管道更改密码 Changing password for user root. passwd: all authentication tokens updated successfully.
chage 修改密码有效期限
语法
chage[OPTION]… LOGIN
常用选项
-d, --lastday LAST_DAY #上一次密码更改日期 -E, --expiredate EXPIRE_DATE #密码的过期时间 -I, --inactive INACTIVE #账号的非活动期限 -m, --mindays MIN_DAYS #密码的最小有期限 -M, --maxdays MAX_DAYS #密码的最大有期限 -W, --warndays WARN_DAYS #密码的警告期限 -l, --list #列出用户密码等信息 -1
也可在/etc/login.defs修改创建用户默认的值 PASS_MAX_DAYS99999 #最大有效日期 PASS_MIN_DAYS0 #最小有效日期 0表示用不过期 PASS_MIN_LEN5 #密码的最小长度 PASS_WARN_AGE7 #密码的警告日期
示例
[root@localhost /]# chage -l root #显示root的密码的信息 Last password change: Jul 26, 2016 Password expires: never Password inactive: never Account expires: never Minimum number of days between password change: 0 Maximum number of days between password change: 99999 Number of days of warning before password expires: 7
groupmems 管理用户的主要成员
语法
groupmems -a user_name | -d user_name | [-g group_name] |
-l | -p
常用选项
-a, --add user_name #新增用户到当前用户的组 -d, --delete user_name#删除用户于当前的组 -g, --group group_name#更改组名 -l, --list #列出组成员 -p, --purge #清空组成员 [root@localhost ~]# groupmems -a linux #新加linux用户到组 [root@localhost ~]# groupmems -a gentoo #新加gentoo用户到组 [root@localhost ~]# groupmems -l #列出组成员 linux gentoo #成员 [root@localhost ~]# groupmems -p #清空组成员 [root@localhost ~]# groupmems -l #查看组成员显示为空
groups 显示用户所属组
语法
groups [OPTION]… [USERNAME]…
[root@localhost ~]# groupmems -a linux #新增用户到组 [root@localhost ~]# groups root 显示root用户的组 root : root # 用户:组 [root@localhost ~]# groups linux #显示linux所属的组 linux : linux root #它有两个组,linux、root组
chgrp 用来改变文件或目录所属的用户组
语法
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
常用选项
-c, –changes #显示更改过程
-R, –recursive #递归更改,当更改为父目录是,子目录及文件都更改
–reference=RFILE #参照其他文件或目录
例如
[root@localhost testdir]# ll -d /testdir #显示目录属性 drwxr-xr-x 2 root root 6 Aug 6 14:44 /testdir [root@localhost testdir]# chgrp -v Cloud /testdir #更改目录组 changed group of ‘/testdir’ from root to Cloud #显示更改过程 [root@localhost testdir]# ll -d #显示更改组 drwxr-xr-x 2 root Cloud 6 Aug 6 14:43 .
原创文章,作者:ladsdm,如若转载,请注明出处:http://www.178linux.com/29251