linux操作系统是一个多用户多任务的分时操作系统。
任何一个要使用系统资源的用户,首先需要向管理员申请账户,然后登录该账户进入操作系统。
用户在系统中是分角色的,角色的不同,权限和所完成的任务也不同;
用户的角色是通过UID和GID识别的;
其中一个UID是唯一标识一个系统用户的账号。
用户账户分三类:
超级用户root(0)
程序用户(1~499)
普通用户(500~65535)
关于用户的说明:
超级用户:
超级用户即root用户,其UID和GID均为0。
每台unix/linux操作系统中都是唯一且真实存在的!
拥root用户拥有最高的管理权限,所以生产环境一般是禁止使用root用户!
程序用户:
程序用户并不是真实的用户,他们是协助系统管理的例如系统默认的bin、adm、nodoby、mail用户等。
普通用户:
相对于root超级用于而言的其它用户,普通用户可以创建很多个,一般是在root超级与用户下添加的。
以上是用户的介绍,除了用户概念之外还有用户组的概念。
linux系统中的用户组(group)就是具有相同特性的用户(user)集合;
将用户分组是linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,简化了管理工作。
用户和用户组的对应关系有:一对一、一对多、多对一。
一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。比如,root。
一对多:即一个用户可以存在多个组中,这个用户就具有这些组。
多对一:即多个用户可以存在一个组中,这些用户这些组的共同权限。
创建普通用户,就是在/etc/passwd文件中为新用户增加一条记录,
同时更新其他系统文件如/etc/shadow, /etc/group等。
一般是在root用户下创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
linux系统添加新的用户账号使用 useradd 命令,其语法如下:
useradd 选项 用户名
参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,指定用户所属的附加组(对应上述的一对多)。
-s Shell文件,指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名:指定新账号的登录名。
示例:
useradd -d /home/jn537 -m jn537
此命令创建了一个用户jn537,其中-d和-m选项用来为登录名jn537产生一个主目录 /home/jn537(/home为默认的用户主目录所在的父目录)。
如下创建用户,并指定口令:
root@jn10010537:~# useradd jn
root@jn10010537:~# passwd jn
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@jn10010537:~#
示例2:
useradd -s /bin/sh -g main_group –G tack_jn1,tack_jn2,root jn536
此命令新建了一个用户jn536,该用户的登录Shell是 /bin/sh,它属于main_group用户组,同时又附加属于tack_jn1,tack_jn2,root用户组,其中main_group用户组是其主组。
创建用户组:groupadd group
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,
必要时还删除用户的主目录。
如果一个用户的账号不再使用,可以从系统中删除。
删除一个已有的用户账号使用userdel命令,其格式如下:
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除,具体如下:
root@jn10010537:/home# userdel -h
Usage: userdel [options] LOGIN
Options:
-f, --force force removal of files,
even if not owned by user
-h, --help display this help message and exit
-r, --remove remove home directory and mail spool
-R, --root CHROOT_DIR directory to chroot into
--extrausers Use the extra users database
-Z, --selinux-user remove any SELinux user mapping for the user
root@jn10010537:/home#
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
usermod 选项 用户名
具体如下:
root@jn10010537:/home# usermod -h
Usage: usermod [options] LOGIN
Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-R, --root CHROOT_DIR directory to chroot into
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER new SELinux user mapping for the user account
root@jn10010537:/home#
用户账号刚创建时没有口令,但是被系统锁定,无法使用。
必须为其指定口令后才可以使用,即使是指定空口令。
超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
命令的格式为:passwd 选项 用户名
详细参看help文档如下:
root@jn10010537:~# passwd -h
Usage: passwd [options] [LOGIN]
Options:
-a, --all report password status on all accounts
-d, --delete delete the password for the named account
-e, --expire force expire the password for the named account
-h, --help display this help message and exit
-k, --keep-tokens change password only if expired
-i, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-l, --lock lock the password of the named account
-n, --mindays MIN_DAYS set minimum number of days before password
change to MIN_DAYS
-q, --quiet quiet mode
-r, --repository REPOSITORY change password in REPOSITORY repository
-R, --root CHROOT_DIR directory to chroot into
-S, --status report password status on the named account
-u, --unlock unlock the password of the named account
-w, --warndays WARN_DAYS set expiration warning days to WARN_DAYS
-x, --maxdays MAX_DAYS set maximum number of days before password
change to MAX_DAYS
root@jn10010537:~#