火网互联--常见问题帮助中心!

火网互联IDC咨询中心-建站帮助教程|vps面板|vps问题|腾讯云问题|服务器问题|美国空间|美国空间购买|美国虚拟主机|高防空间|腾讯云|香港空间

当前位置: 主页 > 腾讯云 >

腾讯云linux系统用户和组管理——火网互联

时间:2015-01-14 16:53来源:未知 作者:zhangjian 点击:
腾讯云linux系统用户和组管理——火网互联
身边的朋友越来越多使用腾讯云主机--火网互联来做网站或者应用,他们也经常问我们一些Linux相关的问题,所以有了这个针对腾讯云主机--火网互联用户做一系列教程的想法。下面为大家介绍linux系统用户和组的管理。

                希望能够帮助到大家。





新增一个组——命令 : groupadd
视频:
http://bbs.qcloud.com/data/attachment/qcloud_vid/3-3add_del_group.wmv
语法 : groupadd [-g GID] groupname
# groupadd grptest1
# tail -n1 /etc/group
grptest1:x:502:

不加 “-g” 选项则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的。

# groupadd -g 511 grptest2
# tail -n2 /etc/group
grptest1:x:502:
grptest2:x:511:

“-g” 选项可以自定义gid。

删除组—— 命令 : groupdel

# groupdel grptest2
# tail -n3 /etc/group
testgroup:x:500:
user1:x:501:
grptest1:x:502:

该命令没有特殊选项,但有一种情况不能删除组:

# groupdel user1
groupdel: cannot remove the primary group of user 'user1'

这是因为user1组中包含user1账户,只有删除user1账户后才可以删除该组。

增加用户 —— 命令 : useradd
视频:
http://bbs.qcloud.com/data/attachment/qcloud_vid/3-4add_del_user.wmv
语法 : useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]

-u: 自定义UID
-g:使其属于已经存在的某个组,后面可以跟组id, 也可以跟组名
-d: 自定义用户的家目录
-M: 不建立家目录
-s: 自定义shell

# useradd test10
# tail -n1 /etc/passwd
test10:x:500:503::/home/test10:/bin/bash
# tail -n1 /etc/group
test10:x:503:

useradd不加任何选项直接跟用户名,则会创建一个跟用户名同样名字的组。

# useradd -u510 -g 513 -M -s /sbin/nologin user11
useradd: group '513' does not exist
# useradd -u510 -g 502 -M -s /sbin/nologin user11
# useradd -u511 -g grptest1 user12
# tail -n2 /etc/passwd
user11:x:510:502::/home/user11:/sbin/nologin
user12:x:511:502::/home/user12:/bin/bash
# tail -n2 /etc/group
grptest1:x:502:
test10:x:503:

-g 选项后面跟一个不存在的gid会报错,提示该组不存在。刚刚上面说过-M选项加上后则不建立用户家目录,但是在/etc/passwd文件中仍然有这个字段。但是您使用 ls /home/user11 查看一下会提示该目录不存在。所以-M选项的作用只是不创建那个目录。

# ls /home/user11
ls: 无法访问/home/user11: 没有那个文件或目录

删除账户 —— 命令 : userdel

语法 : userdel [-r] username

# ls -ld /home/user12
drwx------ 3 user12 grptest1 4096 5月  11 07:12 /home/user12
# userdel user12
# ls -ld /home/user12
drwx------ 3 511 grptest1 4096 5月  11 07:12 /home/user12
# ls -ld /home/test10/
drwx------ 3 test10 test10 4096 5月  11 07:09 /home/test10/
# userdel  -r test10
# ls -ld /home/test10/
ls: 无法访问/home/test10/: 没有那个文件或目录

-r选项的作用只有一个,就是删除账户的时候连带账户的家目录一起删除。

命令:passwd
视频:
http://bbs.qcloud.com/data/attachment/qcloud_vid/3-5passwd_mkpasswd.wmv
语法 : passwd [username]

等创建完账户后,默认是没有设置密码的。虽然没有密码,但该账户同样登录不了系统。只有设置好密码后才可登录系统。在为用户创建密码时,安全起见,请尽量设置复杂一些。阿铭建议你按照这样的规则来设置密码:
(1) 长度大于10个字符;
(2) 密码中包含大小写字母数字以及特殊字符*、&、%等;
(3) 不规则性(不要出现happy、love、linux、7758520、111111等等单词或者数字);
(4) 不要带有自己名字、公司名字、自己电话、自己生日等。

# passwd
更改用户 root 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

passwd后面不加username则是修改当前账户的密码。如果你登录的是root账户,后面可以跟普通账户的名字,意思是修改指定账户的密码。

# passwd user11
更改用户 user11 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

只有root才可以修该其他账户的密码,普通账户只能修改自己的密码,其他账户的密码是不可以修改的。

命令: mkpasswd

这个命令用来生成密码,省的自己去想。默认我们安装的Linux是没有这个命令的,需要安装一个包 “expect”。

# yum install -y expect
# mkpasswd
HXut8oy*8

有时,我们需要生成指定长度的密码。mkpasswd命令也可以满足,比如生成12位长的密码:

# mkpasswd -l 12
j2zo9PlnM{tq

还可以指定密码中有几个特殊字符,和几个数字。
# mkpasswd -l 12 -s 0 -d 3
eu8e2fJ7sjtE

-s指定特殊字符的个数,-d 指定数字的个数。这个随机字符串作为密码再好不过了,只不过它不容易记忆。

用户身份切换
视频:
http://bbs.qcloud.com/data/attachment/qcloud_vid/3-6su.wmv
Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到。这时就需要临时切换到root身份来做事了。下面阿铭带你做一个小实验,创建 “test” 账户,并修改其密码,这样我们就可以使用test账户登录Linux了。

# useradd test
# passwd test
更改用户 test 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

然后用test账户登录Linux.

login as: test
test@10.72.137.78's password:
$ whoami
test

登录后,使用 “whoami” 命令查看当前用户是test。普通用户和root用户的shell提示符号有些区别。root账户是#,普通用户是$。

命令su

语法 : su [-] username
后面可以跟“-”,也可以不跟。普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户。 “-”这个字符的作用是,加上后会初始化当前用户的各种环境变量,关于环境变量这部分内容阿铭放在后面的章节中讲解。 下面阿铭做个简单的实验来说明加与不加“-”的区别:

$ pwd
/home/test
$ su
密码:
# pwd
/home/test
# exit
exit
$ su -
密码:
# pwd
root

如果不加“-”切换到root账户下时,当前目录没有变化。而加上“-”切换到root账户后,当前目录为root账户的家目录。这跟直接登录root账户是一样的。当用root切换普通用户时,是不需要输入密码的。

命令 : sudo
视频:
http://bbs.qcloud.com/data/attachment/qcloud_vid/3-7sudo.wmv
用su可以切换用户身份,而且每个普通用户都能切换到root身份。如果某个用户不小心泄漏了root的密码,那岂不是系统非常的不安全?没有错,为了改进这个问题,Linux系统工程师设计了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码。这个密码并不是root的密码而是用户自己的密码。默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。我们可以使用 visudo 命令去编辑相关的配置文件/etc/sudoers。如果没有visudo这个命令,请使用命令 yum install -y sudo 安装。

默认root能够sudo,是因为这个文件中有一行 “root ALL=(ALL) ALL”。 在该行下面加入 “test ALL=(ALL) ALL” 就可以让test用户拥有了sudo的权利。使用 “visudo” 命令编辑/etc/sudoers配置文件,其实它的操作方法和前面阿铭介绍的 “vi” 命令使用方法是一样的,按i进入编辑模式,编辑完成后,按 “Esc” ,再输入:wq 完成保存。

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
test    ALL=(ALL)       ALL

此时可以验证一下test账户的权限了。

# su test
$ ls
ls: 无法打开目录.: 权限不够
$ sudo ls
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 test:
123  456  789  anaconda-ks.cfg  dirb  install.log  install.log.syslog  test  test1  test2  test3

由于切换到test账户后的当前目录依旧是在/root 下,test账户没有任何权限,所以 ls的时候提示说权限不够。然而使用 sudo ls 输入test账户自身的密码后就有权限了。初次使用sudo 时会有上面的一大段提示,而后再次使用sudo 命令则不再提示。

如果每增加一用户就设置一行,这样太麻烦了。所以我们可以这样设置。把 “# %wheel ALL=(ALL) ALL” 前面的#去掉,让这一行生效。它的意思是,wheel这个组的所有用户都拥有了sudo的权利。接下来需要把想让有sudo权利的所有用户加入到wheel这个组中即可。

## Allows people in group wheel to run all commands

%wheel  ALL=(ALL)       ALL

配置文件/etc/sudoers包含了诸多配置项,可以使用命令 man sudoers 来获得帮助信息。下面阿铭介绍一个很实用的案例,我们的需求是把Linux服务器设置成这个样子:只允许使用普通账户登录,而普通账户登录后,可以不输入密码就能sudo切换到root账户。下面是阿铭的配置:

# visudo
然后在文件的最后面加入三行:
User_Alias USER_SU = test, test1, aming
Cmnd_Alias SU = /bin/su
USER_SU ALL=(ALL) NOPASSWD: SU

保存配置文件后,使用test、test1、aming 三个账户登录Linux。执行命令“sudo su –” 切换到root账户,获取root账户的所有权利。

# su - test
$ sudo su -
# whoami
root

不让root直接登录,这个问题如何做呢?其实很简单,设置一个非常复杂连自己都记不住的密码。不过这样也有一个问题,就是普通用户可以su到root,然后他再自己修改简单的密码就能直接root登录了不是嘛?的确有这个问题,其实阿铭还有一个更好的办法。

不允许root远程登录Linx

注意,阿铭提供的这个方法只适用于通过ssh远程登陆Linux的时候。修改配置文件/etc/sshd/sshd_config,  在文件中查找“#PermitRootLogin  yes”这句话, 修改为 “PermitRootLogin no”。它表示不允许root用户远程登录。 

/etc/sshd/sshd_config 为sshd服务的配置文件,默认允许root账户通过ssh远程登录Linux。要想不让root登录,修改为no 就可以了。保存配置文件后,需要重启sshd 服务: 

# service sshd restart
停止 sshd:                                                [确定]
正在启动 sshd:                                         [确定]

这样,我们再测试,发现已经不能用root登录了。





(责任编辑:编辑文档)
顶一下
(4)
100%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容