常用命令--用户管理

包括对用户及用户组的管理操作命令

useradd

useradd [OPTION]... USERNAME
useradd -D
添加用户

-u UID:指定uid
-g GID(基本组):指定gid
-G GID,...(附加组):添加到附加组
-c "COMMENT":添加备注信息
-d /path/to/directory:指定家目录
-s SHELL:指定使用的Shell
-r:添加系统用户
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号
-D: 显示添加用户默认设置,信息为/etc/default/useradd

1
useradd -u 1002 -g 1100 -G root,liu -s /bin/csh -d /home/gg user1

usermod

usermod [OPTION] USERNAME
修改用户的基本信息,不允许你改变正在线上的使用者帐号名称

-u UID:修改uid
-g GID:修改gid
-a -G GID:追加附加组,不使用-a选项,会覆盖此前的附加组
-c <备注>:用户备注信息
-d -m:将家目录移到新目录
-s:shell
-l:用户名
-L:锁定帐号,在/etc/shadow对应用户密码前加!
-U:解锁帐号

1
usermod -G staff user2      # 将user2添加到staff组中

userdel

userdel [OPTION]... USERNAME
删除用户

-r:同时删除帐号家目录

1
userdel -r liu2

groupadd

groupadd [OPTION]... GROUPNAME
添加用户组

-g:指定gid
-r:添加为系统组

groupmod

groupmod [OPTION]... GROUPNAME
用户组修改

-g:修改gid
-n:修改组名

groupdel

groupdel GROUPNAME
删除用户组,该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组

passwd

passwd [OPTION]... [USERNAME]
修改密码,普通用户只能修改自己的密码,无需加参数,root用户可以修改任何密码,而且无需知道原不验证密码强度

-l:锁定用户
-d:删除密码
--stdin:接收标准输入用来设置密码

1
echo "passwd" | passwd --stdin user1    # 为user1设置密码"passwd"

gpasswd

gpasswd [OPTION]...GROUP
修改组信息,同时还有添加删除组用户,作用在/etc/group和/etc/gshadow

-a <用户> <组>:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组

1
gpasswd -a allen users    # 添加allen到user2组

newgrp

newgrp [OPTION]... FILE...
临时切换组,本身不是组的成员,使用newgrp需要输入密码即可

chage

chage [OPTION]... USER
修改密码的过期信息

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-w:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

id

id [OPTION]... USER
显示用户的uid,gid等信息

-g:显示用户所属群组的ID
-G:显示用户所属附加群组的
-n:显示用户,所属群组或附加群组的名称
-r:显示实际ID
-u:显示用户ID

su

su [OPTION]... USER
用户切换,管理员切换其它用户无需密码

-c <command>:仅以指定用户的身份执行命令
-s SHELL:指定shell

1
2
3
su - root           			# 登录式切换到root用户
su - liu -c pwd # 以liu用户运行pwd命令
su -s /bin/bash -c 'CMD' liu # 对于nologin用户指定shell执行

sudo

用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,输入密码之后有5分钟的有效期限,超过期限则必须重新输入密码

-u USER:以指定的用户作为新的身份。不加则默认以root作为新的身份
-l:可以查看sudo模式可以执行的命令
-k:将会强迫用户在下一次使用sudo命令时必须输入密码
-e FILE:修改文件,相当于sudoedit

chmod

chmod [OPTION]...MODE FILE
修改文件目录的权限

赋权=:u=rwx,g=r,o= a=r
授权+|-:ug+x,o-x a-x==-x +w==u+w
数字:754==rxwr-xr– (r=4,w=2,x=1)
引用:–refernce=/file_path
-R:递归修改目录下所有文件目录权限,通常在授权法中使用

1
2
3
4
chmod u=rwx,o= file1  
chmod -x file2
chmod 740 file3
chmod --refernce=/var/file5 file4

chown

chown [OWNER[:[GROUP]]] FILE...
修改文件目录的属主和属组

-R:递归修改目录下所有文件目录权限

1
2
3
chown root file2          # 只修改属主
chonw root:mysql file2 # 同时修改属主和属组
chown :mysql file2 # 修改属组

umask

umask [MASK]
查看和设置文件权限的反向掩码,新目录或文件被创建时,其最初的权限由文件创建掩码决定

对文件:666-umask,如有执行权限则加1,如:666-023=643–>644
对目录:777-umask

1
2
# 设置umask值为023,设定只对当前shell进程有效,全局设定/etc/bashrc,用户设定~/.bashrc
umask 023

finger

finger [OPT]... [USERNAME]
显示本地与远端主机的用户信息,不加选项它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。查询远程机上的用户信息,需要采用**用户名@主机名**0的格式

chfn

chfn [OPTION]... USER
改变finger命令显示的信息,这些信息都存放在/etc/passwd文件里。不指定任何选项,则进入问答式界面

chsh

chsh [OPTION]... USER
用来更换登录系统时使用的shell

getfacl

查看文件acl权限

1
getfacl FILE

setfacl

setfacl [{-m|-x} acl_spec] [{-M|-X} acl_file] file
setfacl --restore=file

-m:添加权限
-x:删除
-M,-X:从文件中读取规则添加,删除

支持的acl_spec规则有:

  • [d[efault]:] [u[ser]:]uid [:perms]
  • [d[efault]:] g[roup]:gid [:perms]
  • [d[efault]:] m[ask][:] [:perms]
  • [d[efault]:] o[ther][:] [:perms]
1
2
3
4
5
setfacl -m u:liu:r file1                    # 设置liu用户对file1只读
setfacl -m m::rx file1 # 给file添加ACL_MASK为rx,即文件属组权限位展示为r-w,但不影响原来权限,只是展示不一样而已
setfacl -x g:staff file1 # 减组
getfacl file1 | setfacl --set-file=- file2 # 把1的权限设置赋给2
getfacl --access dir | setfacl -d -M- dir #

备注

  1. 目录和文件的权限
读(read) 写(write) 执行(execute)
对文件 cat,more,head.. vi,echo.. ./**执行
对目录 ls touch,cp,mv,rm cd