✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
个人主页:Java Fans的博客
个人信条:不迁怒,不贰过。小知识,大智慧。
当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
本文内容:Linux用户管理
在首次创建账户的时候如果信息不全,或者某些设置出现了错误的话,可以考虑修改用户的信息。可以直接通过修改/etc/passwd和/etc/shadow文件从而实现用户相关信息的修改。还可以通过usermod命令完成用户信息的修改。
名称:usermod
使用权限:root
使用方式:usermod [参数] [用户名]
说明:修改用户信息只有root账户可以执行。
参数 | 说明 |
---|---|
-c<备注> | 修改用户账号的备注文字。 |
-d<登入目录> | 修改用户登入时的目录。 |
-e<有效期限> | 修改账号的有效期限。 |
-f<缓冲天数> | 修改在密码过期后多少天即关闭该账号。 |
-g<群组> | 修改用户所属的群组。 |
-G<群组> | 修改用户所属的附加群组。 |
-l<账号名称> | 修改用户账号名称。 |
-L | 锁定用户密码,使密码无效。 |
-s | 修改用户登入后所使用的Shell。 |
-u | 修改用户ID。 |
-m | 修改用户根目录。 |
-U | 接触密码锁定。 |
将whb用户加入seashorewang组。
说明:在whb账户下使用usermod命令提示权限不够,因为只有root账户才具有修改账户信息的权限。
修改whb用户的根目录。
说明:在修改用户根目录的时候首先应该在/home/目录下创建一个文件夹,才能在使用usermod命令修改的时候将用户的根目录修改为该目录,不然会提示目录不存在。
修改whb用户的名称为wanglaoshi。
说明:修改用户名后,查询whb也就是原来的用户名,除了组名为whb之外没有查询到任何记录,查询新用户名wanglaoshi时,发现在/etc/passwd、/etc/shadow、/etc/group中查找到了相应的记录。
为账户wanglaoshi加上说明wanghaibin laoshi。
使用删除账户命令一定要小心谨慎,通常要删除一个账号的时候,手动将/etc/passwd与/etc/shadow里面的该账号信息删除即可。一般而言,如果该账号只是暂时不启用的话,可以将/etc/shadow里面最后倒数一个字段设定为0就可以让该账号无法使用,但是所有和该账号相关的数据都会留下来。
使用userdel的时机通常是你真的确定不要让该用户在主机上面使用任何数据。
用户如果在系统上面操作过一段时间后,该用户其实在系统内可能含有其他文件。举例来说邮件信箱(Mail Box)或者是例行性命令(Crontab)之类的文件。因此,如果想要将某个账号完整的删除,在删除之前,先执行 find / -user username 命令查找出这个系统内属于useaname的文件,如果确认没有问题再进行删除操作。
名称:userdel
使用权限:root
使用方式:userdel [-r] [用户账户]
说明:userdel可删除用户账号与相关的文件。若不加参数,则仅删除用户账号,而不删除相关文件。
参数 | 说明 |
---|---|
-f | 删除用户登录目录以及目录中的所有文件。 |
-r | 连同用户的主文件夹一起删除。 |
删除账户test。
说明:默认没有参数的情况下删除用户的时候,发现所有的配置文件中的用户信息已经全部被删除,但是该用户的根目录还存在,和这个目录有关的文件还存在。
删除账户test2,连同用户的根目录一起删除。
说明:加上参数-r后,发现删除账户的时候连同根目录一起删除了。
使用useradd可以创建账号,但是创建的账号在/etc/shadow中密码行为特殊字符,这表示该用户虽然创建了,但不能使用该账号来登录。如果想使用该账号登录系统需要为该账号设置密码。
名称:passwd
使用权限:所有账户(如果后面加参数需要root)
使用方式:passwd [用户名]
说明:为用户设置的密码必须满足/etc/login.defs配置文件中规定的密码位数。
参数 | 说明 |
---|---|
-l | 锁定口令,即禁用账号。 |
-u | 口令解锁。 |
-d | 使账号无口令。 |
-f | 强迫用户下次登录时修改口令。 |
-n | 后面接天数,用来设置/etc/shadow文件中的第4个字段,多少天内不能修改密码。 |
-x | 后面接天数,用来设置/etc/shadow文件中的第5个字段,多少天内必须修改密码。 |
-w | 后面接天数,用来设置/etc/shadow文件中的第6个字段,密码过期前多少天发出密码过期警告。 |
-i | 后面接天数,用来设置/etc/shadow文件中的第7个字段,密码失效日期。 |
用root账户为whb账户设置密码。
设置密码的命令式passwd要在后面加上username,如果没有加username则修改的是root密码。
由root账户切换到whb账户,为whb设置密码
说明1:只有root账户才可以修改其他用户的密码,也就是在passwd后面加上username,普通账户只能修改自己的密码,也就是在自己的账户下输入passwd命令即可。
说明2:普通用户修改自己的密码和使用root账户修改其他用户密码不一样,需要 首先输入普通用户自己的密码,如果输入不正确会出现“鉴定令牌操作错误”的提示;如果输入密码的长度小于/etc/login.defs中规定的长度,系统会出现“WAY过短”的提示;如果输入密码没有通过PAM模块的检测,会提示“无效的密码:过于简单化/系统化”,只有输入的密码合理合规且长度适合才可以通过。
说明3:关于密码的规定说明如下:
(1) 密码不能与账号相同;
(2) 密码不要使用字典里经常出现的英语单词;
(3) 密码长度一般不要超过8位;
(4) 密码不要使用个人信息,如身份证号、手机号、生日等;
(5) 密码不要使用过于简单的表达式;
(6) 密码尽量使用大小写字母、数字、特殊字符等的组合。
通过standard input为用户test2设置密码。
显示用户test2的相关参数。
说明:显示的参数就是/etc/shadow文件里面的数据。
通过chage –l命令查看账户参数的详细信息
锁定whb账号让其不能修改密码。
清除whb账户密码。
使用who或者w命令可以实现用户身份的查询
使用w查看所有登录用户的信息
使用who查看所有登录用户的信息
查看某个用户的登录信息使用“w+用户名”
查看所有用户的组信息
添加用户就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
名称:useradd
使用权限:root
使用方式:useradd [选项] [用户名]
说明:用户名指的是新增加的账户的名称。
参数 | 说明 |
---|---|
-u | 后面接UID,是一组数字。直接给这个账号指定一个特定的UID。 |
-g | 后面接的用户组名称就是初始用户组。 |
-G | 后面接的用户组名称是这个账号还可以属于哪些用户组。 |
-M | 强制不创建家目录。 |
-m | 强制必须创建家目录。 |
-c | 就是/etc/passwd第五栏的用户说明信息,可以随便设置。 |
-d | 此参数后面指定的路径作为新账号的家目录,而不使用默认值。 |
-r | 创建的账号为系统账号:该账号的UID会有限制(/etc/login.defs)。 |
-s | 指定新账号的默认Shell。 |
默认参数增加一个账户,名称为zhangyan。
说明1:zhangyan账户的主目录其权限为700,即只有自己能够操作该目录,其他用户没有权限。
说明2:新建账号的UID为504,GID为504.
说明3:zhangyan这个账号不能登录使用,因为没有设置密码信息。
使用seashorewang为初始用户组,666为UID,创建用户test。
说明1:查看/etc/passwd信息发现,新增账号的UID为666,并且指定了其初始的用户组ID为500,也就是初始的用户组为seashorewang。
说明2:如果要指定某个组为新建用户的初始组的前提是该组必须是已经创建好并且存在的。
说明3:默认参数创建用户的时候会创建一个同名和相同ID(根据具体情况而定)的组。本例中因为seashorewang组是已经存在的组,并且作为了新建用户的初始组来使用,所以不再创建组。
创建账号为test2,将其加入组seashorewang,不作为初始组。
说明1:创建用户的时候同时创建了一个相同ID,相同名称的用户组,并且用户的初始组不是seashorewang。
说明2:该账户同时属于test2组和seashorewang组。
Linux系统是多用户多任务的分时操作系统,要做到不同的用户能同时访问不同的文件,允许不同的用户从本地登录或远程登录,用户就必须拥有一个合法的账号。Linux系统就是通过账号来实现对用户访问的控制,因此需要对用户与组进行有效的管理。
用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面能帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和用户口令。用户在登录时输入正确的用户名和口令后,才能进入系统和自己的主目录。
Linux下的用户可以分为三类:超级用户、系统用户和普通用户。
超级用户的用户名为root,它具有一切权限,只有进行系统维护(例如建立用户等)或其他必要情况下才用用户登录,以避免系统出现安全问题。
系统用户是Linux系统正常工作时所必须的内建用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,如bin、daemon、adm、lp等用户。
实现用户账号的管理,主要完成的工作有:
① 用户账号的添加、删除和修改。
② 用户口令的管理。
③ 用户组的管理。
添加账号就是在系统中创建一个新的账号,然后为新账号分配用户的ID、用户所属的组、主目录和登录的Shell等资源。新增加的账号是被锁定的,不能使用,只有为其设置密码后才可以使用该账号。
UID与GID
Linux系统不能识别你所设置的账号名称,Linux能够识别的是一组号码称之为ID。使用id命令可以查看用户有关的ID信息。
名称:id
使用权限:所有使用者
使用方式:id [选项]…[用户名]
说明:使用id可以查看登录系统时Linux真正识别的ID。
参数 | 说明 |
---|---|
-a | 忽略,兼容其它版本。 |
-Z或–context | 只输出当前用户的安全上下文。 |
-g或–group | 只输出有效的GID。 |
-G或–groups | 输出所有的GID。 |
-n或–name | 对于-ugG输出名字而不是数值。 |
-r或–real | 对于-ugG输出真实ID而不是有效ID。 |
-u或–user | 只输出有效UID。 |
-help | 输出帮助后退出。 |
-version | 输出版本信息后退出。 |
查看当前用户的ID信息。
说明:使用id命令看到的uid就是我们用户名对应的id;gid就是用户名所对应的组的id。
每一个文件都有一个所有者,表示该文件是谁创建的,这个文件的所有者在Linux系统中存储的是该用户名对应的UID。同时该文件还有一个组编号GID,表示该文件所属的组,一般为文件所有者所属的组。
除了id命令,还可以使用下面的方式查看UID和GID。
说明:/etc/passwd中存放着用户相关的信息,其中包括UID;/etc/group中存放着用户组相关信息,其中包含GID。
普通用户是为了让使用者能够使用Linux系统资源而建立的,大多数用户属于此类。每个用户都有一个数值,称为UID。超级用户的 UID 为 0,系统用户的 UID 一般为1~499,普通用户的 UID 为 500~60 000 之间的值。一般每建立一个账户的时候,会建立一个同名的组,GID一般情况下也和UID一致。
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。