路漫漫其修远兮
吾将上下而求索

linux用户相关命令

 

1、useradd: 创建新用户或者更新,系统账号的家目录和邮箱不会自动创建,普通账号会创建,见下面的示例

 i. 格式:useradd [option] LOGIN,默认自动创建组为自己的私有组,在/home下

 1. -u: 指明ID

 a. -o:可以允许多个相同的id

 b. #useradd -ou 1004 bin  两个id=1004的用户

 2. -g: 指明基本组ID,此组得事先存在

 3. -c: comment 指定注释信息

 4. -r:创建系统用户

 5. -G: 指明用户附加组,多个组用逗号隔开,附加组要事先存在

 a. # useradd -G group_1 jerry   创建用户jerry,并且其附件组为group_1,即在组group_1的后面会跟有jerry 用户

 b. group_1:x:1003:jian,zhao,jerry  有三个用户

 c. 在创建用户andy的时候,系统会自动创建相同id的组andy,组andy对用户andy来说是基本组,对其他用户来说是附加组。将用户andy的附加组指定为group_1,则group_1后面会跟用户andy,附加组可以是多个,相当于用户参加了好几个活动,都是对应活动的成员。

 d. 用id命令可以查看用户的基本组和附加组

 6. -d: 创建新用户,并指定家目录,通过复制/etc/skel此目录并重命名实现。指定的家目录路径如果事先存在,则不会为用户复制环境配置文件

 a. # useradd -u 1286 -g bin -G root,ftp -s /bin/csh -d /etc/usertest7 test7

 b. -d:/etc/usertest7  最后一级目录不能存在,即usertest7 ,不然不会复制默认文件夹下文件

 7. -s: 指定用户默认shell,可用所有shell列表存储在/etc/shell目录下。

 8. -D: 显示创建用户的默认配置修改系统默认值

 9. # useradd -s /bin/csh zui  指定zui的默认shell

[root@localhost ~]#cd /home
[root@localhost /home]#ls
zhao
[root@localhost /home]#useradd -r andy    #系统用户默认不会创建家目录
[root@localhost /home]#ls
zhao
[root@localhost /home]#useradd bob    #普通用户默认创建家目录
[root@localhost /home]#ls
bob  zhao
[root@localhost /home]#cd bob/
[root@localhost /home/bob]#ls
[root@localhost /home/bob]#ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla
[root@localhost /home/bob]#cd ..
[root@localhost /home]#ls
bob  zhao
[root@localhost /home]#userdel bob    #删除用户默认不会删除家目录
[root@localhost /home]#ls
bob  zhao

另一个示例

[root@localhost ~]#useradd -c hello -u 1286 -g 501 -G andy,testgroup1 -s /bin/csh -d /root/marry_home marry
[root@localhost ~]#tail /etc/passwd
andy:x:496:491::/home/andy:/bin/bash
marry:x:1286:501:hello:/root/marry_home:/bin/csh

[root@localhost ~]#cd marry_home/
[root@localhost ~/marry_home]#ls -a    #该有的文件都有,创建用户前指定的家目录要存在
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla

[root@localhost ~/marry_home]#id marry
uid=1286(marry) gid=501(testgroup) groups=501(testgroup),492(testgroup1),491(andy)

[root@localhost ~/marry_home]#groupmems -g andy -l    #andy组里面的成员
marry 
[root@localhost ~/marry_home]#tail /etc/group    #两个附加组后面都有marry用户
named:x:25:
testgroup:x:501:
testgroup1:x:492:marry
andy:x:491:marry

 ii. useradd -D 选项 : 修改系统默认值

 1. useradd -D -s /bin/csh   更改默认配置,新建用户时默认shell就会改变

 2. 修改的结果保存在 /etc/default/useradd 文件中

 a. # cat /etc/default/useradd

[root@localhost ~]#cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@localhost ~]#useradd -D -s /bin/csh    #会更改
[root@localhost ~]#cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

          iii. 注意:创建用户时诸多默认设定配置文件为/etc/login.defs

                    比如:加密用户密码的加密方式默认sha512,是否创建家目录,uid,gid范围等

 iv. 创建新用户,并指定家目录,通过复制/etc/skel此目录并重命名实现

[root@localhost ~]#tail /etc/passwd    #例如创建的andy用户是系统用户,默认没有家目录文件
andy:x:496:491::/home/andy:/bin/bash
[zhao@localhost ~]$su - andy
Password: 
su: warning: cannot change directory to /home/andy: No such file or directory    #显示的命令行会有问题
-bash-4.1$ 
-bash-4.1$ 
-bash-4.1$ 
[root@localhost /home]#cp -r /etc/skel /home/andy    #复制并重命名,为andy用户手动创建一个家目录
[root@localhost /home]#ls
andy  bob  zhao
[zhao@localhost ~]$su - andy
Password: 
[andy@localhost ~]$    #显示正常了
[andy@localhost ~]$

          v. 创建用户但没有设置密码的用户不能登录

2、usermod: 修改用户属性

 i. 格式:usermod [options] LOGIN

 1. -u,–uid UID: 修改用户id为此处指定的新id

 a. # usermod -u 1002 jian   讲jian用户的id修改为1002

 2. -g,–gid GROUP: 修改用户所属的基本组

 3. -G,–groups,GROUP1,[GROUP2,,,]: 修改用户所属的附加组,原来的附加组会被覆盖,删除

 a. # usermod -G group user  将user的附加组改为group,原来的组删除

 4. -a,–append: 与-G一同使用,为用户追加新的附加组,原来的组还在,只是添加了新的组,就像参加了两个活动

 a. # usermod -a -G group user  为user追加新的附加组group,原来的组还在

 5. -c,–comment: 修改注释信息

 6. -d,–home_dir: 修改用户家目录,用户原有文件不会被转移到新位置,若要创建新家目录并移动原家数据,同时使用-m选项

 7. -m,–move-home: 只能与-d选项一同使用,将原来的家目录移动为新的家目录

 8. -l,–login: 修改用户名

 9. -e:指定用户账号过期时间,格式:YYYY-MM-DD,最后会转换为从1970年到目标时间放到shadow文件中,登录的时候检查变量

 10. -s,–shell: 修改用户的默认shell

 11. -L,–lock: 锁定用户密码,即在用户原来密码字符串前添加

 a. 如果禁止登陆为最前面加!:!$加密算法代号,在上面,$盐$密文,

 12. -U,–unlock: 解锁用户密码

[root@localhost ~]#usermod -u 502 -g 491 -G zhao -c hi -md /home/marry -l marry_1 -s /bin/bash marry
#marry的家目录现在在/root目录下面,将其移动到/home目录下面,并重命名

例子

[root@localhost ~]#usermod -L andy
[root@localhost ~]#tail /etc/shadow
andy:!$6$JXnyoIDP$ZDU8vLL8qteQKNdtZnhghV2xcYpT2.OvyhJNftqlHDOrX60EtvEU5b1nwvihjBN9Hyl99I8U94e9wpNLnD6pO.:17245::::::

[root@localhost ~]#usermod -U andy
[root@localhost ~]#tail /etc/shadow
andy:$6$JXnyoIDP$ZDU8vLL8qteQKNdtZnhghV2xcYpT2.OvyhJNftqlHDOrX60EtvEU5b1nwvihjBN9Hyl99I8U94e9wpNLnD6pO.:17245::::::

3、userdel:删除用户,删用户的时候用户的家目录及里面的文件不会删除

 i. -r:连带删除家目录,用户邮箱

4、passwd:修改密码,普通用户修改密码有密码复杂性要求

 i. passwd:修改用户自己的密码

 ii. passwd USERNAME:修改指定用户密码,仅root有此权限

 iii. 格式:passwd [-k] [-l] [-u [-f]] [-d] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]   root才有权限

 1. -l,-u:锁定和解锁用户

 2. -d:delete 清除用户密码串

 3. -e:过期期限,日期——————–红帽上面没有这个参数

 4. -i:inactive 非活动期限

 5. -n:minimum 密码最短使用期限

 6. -x:maximum 密码最长使用期限

 7. -w:warnings 警告期限

 8. –stdin: echo “redhat” | passwd –stdin USER  通过管道修改USER的密码为redhat

锁定后不能登录,用passwd锁定后是两个!,用usermod锁定后是一个!,都是不能登录,有什么区别?

[root@localhost ~]#passwd marry
Changing password for user marry.
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

[root@localhost ~]#passwd -l andy    #锁定后不能登录
Locking password for user andy.
passwd: Success
[root@localhost ~]#tail /etc/shadow
andy:!!$6$cCLG9OLU$fmNiHCvx7YPNhkfEAf11yd9yDPsw5DWBURujsnYtI6jc/hwFgnFB9U7AoMG9UlvT0tXxSHdODBSg1eUzJN4Gc/:17245::::::

[root@localhost ~]#passwd -u andy
Unlocking password for user andy.
passwd: Success
[root@localhost ~]#tail /etc/shadow
andy:$6$cCLG9OLU$fmNiHCvx7YPNhkfEAf11yd9yDPsw5DWBURujsnYtI6jc/hwFgnFB9U7AoMG9UlvT0tXxSHdODBSg1eUzJN4Gc/:17245::::::

[zhao@localhost ~]$su - andy    #root切换为普通用户不受影响,必须用普通用户切换为andy用户
Password: 
su: incorrect password

5、 id:显示用户信息

 i. id [OPTION]… [USERNAME]

 1. -u:仅显示有效的uid

 2. -g:仅显示用户的基本组id

 3. -G:仅显示用户所属组的id

 4. -n:显示名字而非id

[root@localhost ~]#id marry
uid=1286(marry) gid=501(testgroup) groups=501(testgroup),492(testgroup1),491(andy)
[root@localhost ~]#id -u marry
1286
[root@localhost ~]#id -g marry
501
[root@localhost ~]#id -G marry
501 492 491
[root@localhost ~]#id -n -g marry    #将501对应的组的名字显示出来
testgroup

 6、su:switch user

 i. 登录式切换,会通过读取目标用户的配置文件来重新初始化

 1. su – USERNAME

 2. su -l USERNAME

 ii. 非登录式切换,不会进行读取目标用户的配置文件进行初始化

 1. su USERNAME

 iii. 注意:管理员可无密码切换到其他任何用户

 iv. 非管理员用户登录其他用户要密码

 v. -c ‘COMMAND’:仅以指定用户的身份运行此处指定的命令

[root@localhost ~]#su - andy -c 'whoami'
andy

7、 将/etc/passwd文件中密码隐藏

 i. # pwconv:将用户密码转换成影子密码,此时只有root才能读,好像没什么用

 1. zhao:x:1000:1000:zhao:/home/zhao:/bin/bash

 ii. # pwunconv :将密码显示出来,不安全,此时,/etc/shadow打不开

 1. zhao:$6$xj4lv8PjxfLlhn3T$ZJhsJgITYM7HiPiiGWhAIj3REYNxlKZWisP97aPZ5fe.hXMiTT7BIwHBht8ORKOrNYiJDl.73RfAxsudv6PAs.:1000:1000:zhao:/home/zhao:/bin/bash

8、chfn:change your finger information ,更改用户信息

 i. 用户直接执行# chfn  即可修改信息, 保存需要输入密码,保存在/etc/passwd的字段中

 ii. root执行 # chfn USERNAME  可修改用户信息

9、chsh:更改用户shell

        chsh [-s shell] [-l] [-u] [-v] [username]

10、chage – change user password expiry information  修改用户过期信息

 i. # chage -l zhao  查看具体的密码时间信息

 ii. # chage zhao  修改每一项参数

 iii. -d:lastday  最近更改密码时间

 1. If the LAST_DAY is set to 0 the user is forced to change his password on the next log on. 下次登录强制修改密码

 2. # chage -d 0 zhao

 iv. -E:到什么时候过期,

11、whoami:查看当前终端的用户

[root@localhost ~]#whoami
root
[root@localhost ~]#id -u $(whoami)    #在脚本中判断当前执行操作的用户是否为root,判断uid是否为0
0

12、finger:查看用户登录和指纹信息

[root@localhost ~]#finger zhao
Login: zhao           			Name: zhaojainj
Directory: /home/zhao               	Shell: /bin/bash
Office: fefds, ewfsf			Home Phone: fewfs
Last login Tue Mar 21 01:03 (CST) on pts/1 from 192.168.1.104
No mail.
No Plan.

13、authconfig 修改默认加密算法

The algorithm used for storing new password hashes can be specified by the –passalgo option which takes one of the following possible  values  as  a  parameter:

       descrypt, bigcrypt, md5, sha256, and sha512.

 authconfig –passalgo=md5 –update  更改加密算法,修改后,/etc/login.defs文件里面的加密算法将改变为使用md5加密,之后的用户都采用刚才的加密算法来加密

14、getent:get entries from Name Service Switch libraries  获取条目,筛选条目

 i. # getent passwd andy  只获取andy在passwd里面的条目,不看其他的

 ii. # getent shadow andy  只获取andy在shadow里面的条目

15、strace – trace system calls and signals  查看系统调用,执行这个命令调用了什么命令

 i. # strace useradd zhao  ,查看执行“useradd zhao”命令实际调用了什么函数,什么操作

实验:

        在root权限下将/etc/passwd下的andy的uid修改为0,root的uid修改为1010,此时andy将提权至root权限,此时用andy用户登录可操作所有root可以操作的内容,root将成为普通用户,系统执行权限不看用户名,只看id号

实验:

        将/etc/shadow下面的存放密码的字段删除,则该用户不用密码就可以登录,非常危险

  i. zhao::17015:0:99999:7:::

未经允许不得转载:江哥架构师笔记 » linux用户相关命令

分享到:更多 ()

评论 抢沙发

评论前必须登录!