Linux用户和组
用户和组
Linux多用户的意义
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
用户
每个用户有唯一的编号uid
使用ls -l可以查看文件所属的用户和组
用户分类
超级管理员: UID为0 root用户拥有至高无上的命令,root用户不能改名(#为管理员 $为普通用户)
系统用户:UID小于1000,用于管理服务,一般不允许登陆
普通用户:UID大于或等于1000,权限较小,允许登陆,只能使用bin下命令
组
每个组有唯一的gid,用户一定属于某个组,同时也可以加入多个辅助组(创建用户,系统会创建一个同名的组来装载该用户)
用户管理命令
用户创建 useradd
-c, --comment 描述
-d, --home HOME_DIR 家目录
-e, --expiredate EXPIRE_DATE 过期时间
-f, --inactive INACTIVE 是否启用过期机制
-g, --gid GROUP 指定组ID号
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] 附加组
-m, --create-home 建立家目录
-M 不建立家目录
Do not create the user′s home directory, even if the system wide
setting from /etc/login.defs (CREATE_HOME) is set to yes.
-N, --no-user-group 不指定用户同名组
-r, --system 指定该帐号是系统帐号
-s, --shell SHELL 指定登录shell
-u, --uid UID 指定用户ID号
-U, --user-group 指定用户创建用户同名组
-o 创建用户是可以uid重复
注意:用户名不能超过 32 个字符
#创建用户成功后会自动创建用户同名的组
useradd zx125
密码设置 passwd
passwd - set user password
-l lock 锁定账号不能登录
-u unlock 解锁账号
-d delete a passwd for an account 删除一个账号的密码
-S This will output a short information about the status of the password for a given account.打印用户的简短信息
--stdin 特殊的密码赋值操作
echo linux |passwd --stdin vfast 1 > 0
查看用户信息
id user
修改账号信息 usermod
-a, --append 将用户添加到附加组
-L, --lock 锁定账号
-U, --unlock 解锁账号
-m, --move-home with -d 将用户的目录移动到新位置
删除账号 userdel
-f, --force 删除账号,不包括账号文件
-r, --remove 删除主目录及邮箱
修改用户简短信息 chage
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期 如果设置为0 用户下次登录必须改密码
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期
查看
用户信息文件
/etc/passwd
User account information.
[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
/etc/shadow
Secure user account information.
用户名:这是用户登录系统时使用的用户名,它在系统中是惟一的
口令:此字段存放加密的口令
最后一次修改的时间:标识从某一时刻起到用户最后一次修改口令的天数
最小时间间隔:两次修改口令之间的最小天数
最大时间间隔:口令保持有效的最多天数,即多少天后必须修改口令
警告时间:从系统开始警告到口令正式失效的天数
不活动时间:口令过期多少天后,该账号被禁用
失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)
标志:未使用
用户切换和注销
su - 用户名 切换用户
exit 回到原来用户
前提:如果在系统的图形界面无效
logout
who am i 原始登录用户
whoami 当前用户
组管理命令
groupadd
-g, --gid GID 指定GID
-r, --system 创建一个系统组
-o, --non-unique 此选项允许添加一个使用非唯一 GID 的组
注意:组名最长为 32 个字符
groupmod
-g, --gid GID
-n, --new-name NEW_GROUP 给组改名
-o, --non-unique
例子
1、将组名为test3的名字改为baism
groupmod test3 -n baism
groupdel
groupdel - delete a group
gpasswd
gpasswd newgrp
gpasswd - administer /etc/group and /etc/gshadow
-a, --add USER add USER to GROUP
-d, --delete USER remove USER from GROUP
-r, --remove-password remove the GROUP's password
-R, --restrict restrict access to GROUP to its members 限制用户登录该组,除了组成员。
-M, --members USER,... set the list of members of GROUP
-A, --administrators ADMIN,...
set the list of administrators for GROUP
案例:
设置组root密码 #gpasswd root
用户组身份切换为root $newgrp root
组管理员设置 #gpasswd test -A user3
限制陌生用户切换到组 #gpasswd -R test
指定组的成员列表 # gpasswd test -M user3,user2
查看
/etc/group
Group account information.
[组名]:[密码域]:[GID]:[组员列表]
/etc/gshadow
Secure group account information.
组密码的用处
可以临时给一个用户 加入组内(用户本身不属于这个组)
当一个用户同时属于多个组,如何切换组身份 newgrp 命令
su - user1
newgrp test 切换到test组
如何临时切换到某个外组【用户本身不属于这个组】
1)首先给外组设置一个组密码
gpasswd root
正在修改 root 组的密码
新密码:
请重新输入新密码
su - user1
newgrp root
所有相关文件
创建用户流程
创建一个用户首先会在下面开头的4个文件写入相关的默认信息,默认信息从哪里来呢?首先会从useradd里面拿去基本的用户默认值,密码相关的默认值从login.defs里面拿,用户文件是直接拷贝的/etc/skel/文件到home目录下面
/etc/passwd
用户账户信息。
/etc/shadow
安全用户账户信息。
/etc/group
组账户信息。
/etc/gshadow
安全组账户信息。
/etc/default/useradd
账户创建的默认值。
(比如创建用户并设置不创建同名组,就会去这个文件夹找默认配置的组100)
/etc/skel/
包含默认文件的目录。
/etc/login.defs
Shadow 密码套件配置。