【linux】用户与组
一、用户和组的基本概念
1、用户
用户:用于获取计算机资源或服务的标识符,比如用户名。计算机处理的是UID,用户名和UID的关系存储在/etc/passwd文件中,每个用户都有权限访问这个文件。
用户类别:
- 管理员。管理员的UID为0
- 普通用户(系统用户和一般用户)。普通用户的UID 1-65535,一般用户500-60000。
- 系统用户。系统用户1-499 。一登陆就运行的后台进程(服务)以普通用户的身份来运行,叫做系统用户。系统用户只是为了运行某一类进程,这类用户不需要登陆系统。
2、组
容器(用户组): 也是一个标识符,用于关联权限,方便地指派权限,每一个组都有一个GID。
组类别:
- 普通组(系统组和一般组)
- 管理员组
二、/etc/passwd
[root@hao ~]# 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
...
hao:x:500:500:haohao:/home/hao:/bin/bash
字段解析:
1、account: 登录名
2、password:密码。 如果是x则表示是密码占位符,真正的密码在/etc/shadow中
3、UID:用户ID
4、GID:基本组ID
5、GECOS:用户注释信息
6、directory:家目录
7、shell:用户默认shell。当前系统上所有的合法shell存在/etc/shells。
[root@hao ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
三、/etc/group
[root@hao ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
...
hao:x:500:
guang:x:501:
字段解释:
1.组名
2.密码占位符
3.GID
4.以这个组为附加组的用户列表
四、用户管理
1、useradd(adduser)添加用户
[root@hao ~]# which useradd
/usr/sbin/useradd
[root@hao ~]# ls -l $(which useradd)
-rwxr-x---. 1 root root 103096 Dec 8 2011 /usr/sbin/useradd
[root@hao ~]# which adduser
/usr/sbin/adduser
[root@hao ~]# ls -l $(which adduser)
lrwxrwxrwx. 1 root root 7 Jul 26 20:14 /usr/sbin/adduser -> useradd###useradd的软连接符号adduser
命令格式:useradd [options] username
[root@hao ~]# useradd guang
[root@hao ~]# tail -1 /etc/passwd
guang:x:501:501::/home/guang:/bin/bash
[root@hao ~]# tail -1 /etc/group
guang:x:501:
[root@hao ~]# tail -1 /etc/shadow
guang:!!:16377:0:99999:7:::
[root@hao ~]# passwd guang
Changing password for user guang.
New password:
BAD PASSWORD: it does not contain enough DIFFERENT characters
BAD PASSWORD: is a palindrome
Retype new password: passwd: all authentication tokens updated successfully.
[root@hao ~]# tail -1 /etc/shadow
guang:$6$0ndd3rOB$OP74KA4BocxxtU87tDCUE/JGHlZbygHML9KnabirIXLJ8yQJAGdP7setenuZP1fVcOK2ZhhK05aUWYqdDBcjG/:16377:0:99999:7:::
命令选项:
-u:指定UID,须保证该UID未使用。如果未使用该选项,用户UID默认为/etc/passwd下的最大用户UID的下一个
[root@hao ~]# useradd -u 1000 testuser
[root@hao ~]# tail -1 /etc/passwd
testuser:x:1000:1000::/home/testuser:/bin/bash
-g:指定基本组,如果不使用该选项则默认添加一个和用户同名的基本组,如果使用该选项则一定保证该组名存在。
[root@hao ~]# useradd -g mygroup testusergroup
[root@hao ~]# tail -1 /etc/passwd
testusergroup:x:1001:502::/home/testusergroup:/bin/bash
-G:指定额外组(附加组),可以有多个。
[root@hao ~]# useradd -G mygroup testuser1
[root@hao ~]# tail -1 /etc/passwd
testuser1:x:1002:1002::/home/testuser1:/bin/bash
[root@hao ~]# tail /etc/group
webalizer:x:67:
tomcat:x:91:
sshd:x:74:
tcpdump:x:72:
slocate:x:21:
hao:x:500:
guang:x:501:
mygroup:x:502:testuser1
testuser:x:1000:
testuser1:x:1002:
-c:指定注释信息
-d:指定家目录 默认为在/home/下创建一个跟用户同名的目录为家目录。
[root@hao ~]# useradd -c "haohao" -d /home/haohao testuser2
[root@hao ~]# tail -1 /etc/passwd
testuser2:x:1003:1003:haohao:/home/haohao:/bin/bash
-s:指定shell路径。该路径需要出现在/etc/shells。默认为/bin/bash
-r:添加系统用户。即UID在1-500之间,而且系统用户不允许登陆系统,且不存在家目录,即使路径存在。该选项通常单独使用。
[root@hao ~]# useradd -r testr
[root@hao ~]# tail -1 /etc/passwd
testr:x:496:493::/home/testr:/bin/bash
[root@hao ~]# ls /home
guang hao haohao testuser testuser1
添加用户的默认信息保存在/etc/default/useradd
[root@hao ~]# file /etc/default/useradd
/etc/default/useradd: ASCII text
[root@hao ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
2、userdel删除用户
命令格式:userdel [option] username 删除用户时,若未指定选项,其家目录不会被删除
命令选项:
-r:删除用户同时删除用户的家目录
[root@hao ~]# ls /home
guang hao haohao testuser testuser1 testusergroup
[root@hao ~]# userdel testuser
[root@hao ~]# ls /home
guang hao haohao testuser testuser1 testusergroup
[root@hao ~]# userdel -r testusergroup
[root@hao ~]# ls /home
guang hao haohao testuser testuser1
3、id 查看用户的UID等相关信息
命令格式:id [option] [username]
命令选项:
-u:查看UID
[root@hao ~]# id -u testuser1
1002
-g:查看基本组
[root@hao ~]# id -g testuser1
1002
-G:查看其附加组和基本组
[root@hao ~]# id -G testuser1
1002 502
-n:显示名字而不是ID
[root@hao ~]# id -u -n testuser1
testuser1
[root@hao ~]# id -g -n testuser1
testuser1
[root@hao ~]# id -G -n testuser1
testuser1 mygroup
4、finger查看用户账号信息
命令格式: finger username
5、usermod修改用户账号属性
命令格式:usermod [option] username。用法同useradd,
命令选项:
-u:更改用户uid
-g:更改用户GID
-G:更改用户附加组,即覆盖原有的附加组。一般同-a选项一同使用,即添加用户到新的附加组,原来的附加组不被覆盖。
-c:更改注释信息
-d:更改家目录。如果原来家目录下已有该用户的文件夹,原家目录下的文件夹不会被迁移到新的家目录下。一般和-m选项一同使用,则可以使其原家目录下文件 迁移到新的家目录下。
-s:更改shell。
-l:更改用户名
-L:锁定账号
-U:解锁用户
6、chsh(change shell)修改用户shell
root@hao ~]# finger testuser1
Login: testuser1 Name:
Directory: /home/testuser1 Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[root@hao ~]# chsh testuser1
Changing shell for testuser1.
New shell [/bin/bash]: /bin/tcsh
Shell changed.
[root@hao ~]# finger testuser1
Login: testuser1 Name:
Directory: /home/testuser1 Shell: /bin/tcsh
Never logged in.
No mail.
No Plan.
7、chfn(change finger)修改注释信息
[root@hao ~]# chfn testuser1
Changing finger information for testuser1.
Name []: test
Office []: test
Office Phone []: 110
Home Phone []: 110 Finger information changed.
[root@hao ~]# tail -2 /etc/passwd
testuser1:x:1002:1002:test,test,110,110:/home/testuser1:/bin/tcsh
testuser2:x:1003:1003:haohao:/home/haohao:/bin/bash
8、 passwd 修改用户密码
普通用户只能使用不带参数的该命令更改自己的密码,管理员可以使用该命令更改其他用户的密码
命令格式:passwd [option][username]
root@hao:~# passwd user1
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
命令选项:
--stdin(standard in ):从标准输入读取密码。经测试Ubuntu没有该参数,可以使用chpasswd命令替换,chpasswd username password,均可以用echo输出指 定的信息,然后管道给这两个命令处理,如:
root@hao:~# echo "newpassword"|passwd user1 --stdin
root@hao:~# ehco "newpassword" |chpasswd user1
-l:锁定用户账号
-u:解锁用户
-d:删除密码
root@hao:~# tail -1 /etc/shadow
user1:$6$eKF3mI4G$O3pzjIQiRodxGRw9c4SVUAQ34oi8vOMcguGW4/7LBTYK2ADppH/sPVtqsjKP9ajZamXU8SmZgtm/uWKTtaxam/:16362:0:99999:7:::
root@hao:~# passwd -d user1
passwd: password expiry information changed.
root@hao:~# tail -1 /etc/shadow
user1::16362:0:99999:7:::
9、pwck(password check)检查用户完整性
[root@hao ~]# pwck
user 'adm': directory '/var/adm' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'gopher': directory '/var/gopher' does not exist
user 'ftp': directory '/var/ftp' does not exist
user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist
user 'saslauth': directory '/var/empty/saslauth' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
pwck: no changes
五、组管理
1、groupadd创建组
命令格式:groupadd [options] groupname
命令选项:
-g:指定GID
-r:添加系统组
[root@hao ~]# groupadd -r nginx
[root@hao ~]# tail -1 /etc/group
nginx:x:492:
2、groupmod修改组属性
命令格式:groupmod [options] groupname
命令选项:
-g:修改GID
-n:修改groupname
3、groupdel删除一个组
4、gpasswd给组加密码
命令格式:gpasswd groupname
用户创建一个文件,该文件的属主为该文件,属组为该用户所在的基本组
[root@hao ~]# useradd hadoop
[root@hao ~]# su - hadoop
[hadoop@hao ~]$ cd /tmp
[hadoop@hao tmp]$ touch a.hadoop
[hadoop@hao tmp]$ ll
total 40
-rw-rw-r--. 1 hadoop hadoop 0 Nov 4 12:09 a.hadoop
drwx------. 2 hao hao 4096 Aug 6 15:58 keyring-4BcUXT
drwx------. 2 hao hao 4096 Jul 27 12:49 keyring-DTEmAL
drwx------. 2 hao hao 4096 Jul 27 13:01 keyring-FD7mUX
drwx------. 2 hao hao 4096 Aug 4 16:58 keyring-YtvBn9
drwx------. 2 hao hao 4096 Jul 26 13:05 keyring-ZCIk4h
drwx------. 2 root root 4096 Jul 26 12:48 keyring-l3Td4R
drwx------. 2 gdm gdm 4096 Nov 4 10:00 orbit-gdm
drwx------. 2 gdm gdm 4096 Nov 4 09:59 pulse-0dTthpTUZIEl
drwx------. 2 hao hao 4096 Aug 6 15:58 pulse-1lfMnULTO8sm
drwx------. 2 root root 4096 Jul 26 12:48 pulse-u8BNu0nCsMTX
[hadoop@hao tmp]$ id
uid=1004(hadoop) gid=1004(hadoop) groups=1004(hadoop) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
5、newgrp:将用户的基本组临时切换到其他组(登陆到其他组)
只有当用户跟所切换到的组没有任何关系时(即要切换到的组也不是该用户的附加组时),需要输入密码。可以用exit退出
[root@hao ~]# gpasswd mygroup
Changing the password for group mygroup
New Password:
Re-enter new password:
[root@hao ~]# su - hadoop
[hadoop@hao ~]$ cd /tmp
[hadoop@hao tmp]$ newgrp mygroup
Password:
[hadoop@hao tmp]$ id
uid=1004(hadoop) gid=502(mygroup) groups=1004(hadoop),502(mygroup) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[hadoop@hao tmp]$ touch b.hadoop
[hadoop@hao tmp]$ ll
total 40
-rw-rw-r--. 1 hadoop hadoop 0 Nov 4 12:09 a.hadoop
-rw-r--r--. 1 hadoop mygroup 0 Nov 4 12:21 b.hadoop
drwx------. 2 hao hao 4096 Aug 6 15:58 keyring-4BcUXT
drwx------. 2 hao hao 4096 Jul 27 12:49 keyring-DTEmAL
drwx------. 2 hao hao 4096 Jul 27 13:01 keyring-FD7mUX
drwx------. 2 hao hao 4096 Aug 4 16:58 keyring-YtvBn9
drwx------. 2 hao hao 4096 Jul 26 13:05 keyring-ZCIk4h
drwx------. 2 root root 4096 Jul 26 12:48 keyring-l3Td4R
drwx------. 2 gdm gdm 4096 Nov 4 10:00 orbit-gdm
drwx------. 2 gdm gdm 4096 Nov 4 09:59 pulse-0dTthpTUZIEl
drwx------. 2 hao hao 4096 Aug 6 15:58 pulse-1lfMnULTO8sm
drwx------. 2 root root 4096 Jul 26 12:48 pulse-u8BNu0nCsMTX
【linux】用户与组的更多相关文章
- linux 用户和组操作
linux用户操作 查看登陆用户:whoami (结果最简洁) 或者who mom likes 或者who am i查看所有用户:cat /etc/passwd 添加:sudo adduser lil ...
- linux学习16 Linux用户和组管理命令演练和实战应用
一.上集回顾 1.bash globing,IO重定向及管道 glob:*,?,[],[^] IO重定向: >,>>, 2>,2>> &>,& ...
- linux用户和组 之 用户管理
一. linux 用户和组的基本介绍 1.linux下 有三种用户: 1. root: 权限最大的. 2. 系统用户: UID小于1000的.系统服务管理用户,一般是不允许登录系统的.(比如mysql ...
- Linux —用户和组
Linux 用户和组 1.用户和组的概念 用户的作用: Authentication:认证 Authorization:授权 Accouting:审计 用户存在的最终目的: 为了实现资源的分派 组的作 ...
- linux用户和组管理,/etc/passwd 、/etc/shadow和/etc/group 文件内容解释
与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用户资讯的加密文件,比如用户的密码口令的加密保存等: /etc/passwd 和/etc/s ...
- linux用户、组管理及权限(一)
一.用户管理 1.为什么需要用户 1)计算机及网络资源的合理分配 2)可以控制用户访问系统的权限.3)身份认证 4) 进程 以某个用户的身份来运行 2.用户分类 用户的角色是通过UID(用户ID)来 ...
- linux用户及组管理
useradd 添加用户 passwd 修改用户密码 userdel 删除用户,默认不删除用户主目录和email,如果想删除可加 –r 参数 groupadd 添 ...
- java程序员菜鸟进阶(十五)linux基础入门(三)linux用户和组管理
我们大家都知道,要登录linux操作系统,我们必须要有一个用户名和密码.每一个用户都由一个惟一的身份来标识,这个标识叫做用户ID.系统中的每一个用户也至少需要属于一个"用户分组". ...
- Linux 用户与组的基本操作及文件权限位的设置方法
用户的基本操作 添加用户: useradd xxx 查看所有的用户: cat /etc/passwd 用户更改组: usermod -G groups loginname 将用户从组中删除: gpas ...
- Linux 用户与组
在 Linux 操作系统下,如何添加一个新用户到一个特定的组中?如何同时将用户添加到多个组中?又如何将一个已存在的用户移动到某个组或者给他增加一个组?对于不常用 Linux 的人来讲,记忆 Linux ...
随机推荐
- GreenOpenPaint的实现(二)打开显示图片
1.DOC中添加,核心图片文件保存在这里.之所以不用Mat,是因为CVVImage有更好的输入输出函数. 我这里直接使用了public public: CvvImage m_image; 2.重载打开 ...
- 20145329 《网络对抗技术》 逆向及Bof基础实验
1.实验内容 本次实践的对象是一个名为20145329的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段,ge ...
- MySQL 学习笔记整理
1. 创建表 CREATE TABLE item( ID INT(6) NOT NULL AUTO_INCREMENT, Name CHAR(32) NOT NULL, Price DECI ...
- python排序算法实现(冒泡、选择、插入)
python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)) ...
- 【postman】利用谷歌浏览器插件生成代码
Postman这款工具可以让你很方便的测试你的Web API,那如果你实在是没办法用Postman,必须手写代码,又或者你有别的需求是Postman没法实现的,你必须写一个特殊的script或App来 ...
- [微信开发] - 从最新的appid,appsecret读取配置信息
设置好form表单,填写参数传入Java后端做为实例bean,接着存储倒数据库. 当微信端接口配置提交时,Java接口从数据库获取最新的配置信息,可以根据increaseID,也可以设置时间段, 这里 ...
- Cube Solution
- python判断key是否存在
d = {: , : , : , : , : , : } def is_key_present(x): if x in d: print('Key is present in the dictiona ...
- Qt532_WebKit_SSL问题
1.打开网页"http://www.baidu.com",它会跳转至"https://www.baidu.com/",使用 SSL了,于是 WebView 出现 ...
- callee 与 caller
arguments.callee 在函数内部指向函数本身 1.函数调用 function sum (num){ if(num <= 1){ return 1; }else{ return num ...