LInux用户和组
安全上下文:
进程应该以发起者的用户身份运行,我们应该给其最少的权限,尤其不应该授予管理员权限
进程对文件的访问权限,取决于发起此进程的用户的权限,为了能够让后台进程或服务类进程
以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从来不用登录系统(no login)
我们称此类用户为 系统用户
groupadd:创建一个新组
groupadd [OPTIONS] group_name
-g GID:指定GID,默认是上一个组的GID+1
-r:创建系统组
groupmod:修改组
groupmod [OPTIONS] group_name
-g GID:修改GID
-n new_name:修改组名
groupdel:删除组
直接删除即可,注意如果组里有成员,此操作会使用户丢失主组
useradd:创建用户
useradd [OPTIONS] user_name
-u,–uid UID:指定UID
-g,–gid GID :指定基本组ID,此组得事先存在
-G,–groups GROUP1,GROUP2,…指明用户所属的附加组
-c,–comment COMMENT:注释信息,多用于显示用户的全名
-d,–home HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel此目录并从命名实现,指定
的家目录路径如果事先存在,则不会为用户复制环境配置文件
-s,–shell SHELL:指定用户的默认SHELL,可用于所有的shell列表存储在/etc/shells文件
[root@zilongyun default]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
-r,–system:创建系统用户
-m,–create-home:创建主目录
-M:不为用户创建主目录
-f:非活动期限,密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1
表示禁用这个功能。
-D:显示或修改useradd的默认字符文件
[root@zilongyun ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
默认文件其实是在/etc/default/useradd
我们也可以通过直接编辑此文件实现
更详细创建用户默认的配置文件在/etc/login.def
usermod命令:修改一个用户账号
usermod [选项] 登录
-u:–uid UID:修改用户的ID为此处指定的新ID
-g:–gid GROUP:修改用户所属的基本组
-G:–groups GROUP[GROUP2,GROUP3,…]:修改用户所属的附加组,原来的附加组会被覆盖
-a:–append:与 -G 一同使用,用于为用户追加新的附加组
-c:–comment COMMENT:修改注释信息
-d:–home HOME_DIR:修改用户的家目录:用户原有的文件不会被转移新位置
-m:–move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
-l:–login NEW_LOGIN:修改用户名
-s:–shell SHELL:修改用户的默认SHELL
-L:–lock:锁定用户密码,即在用户原来的密码字符串之前添加一个"!"
-U:–unlock:解锁用户的密码
注意:只有文件的属主能更改文件的权限信息
userdel命令:删除用户
userdel[选项]登录
-r:删除用户时一并删除其家目录
(1)[root@zilongyun ~]#
groupadd gentoo && groupadd -g 4000 distro && groupadd -g 4001 peguin && useradd -u 4001 -g gentoo -G distro,peguin gentoo
(2)[root@zilongyun ~]#
useradd -c “Fedora” -s /bin/tcsh fedora
(3)[root@zilongyun ~]#
usermod -md /var/tmp/gentoo gentoo
(4)[root@zilongyun ~]#
groupadd netadmin && usermod -aG netadmin gentoo
passwd命令:密码管理命令
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warn‐
days] [-i inactivedays] [-S] [–stdin] [username]
(1)passwd:修改用户自己的密码
(2)passwd USERNAME:修改指定用户的密码,但默认仅root有此权限
-l :锁定用户
-u:解锁用户
-d:清除用户的密码
-e DATE:指定用户的过期时间-
-i DAYS:非活动期限,指定的密码过期之后还能使用多长时间
-n DAYS:密码的最短使用期限
-x DAYS:密码的最长使用时间
-w DAYS:警告期限
–stdin:
echo “PASSWORD” |passwd --stdin USERNAME
如果不想输出结果,可以使用&>/dev/null
gpasswd命令:
组密码文件:/etc/gshadow
gpasswd [OPTION]group
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
newgrp命令:临时切换指定的组为基本组
newgrp [-] groupname
chage命令:更改用户密码的过期时间
-d:清除用户的密码
-E DATE:指定用户的过期时间
-w DAYS:警告期限
-M DAYS:密码的最长使用时间
-m DAYS:密码的最短使用期限
id命令:用于显示用户的实际和有效的ID
id [OPTION]… [USER]
-u:仅显示有效的uid
-g:仅显示有效的gid(显示的是基本组ID)
-G:显示基本组ID以及附属组ID
-n:显示名字而非ID
su命令:switch user
登录式切换:会通过读取目标的用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
非登录式切换:不·通过读取目标的用户的配置文件来重新初始化
su USERNAME
注意:管理员可无密码切换至其他任何用户
-c选项:-c “COMMAND” :仅以指定用户的身份运行此处指定的命令
其他几个命令:
chsh,chfn,finger,whoami,pwck,grpck
chsh:修改登录SHELL
chfn:修改你的finger信息
finger:用户信息查找程序(yum环境下,使用yum install finger -y 安装即可)
whoami:打印有效的用户标识(我是谁?)
pwck:检查密码文件的完整性
检查项目有:
· 正确的字段数
· 一个唯一且有效的用户名
· 一个有效的用户和组标识符
· 有效的主组
· 有效的主目录
· 有效的登录 shell
grpck:检查组文件的完整性
检查的项目有:
· 正确的字段数
· 一个唯一且有效的组名
· a valid group identifier (/etc/group only)
· a valid list of members and administrators
· a corresponding entry in the /etc/gshadow file (respectively
/etc/group for the gshadow checks)