linux中跟用户有关的命令,Linux用户和用户组以及相关命令(下)

用户和组管理的相关命令介绍以及使用:

大体上涉及到的命令有:useradd,usermod,passwd,userdel,groupadd,groupmod,gpasswd,groupdel,chage,chsh,chfn,id,w, who,whoami,su,finger

1、useradd:create a new user or update default new user information.

用法:

useradd [options] LOGIN

useradd -D

useradd -D [options]

参数:

-r:创建系统用户[root@ST_server ~]# useradd -r tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:497:497::/home/tom:/bin/bash

[root@ST_server ~]#

创建了一个tom的用户,在centos6环境下,系统用户范围是1-499,tom的userID为497,所以能看出这个tom属于系统用户

-u:指定用户UID号码,这个号码是唯一的[root@ST_server ~]# useradd -u8000 tom

Creating mailbox file: File exists

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:8000:8000::/home/tom:/bin/bash

通过-u指定为8000创建了用户tom,我们能发现创建之后的tom的userID为8000

-g:指定用户所属基本组,并且这个组必须预先存在[root@ST_server ~]# useradd -g huangyisan tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:506:502::/home/tom:/bin/bash

[root@ST_server ~]# cat /etc/group | grep 502

huangyisan:x:502:huangyisan1,huangyisan3

通过-g参数将tom指定为huangyisan这个组为主组,cat信息能发现tom的GID为502,而502对应的组是huangyisan这个组,说明-g生效。同时需要注意,在group文件中,huangyisan这个组内,第四段内并不存在tom。

-G:指定用户所属的附属组,并且这个组必须预先存在[root@ST_server ~]# useradd -G huangyisan tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:506:506::/home/tom:/bin/bash

[root@ST_server ~]# cat /etc/group | grep huangyisan

huangyisan:x:502:huangyisan1,huangyisan3,tom

通过-G对 tom用户指定了附属组为huangyisan,然后我们通过passwd查看,发现tom的GID并没变成502,说明tom的主组还是保留为tom;查看group信息,huangyisan组的末尾部分,多了tom,说明tom成为了huangyisan组中的附属成员

-g和-G还是存在区别的,通过上面两个例子比较可以得到答案。一个用户会同时拥有主组权限和附属组的权限,但一个用户只能属于一个主组,可以属于多个附属组。

-c:给添加的用户指定别名,该别名可以是注释信息[root@ST_server ~]# useradd -c "mage jiaoyu" tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:506:506:mage jiaoyu:/home/tom:/bin/bash

通过-c指定别名后,在passwd文件内第五部分信息内多出了mage jiaoyu的commit。

-d:指定用户的家目录[root@ST_server ~]# useradd -d /home/tom1 tom

[root@ST_server ~]# ls /home/tom1/

[root@ST_server ~]# ls /home/tom1/ -a

.  ..  .bash_logout  .bash_profile  .bashrc

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:506:506::/home/tom1:/bin/bash

通过-d将tom用户的家目录指定为/home/tom1下面,查看passwd文件,发现tom的家目录是/home/tom1,;同时进入家目录ls -a我们能够发现tom用户的环境变量已经被添加进来了。这些环境变量是从/etc/skel下面复制到用户的家目录内的。有效的利用/etc/skel可以在创建用户的时候节约大把时间,比如定制化用户的环境变量

-s:指定用户使用的shell环境[root@ST_server ~]# useradd -s /bin/csh tom

[root@ST_server ~]# !cat

cat /etc/passwd | grep tom

tom:x:506:506::/home/tom:/bin/csh

通过-s指定了tom用户的shell环境为csh,通过passwd的最后一个部分能看到是csh了,默认不指定则为/bin/bash。在/etc/shells下面记录了当前可用所有shell的环境。

-M:不给用户创建家目录[root@ST_server ~]# useradd -M tom

[root@ST_server ~]# !cat

cat /etc/passwd | grep tom

tom:x:506:506::/home/tom:/bin/bash

[root@ST_server ~]# ls /home/tom

ls: cannot access /home/tom: No such file or directory

通过-M指定创建tom,在passwd中的第六个部分是存在tom的家目录的,但是ls /home/tom发现查看并没有这个目录。

-p:给用户设定密码,但这个密码是加密后的密码[root@ST_server ~]# useradd -phuangyisan tom

[root@ST_server ~]# cat /etc/shadow | grep tom

tom:huangyisan:16658:0:99999:7:::

通过-p给tom用户指定了huangyisan的密码,去查看shadow文件,发现huangyisan已经是被加密后的密码了。之后通过用户名为tom,密码为huangyisan登陆,发现无法登陆。

2、usermod:usermod - modify a user account.

用法:

usermod [options] LOGIN

参数:

-u:重新指定用户UID,该UID必须唯一[root@ST_server ~]# cat /etc/passwd| grep tom

tom:x:506:506::/home/tom:/bin/bash

[root@ST_server ~]# usermod -u 605 tom

[root@ST_server ~]# cat /etc/passwd| grep tom

tom:x:605:506::/home/tom:/bin/bash

原先tom的UID为506,通过-u将tom的UID修改成了605

-g:重新指定用户GID,该GID必须已经存在[root@ST_server ~]# cat /etc/passwd| grep tom

tom:x:605:506::/home/tom:/bin/bash

[root@ST_server ~]# usermod -g 502 tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502::/home/tom:/bin/bash

原先tom的GID为506,通过-g将tom的GID修改成了502

-G:重新指定用户所属组id,该所属组id必须已经存在[root@ST_server ~]# cat /etc/group | grep huangyisan

huangyisan:x:502:huangyisan1,huangyisan3,tom

huangyisan1:x:503:

huangyisan3:x:505:

[root@ST_server ~]# usermod -G 503 tom

[root@ST_server ~]# cat /etc/group | grep huangyisan

huangyisan:x:502:huangyisan1,huangyisan3

huangyisan1:x:503:tom

huangyisan3:x:505:

原先tom存在于502的huangyisan的所属组中,通过-G指定后,将tom划分到了503的huangyisan1的所属组中。

还没完[root@ST_server ~]# usermod -a -G 502 tom

[root@ST_server ~]# cat /etc/group | grep huangyisan

huangyisan:x:502:huangyisan1,huangyisan3,tom

huangyisan1:x:503:tom

huangyisan3:x:505:

结合-a参数,可以让tom同时存在与两个所属组中,即502和503。

-s:重新指定用户shell模式,该shell必须存在与/etc/shells里面[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502::/home/tom:/bin/bash

[root@ST_server ~]# usermod -s csh tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502::/home/tom:csh

原先tom的shell模式为bash,通过-s指定后,成了csh

-c:重新指定用户commit别名[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502::/home/tom:csh

[root@ST_server ~]# usermod -c "mage jiaoyu" tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502:mage jiaoyu:/home/tom:csh

原先tom的commit为空,通过-c指定后成了mage jiaoyu

-d:重新指定用户家目录[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502:mage jiaoyu:/home/tom:csh

[root@ST_server ~]# usermod -d /home/tom1 tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502:mage jiaoyu:/home/tom1:csh

[root@ST_server ~]# ls -a /home/tom1

ls: cannot access /home/tom1: No such file or directory

原先tom的家目录为/home/tom,通过-d指定后,成为了/home/tom1,但是该目录实际上并不存在

还没完[root@ST_server ~]# !cat

cat /etc/passwd | grep tom

tom:x:605:502:mage jiaoyu:/home/tom:csh

[root@ST_server ~]# usermod -m -d /home/tom1 tom

[root@ST_server ~]# cat /etc/passwd | grep tom

tom:x:605:502:mage jiaoyu:/home/tom1:csh

[root@ST_server ~]# ls -a /home/tom1/

.  ..  .bash_logout  .bash_profile  .bashrc

对原先命令加上-m参数,则能将原先家目录下所有问题件搬移到新的家目录,同时原先的家目录删除。

-l:重新指定用户的用户名[root@ST_server ~]# cat /etc/passwd | grep "tom"

tom:x:605:502:mage jiaoyu:/home/tom:csh

[root@ST_server ~]# usermod -l cisco tom

[root@ST_server ~]# cat /etc/passwd | grep "tom"

cisco:x:605:502:mage jiaoyu:/home/tom:csh

通过-l 对tom用户重命名为cisco,但是家目录还是/home/tom

-L:锁定指定用户

通过ssh命令无法进行登陆被锁定的用户,但是root用户下su 用户是可以登陆的。

-U:对用户解除锁定

使得可以通过ssh命令进行登陆。对-L的解锁操作

bash-4.1$情况解决方法

出现这种情况,一般是缺少家目录,或者家目录内缺失对应的环境变量,方法是创建家目录,并且把环境变量放到家目录中。同时将这些文件赋予对应用户所属者和所属组。[root@ST_server ~]# su tom

bash-4.1$ exit

exit

[root@ST_server ~]# mkdir /home/tom

mkdir: cannot create directory `/home/tom': File exists

[root@ST_server ~]# cp -a /etc/skel/.[^.]* /home/tom

[root@ST_server ~]# chown tom.tom /home/tom -R

[root@ST_server ~]# su tom

Welcome!

[tom@ST_server root]$

3、passwd:update user's authentication tokens

用法:

passwd [OPTION] [UserName]

参数:

-l:锁定用户[root@ST_server ~]# passwd -l tom

Locking password for user tom.

passwd: Success

通过-l对tom用户进行锁定,ssh无法进行登陆,但root还是可以su到tom用户下的。

-u:解锁用户[root@ST_server ~]# passwd -u tom

Unlocking password for user tom.

passwd: Success

通过-u对tom用户解锁,ssh可以进行登录。

-n:密码最小生存期限

-x:密码最大生存期限

-w:用户账号到期之前提醒天数

-i:密码超出指定日期后宽恕天数[root@ST_server ~]# cat /etc/shadow | grep tom

tom:$6$OmVyNj5A$b6KUC9y3WEdYs63xoCDISBnLJySQukIbEb6MnCd1xV8JHcrkDNrcsPIEQ9nje.ZY.Vb4aYA10ZUCYX805FoUb0:16659:0:99999:7:::

[root@ST_server ~]# passwd -n 20 -x 40 -w 10 -i 15 tom

Adjusting aging data for user tom.

passwd: Success

[root@ST_server ~]# cat /etc/shadow | grep tom

tom:$6$OmVyNj5A$b6KUC9y3WEdYs63xoCDISBnLJySQukIbEb6MnCd1xV8JHcrkDNrcsPIEQ9nje.ZY.Vb4aYA10ZUCYX805FoUb0:16659:20:40:10:15::

比较倒数六段可以得到相应结果。

--stdin:从标准输出接受用户和密码[root@ST_server ~]# echo "cisco" | passwd --stdin tom

Changing password for user tom.

passwd: all authentication tokens updated successfully.

echo部分为密码部分,--stdin部分为用户名。将tom的密码修改成cisco

这样的好处是避免两次输入密码,可以用在脚本里面。

-d:清除用户密码[root@ST_server ~]# passwd -d tom

Removing password for user tom.

passwd: Success

如果使用useradd创建用户后,没有设置密码,则这个用户属于锁定状态;但是如果创建了用户,并且也给予了密码,之后使用passwd -d清除密码后,还是可以登陆的,不是锁定状态。

4、userdel:delete a user account and related files

用法:

userdel [options] LOGIN

参数:

不带参数:仅删除用户[root@ST_server ~]# userdel tom

[root@ST_server ~]# ll /home/tom/

total 4

drwxr-xr-x. 2 605 506 4096 Aug 11 21:12 11111

[root@ST_server ~]# cat /etc/passwd | grep tom

[root@ST_server ~]#

[root@ST_server mail]# ll /var/spool/mail/ | grep tom

-rw-rw----. 1         605 mail 0 Aug 11 20:41 tom

上面可以发现,不带参数,将删除tom这个用户,passwd里面不存在了,但是tom的家目录和邮箱还是存在的。

-r:删除用户的同时,删除其家目录和邮箱,用户未登录状态[root@ST_server mail]# userdel -r jack

[root@ST_server mail]# ll /home/jack

ls: cannot access /home/jack: No such file or directory

[root@ST_server mail]# ll /var/spool/mail/ | grep jack

通过-r参数,将jack的用户,家目录和邮箱一并删除。[root@ST_server mail]# userdel -r jack

userdel: user jack is currently logged in

当jack用户属于登陆状态时,无法删除家目录和邮箱以及用户,会出提示,用户退出后还可以登陆

-f:删除用户同时,删除其家目录和邮箱,即便用户处于登陆状态[root@ST_server home]# userdel -f mary

userdel: user mary is currently logged in

[root@ST_server home]# cat /etc/passwd | grep mary

[root@ST_server home]#

当mary用户处于登陆状态时,无法删除家目录,邮箱,但是用户被删除。同时退出后,用户无法再次登陆。

5、groupmod:modify a group definition on the system

用法:

groupmod [options] GROUP

参数:

-n:更变用户组名字[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan1

huangyisan1:x:503:

[root@ST_server home]# groupmod -n huangyisan13 huangyisan1

[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan1

[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan13

huangyisan13:x:503:

通过-n对huangyisan1组名重新指定为huangyisan13

-g:更变用户组的GID[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan13

huangyisan13:x:503:

[root@ST_server home]# groupmod -g 550 huangyisan13

[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan13

huangyisan13:x:550:

通过-g对huangyisan13组的GID更变为550

6、gpasswd:administer /etc/group and /etc/gshadow

用法:

gpasswd [option] group

参数:

不带参数:给用户组添加密码[root@ST_server home]# gpasswd  huangyisan

Changing the password for group huangyisan

New Password:

Re-enter new password:

[root@ST_server home]# newgrp ^C

-a:将指定用户加入到指定组中[root@ST_server home]# gpasswd -a tom huangyisan

Adding user tom to group huangyisan

[root@ST_server home]# cat /etc/group | grep -w ^huangyisan

huangyisan::502:huangyisan1,huangyisan3,tom

bash-4.1$ newgrp huangyisan

Password:

通过-a将tom加入到了huangyisan组,huangyisan是tom的附属组。

-d:将指定用户从指定组中删除[root@ST_server home]# gpasswd -d tom huangyisan

Removing user tom from group huangyisan

[root@ST_server home]# cat /etc/group | grep -w ^huangyisan

huangyisan::502:huangyisan1,huangyisan3

通过-d将tom从附属组huangyisan中删除

-r:清除组的密码[root@ST_server home]# gpasswd -r huangyisan

[root@ST_server home]#

使用-r清除组的密码

7、newgrp:log in to a new group

用法:

newgrp [-] [group]

参数:

无相应参数[tom@ST_server home]$ touch test

touch: setting times of `test': Permission denied

[tom@ST_server home]$ cd /home/tom/

[tom@ST_server ~]$ touch test

[tom@ST_server ~]$ ll test

-rw-rw-r--. 1 tom tom 0 Aug 12 19:37 test

[tom@ST_server ~]$ newgrp huangyisan

Password:

Welcome!

[tom@ST_server ~]$ touch test1

[tom@ST_server ~]$ ll test1

-rw-r--r--. 1 tom huangyisan 0 Aug 12 19:38 test1

[tom@ST_server ~]$

在没用newgrp把tom加入huangyisan组的时候,tom用户创建的test,所属组是tom,当用newgrp将tom暂时放入huangyisan组后,tom创建test1的所属组是huangyisan。此时只要exit,则可以重新回到tom组。newgrp命令主要是给当前用户暂时赋予某个其他用户组。在tom将自己暂时加入huangyisan组提示需要密码,是因为gpasswd huangyisan对huangyisan组加了密码导致的。

8.groupdel:delete a group

用法:

groupdel group

参数:

无相应参数[root@ST_server home]# groupdel tom

groupdel: cannot remove the primary group of user 'tom'

为什么不能删除呢?因为tom的主组是tom组,如果删了,那么tom用户将没有他的主组,这是不合理的。我们可以手动创建一个组,然后再删除。[root@ST_server home]# groupadd tom1

[root@ST_server home]# cat /etc/shadow | grep tom1

[root@ST_server home]# cat /etc/gshadow | grep tom1

tom1:!::

[root@ST_server home]# cat /etc/group | grep tom1

tom1:x:615:

[root@ST_server home]# groupdel tom1

[root@ST_server home]# cat /etc/gshadow | grep tom1

[root@ST_server home]# cat /etc/group | grep tom1

[root@ST_server home]#

通过查看gshadow和和group文件能发现tom1被删除了。

9、chage:change user password expiry information

用法:

chage [options] [LOGIN]

参数:

-l:查看指定用户密码有效期限等参数[root@ST_server home]# chage -l tom

Last password change: Aug 12, 2015

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

通过-l显示了tom用户密码的有效期等参数

-d:指定密码最后修改日期

-E:密码有效期,0表示即可过期,-1表示永不过期

-m:密码修改最小天数

-M:密码修改最大天数

-W:密码过期之前告警天数[root@ST_server home]# chage -d 100 -E 10 -m 5 -M 8 -W 3 tom

[root@ST_server home]# chage -l tom

Last password change: Apr 11, 1970

Password expires: Apr 19, 1970

Password inactive: never

Account expires: Jan 11, 1970

Minimum number of days between password change: 5

Maximum number of days between password change: 8

Number of days of warning before password expires: 3

和最上面的chage -l tom作比较。

还有其他命令chfn, chsh, finger, whoami, who, w等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值