1、linux用户分类
linux用户分为系统用户,根用户,普通用户。
根用户:root uid 0 gid 0
系统用户:是指系统运行时必须有的用户,比如在Linux系统中运行网站服务的时候,需要用到系统用户 apache来运行httpd进程(其余可以自己考虑)
2、查看进程
查看目前所有系统运行的进程:ps aux (可以结合grep命令查找特定的进程)
*USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1241 0.0 0.3 11888 3384 ? Ss 17:42 0:00 sshd: root@pts/0
root 1245 0.0 0.1 5124 1680 pts/0 Ss 17:42 0:00 -bash
root 1285 0.0 0.1 4928 1052 pts/0 R+ 17:56 0:00 ps aux*
ps与grep命令结合实例:(grep全文检索命令,会匹配文件中所有包含要查找单词的行,并将其输出)
*[root@CentOs ~]# ps aux | grep postfix
root 1170 0.0 0.2 12964 2588 ? Ss 17:41 0:00 /usr/libexec/postfix/master
postfix 1176 0.0 0.2 13932 2568 ? S 17:41 0:00 pickup -l -t fifo -u
postfix 1177 0.0 0.2 13108 2604 ? S 17:41 0:00 qmgr -l -t fifo -u
root 1287 0.0 0.0 4356 732 pts/0 S+ 18:00 0:00 grep postfix*
3、查看用户UID,GID,当前登陆用户:
查看当前用户uid: id
*[root@CentOs ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023*
查看当前用户组:groups
*[root@CentOs ~]# groups
root*
查看当前在线用户: who
*[root@CentOs ~]# who
root tty1 2017-04-27 17:41
root pts/0 2017-04-27 17:42 (192.168.43.1)*
4、关于用户的两个文件:
/etc/passwd:
可以使用cat /etc/passwd 命令查看改文件:
*[root@CentOs ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:”Saslauthd user”:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin*
每一行的格式都是一样的:字段之间使用:分隔。格式说明:
*列数 含义 说明
1 用户名 是UID的字符串标记方式,方便阅读()
2 密码 密码放在/etc/shadow中,所以此处都是一个x
3 UID 系统用来区分不同用户的整数
4 GID 系统用来区分不同用户组的整数
5 说明栏 类似于“注释”现在已经不再使用
6 家目录 用户登录后,所处的目录,就是用户目录
7 登录shell 用户登录后,所使用的shell*
/etc/shadow(保证用户密码的保密性)
该文件默认只有root用户才有读权限。
同样使用cat命令:
[root@CentOs ~]# cat /etc/shadow
root:6H7u/hwXTNgAYdtQY$mFNvP0AhBe2Ivq.Nu4iZjy8VVQ0quZGScg6OEXwwdBEOud6lK5rWoKfrPTVT5rM6JPHsDKLrIZeqXWEyzMYSJ.:17280:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
vcsa:!!:17280::::::
saslauth:!!:17280::::::
postfix:!!:17280::::::
sshd:!!:17280::::::
列数说明:
*列数 含义 说明
1 用户名 是UID的字符串标记方式,方便阅读()
2 密码 经过加密后的密码
3 密码的最近修改日 这个数字是从1970年1月1日到密码修改日的天数
4 密码不可修改的天数 修改密码后几天内不可修改,如果是0,则随时可以修改
5 密码重新修改的天数 可以设置一个修改时间,在密码到期之前系统会提醒用户修改密码
6 密码失效前提醒警告天数 可以设定密码到期几天内开始提醒用户修改密码
7 密码失效宽限天数 如果密码到期,过了几天后会失效,无法登陆系统
8 账号失效日期 一般为空
9 保留字段 暂时没有使用*
5、新增用户:useradd username
添加一个用户之后,会自动创建加目录,家目录以用户名为目录名,创建的路径在/home中
然后会将/etc/skel下的所有文件复制到家目录中(可以使用ls-la/etc/skel)
*[root@CentOs myStudy]# ls -la /etc/skel
total 20
drwxr-xr-x. 2 root root 4096 Apr 24 19:05 .
drwxr-xr-x. 62 root root 4096 Apr 27 19:01 ..
-rw-r–r–. 1 root root 18 Jul 18 2013 .bash_logout
-rw-r–r–. 1 root root 176 Jul 18 2013 .bash_profile
-rw-r–r–. 1 root root 124 Jul 18 2013 .bashrc*
/etc/skel目录,是系统为新添加用户时,预先为这个用户创建一些默认的配置文件。可以说这个文件就是创建用户的模板。
小实验:
*[root@CentOs myStudy]# cd /etc/skel
[root@CentOs skel]# touch TempFile //创建一个新文件
[root@CentOs skel]# useradd mystudy01
[root@CentOs skel]# cd /home/mystudy01
[root@CentOs mystudy01]# ls -l
total 0
-rw-r–r–. 1 mystudy01 mystudy01 0 Apr 27 19:08 TempFile*
useradd -u 555 username 可以创建一个指定uid的用户。但是要注意不能和其他用户id冲突,冲突时会显示:
*[root@CentOs skel]# useradd -u 500 mystudy1
useradd: UID 500 is not unique*
useradd -g groups -u uid username 创建一个指定group和指定ID的用户。
useradd -d /home/mydir username 创建一个指定家目录的用户
useradd 获取useradd指令的具体参数和说明:
*[root@CentOs skel]# useradd
Options:
-b, –base-dir BASE_DIR base directory for the home directory of the
new account
-c, –comment COMMENT GECOS field of the new account
-d, –home-dir HOME_DIR home directory of the new account
-D, –defaults print or change default useradd configuration
-e, –expiredate EXPIRE_DATE expiration date of the new account
-f, –inactive INACTIVE password inactivity period of the new account
-g, –gid GROUP name or ID of the primary group of the new
account
-G, –groups GROUPS list of supplementary groups of the new
account
-h, –help display this help message and exit
-k, –skel SKEL_DIR use this alternative skeleton directory
-K, –key KEY=VALUE override /etc/login.defs defaults
-l, –no-log-init do not add the user to the lastlog and
faillog databases
-m, –create-home create the user’s home directory
-M, –no-create-home do not create the user’s home directory
-N, –no-user-group do not create a group with the same name as
the user
-o, –non-unique allow to create users with duplicate
(non-unique) UID
-p, –password PASSWORD encrypted password of the new account
-r, –system create a system account
-s, –shell SHELL login shell of the new account
-u, –uid UID user ID of the new account
-U, –user-group create a group with the same name as the user
-Z, –selinux-user SEUSER use a specific SEUSER for the SELinux user mapping*
6、修改密码:passwd
创建用户后,该用户实际没有登录的权限需要设置密码,没有设置权限的时候,在密码保存文件/etc/shadow中用户第二列会显示“!!”,说明不允许该用户登录系统。
*[root@CentOs skel]# cat /etc/shadow | grep mystudy01
mystudy01:!!:17283:0:99999:7:::*
需要设置密码之后才可以如下所示:设置一个简单密码会出现这样的提示,但是仍旧可以登录。
*[root@CentOs skel]# passwd mystudy01
Changing password for user mystudy01.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.*
只有更用户root才能够在passwd后面加上用户名,其余用户只能通过passwd 来修改自己的密码,需要原密码。
7、修改用户:usermod
可能有具体的某些场景,需要对已经存在的用户进行修改。
1、修改用户的家目录,实例:
*[root@CentOs skel]# useradd alice
[root@CentOs skel]# passwd alice
Changing password for user alice.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@CentOs skel]# cat /etc/passwd | grep alice
alice:x:502:502::/home/alice:/bin/bash
[root@CentOs skel]# usermod -d /home/alice_new -m alice
[root@CentOs skel]# cat /etc/passwd |grep alice
alice:x:502:502::/home/alice_new:/bin/bash*
其中-m参数的作用,如果指定用户的家目录不存在,会自动创建一个指定的新目录。
2、冻结指定账号,实例 usermod -L username:
*[root@CentOs home]# cat /etc/shadow | grep alice
alice:** 6 z0CbO**yzP$k3ThXIQbRA7eoB26JfC8L5w3WZko8ZUxAvQVX9.yutg4Ez86KdUMY3vdRfdHw8eJbfrDDMerNw3JS3wjgUM2f1:17283:0:99999:7:::
[root@CentOs home]# usermod -L alice
[root@CentOs home]# cat /etc/shadow | grep alice
alice:! 6 z0CbOyzPk3ThXIQbRA7eoB26JfC8L5w3WZko8ZUxAvQVX9.yutg4Ez86KdUMY3vdRfdHw8eJbfrDDMerNw3JS3wjgUM2f1:17283:0:99999:7:::*
可以看到指定的用户密码列前增加了一个!,说明用户被冻结
3、解冻用户,实例 usermod -U username:
*[root@CentOs home]# cat /etc/shadow | grep alice
alice:**!6 z0CbOyzP k**3ThXIQbRA7eoB26JfC8L5w3WZko8ZUxAvQVX9.yutg4Ez86KdUMY3vdRfdHw8eJbfrDDMerNw3JS3wjgUM2f1:17283:0:99999:7:::
[root@CentOs home]# usermod -U alice
[root@CentOs home]# cat /etc/shadow | grep alice
alice:* 6 z0CbOyzP$k3**ThXIQbRA7eoB26JfC8L5w3WZko8ZUxAvQVX9.yutg4Ez86KdUMY3vdRfdHw8eJbfrDDMerNw3JS3wjgUM2f1:17283:0:99999:7:::
4、删除用户:userdel username(不会删除该用户原本的家目录和邮件信息,如果使用参数 -r 将同时删除家目录和该用户的邮件)
8、增加用户组:groupadd
9、删除用户组:groupdel (用户组文件/etc/group)
10、查看用户:users、who、w
w操作实例:
*[root@CentOs home]# w
21:11:12 up 3:30, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 17:41 3:28m 0.03s 0.03s -bash
root pts/0 192.168.43.1 17:42 0.00s 0.12s 0.00s w*
从左到右列表表示含义:用户名,登录终端,网络登录地址,用户登录时间,用户闲置时间,用户消耗cpu总时间,当前今晨消耗时间总量,当前用户运行的进程
11、调查用户:finger
CentOs可能不包含该命令,可以使用yum install finger 来安装这个命令,然后就可以使用了。
安装流程如下细节执行日志省略,在中间会提示输入y和N,都输入y就好:
*[root@CentOs ~]# yum install finger
Is this ok [y/N]: y
Downloading Packages:
finger-0.17-40.el6.i686.rpm
Is this ok [y/N]: y
Installed:
finger.i686 0:0.17-40.el6
Complete!*
安装完成之后,再执行finger:
*[root@CentOs ~]# finger
Login Name Tty Idle Login Time Office Office Phone
root root tty1 3:37 Apr 27 17:41
root root pts/0 Apr 27 17:42 (192.168.43.1)*
也可以后面跟用户名:finger username:
*[root@CentOs ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Thu Apr 27 17:41 (CST) on tty1 3 hours 42 minutes idle
On since Thu Apr 27 17:42 (CST) on pts/0 from 192.168.43.1
No mail.
No Plan.*
12、切换用户:su和sudo
su实例:
*[myStudy@CentOs ~]su
Password:
[root@CentOs myStudy]# pwd
/home/myStudy*
su - 实例:
*[myStudy@CentOs ~] su -
Password:
-bash: /usr/java/jdk1.7.0_04/lib/tools.jar: No such file or directory
-bash: /usr/java/jdk1.7.0_04/bin: No such file or directory
[root@CentOs ~]# pwd
/root*
su切换用户只有身份变成了root,但用户环境还是自己的,su - 用户环境也会发生改变。可以通过上面的两个实例看出不同之处。这两个命令后面都可以跟需要切换的用户名。
13、sudo 后面跟上需要执行的命令,就是使用root的身份执行该命令,系统首先检查/etc/sudoers 判断该用户是否有执行sudo的权限。在确定有这个权限之后,会要求输入用户自己的密码,密码正确就会以root 的身份运行该命令。
在使用这个命令之前需要先配置/etc/sudoers文件,linux提供了一个专门命令来编辑这个文件,这样会检测是否有语法错误。
检测该用户是否有sudo权限:
*[myStudy@CentOs ~]$ sudo -i
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for myStudy:
myStudy is not in the sudoers file. This incident will be reported.*
提示这个表示没有权限,就需要去编辑/etc/sudoers文件,给这个用户提供sudo权限。
编辑过程:
详细visudo设置过程请看