Linux-用户及权限

1. 用户组

RHEL 7/CentOS 7系统中的用户组有如下3类:
超级用户,UID 0:系统的超级用户。
系统用户,UID 1-999:系统中系统服务由不同用户运行,更加安全,默认被限制不能登录系统。
普通用户,UID1000~60000:即管理员创建的用于日常工作而不能管理系统的普通用户。

1.1 groupadd 添加用户组

一般创建用户的时候会自动创建与用户名相同的基本组,而groupadd命令通常单独创建用户组,并且作为部分用户的附加组,便于对这部分用户的权限做集中管理。
语法

groupadd [选项] group

示例

# 创建一个名为xxx的用户组
groupadd xxx
# 创建一个名为xxx的用户组,同时指定GID为1234
groupadd -g 1234 xxx
# 创建一个名为mariadb的系统组
groupadd -r mariadb
# 创建一个名为docker的系统组,同时指定GID为888
groupadd -r -g 888 docker

1.2 groupmod 修改组属性

语法

roupmod [选项] GROUP

示例

# 将名为mariadb的组重命名为mysql
groupmod -n mysql mariadb
# 将名为nginx的组GID改为777
groupmod -g 777 nginx

1.3 groupdel 删除用户组

示例

# 删除名为docker的用户组
groupdel docker

1.4 gpasswd 组(密码/用户)操作

语法

gpasswd [选项] 组

选项

  -a, --add USER                向组 GROUP 中添加用户 USER
  -d, --delete USER             从组 GROUP 中添加或删除用户
  -h, --help                    显示此帮助信息并推出
  -Q, --root CHROOT_DIR         要 chroot 进的目录
  -r, --delete-password         Remove the password from the named group. The group password will be empty. Only group members will be allowed to use newgrp to join the named group.
  -R, --restrict                Restrict the access to the named group. The group password is set to "!". Only group members with a password will be allowed to use newgrp to join the named group.
  -M, --members USER,...        设置组 GROUP 的成员列表
  -A, --administrators ADMIN,...    设置组的管理员列表

示例

# 向group1组中添加用户user1
gpasswd -a user1 group1
# 从group1组中删除用户
gpasswd -d user1 group1   
# 移除组密码      
gpasswd -r group1
# 设置group1组的成员为user1、user2
gpasswd -M user1,user2 group1
# 设置group1组的管理员为user1、user2
gpasswd -A user1,user2 group1

1.5 newgrp (临时)登录到指定的组

语法

newgrp [-] [group]
-: 会模拟用户重新登录以实现重新初始化其工作环境;

2. 用户

2.1 useradd 创建用户

# 用法
useradd [选项] 用户名 (创建用户,默认设定配置文件/etc/login.defs)
useradd -D:显示创建用户的默认配置;
useradd -D 选项: 修改默认选项的值;(结果保存于/etc/default/useradd文件中)

# 选项(更多选项查看帮助)
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本组ID,此组得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
-c, --comment COMMENT:指明注释信息;
-d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
-s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
-r, --system:创建系统用户;

2.2 usermod:修改用户属性

# 用法
usermod [选项] 登录

# 选项
-u, --uid UID:修改用户的ID为此处指定的新UID;
-g, --gid GROUP:修改用户所属的基本组;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
-a, --append:与-G一同使用,用于为用户追加新的附加组;
-c, --comment COMMENT:修改注释信息;
-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
-l, --login NEW_LOGIN:修改用户名;
-s, --shell SHELL:修改用户的默认shell;
-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
-U, --unlock:解锁用户的密码;

2.3 user del:删除用户

# 用法
userdel [选项] 用户名

# 选项
-r:删除用户时一并删除其家目录;

2.4 passwd:设置密码属性

# 用法
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:修改用户自己的密码;
(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;

# 选项
-l, -u:锁定和解锁用户;
-d:清除用户密码串;
-e DATE: 过期期限,日期;
-i DAYS:非活动期限;
-n DAYS:密码的最短使用期限;
-x DAYS:密码的最长使用期限;
-w DAYS:警告期限;
--stdin:从标准输入读取密码,如 echo "PASSWORD" | passwd --stdin USERNAME

2.5 su:switch user

# 用法
su [options...] [-] [user [args...]]

# 说明
登录式切换:会通过读取目标用户的配置文件来重新初始化
  su - USERNAME
  su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
  su USERNAME

注意:管理员可无密码切换至其它任何用户;

-c 'COMMAND':仅以指定用户的身份运行此处指定的命令;

3. 相关文件

3.1 /etc/passwd:用户信息

# 格式如下
name:password:UID:GID:GECOS:directory:shell
# name: 用户名
# password:可以是加密的密码,也可是占位符x;
# UID:用户ID;
# GID:用户所属的主组的ID;
# GECOS:注释信息;
# directory:用户的家目录;
# shell:用户的默认shell,登录时默认shell程序;

3.2 /etc/shadow:用户密码

# 格式如下
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段

3.3 /etc/group:用户组信息

group_name:password:GID:user_list
user_list:该组的用户成员;以此组为附加组的用户的用户列表;

4. 用户权限

4.1 chmod
注意:用户仅能修改属主为自己的那些文件的权限;

# 用法
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

# 选项
-R, --recursive change files and directories recursively(递归)

# 示例&说明
chmod 755 FILE
chmod ugo+rwx FILE
chmod a-w FILE
a:所有,u:属主,g:属组,o:其它;
r:读,w:写,x:执行
chmod --reference=RFILE FILE(将FILE的权限修改为与RFILE一致)

4.2 chown:修改文件的属主、属组(修改属组相当于chgrp)
注意:仅管理员可修改文件的属主和属组

# 用法
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

# 选项
-R, --recursive operate on files and directories recursively(递归)

# 示例&说明
chown user1:group1 FILE (将FILE的属主设为user1,属组设为group1)
chgrp --reference=RFILE FILE(将FILE的属主、属组修改为与RFILE一致)

5. 特殊权限

5.1 SUID

默认情况下,进程其以发起者的身份运行(前提:发起者具有该程序的执行权限);
SUID可以使没有该程序的执行权限的用户,临时以该程序属主的身份运行该程序。

  • 功能:
    让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)

  • 用法:

chmod u+|-s FILE...     
# 展示位置(属主的执行权限位):
# 如果属主原本有执行权限,显示为小写s; 
# 否则,显示为大写S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

5.2 SGID

  • 功能:
    1)让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
    2)在该目录中创建的文件自动继承此目录的用户组(只可以对目录设置)

  • 用法:

chmod g+|-s FILE...     
# 展示位置(属组的执行权限位):
# 如果属组原本有执行权限,显示为小写s; 
# 否则,显示为大写S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

5.3 SBIT(Sticky BIT)

  • 功用:
    对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件;如果为此类目录设置Sticky BIT权限,则每个用户能创建新文件,且只能删除自己的文件;

  • 用法:

chmod o+|-t FILE...         
# 展示位置(其它用户的执行权限位)
# 如果其它用户原本有执行权限,显示为小写t; 
# 否则,显示为大写T;
  • 示例:
# 系统上的/tmp和/var/tmp目录默认均有Sticky BIT权限;
[root@VM_0_171_centos ~]# ls -ld /tmp /var/tmp
drwxrwxrwt. 7 root root 4096 5月   6 14:58 /tmp
drwxrwxrwt. 2 root root 4096 4月   4 14:59 /var/tmp

补充:管理特殊权限的另一方式:

SUID SGID SBIT 左右交叉组合 一般权限
0 0 0 ... 0
0 0 1 ... 1
0 1 0 ... 2
0 1 1 ... 3
1 0 0 ... 4
1 0 1 ... 5
1 1 0 ... 6
1 1 1 ... 7

基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;
例如:chmod 1777

6. 隐藏权限

在Linux系统中除了能对文件设置一般权限和特殊权限外还有一种叫做隐藏权限的功能

6.1 chattr:设置文件的隐藏权限

用法

chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...

OPTIONS

-R  递归设置目录中的文件权限
-V  详尽打印输出信息
-f  抑制多数错误信息
-v version  设置文件版本

参数说明(来自man帮助文档):

The letters 'aAcCdDeijsStTu' select the new attributes for the files:
append only (a), no atime updates (A), compressed (c), no copy on write(C), no dump (d), synchronous directory updates (D), extent format (e),immutable (i), data journalling (j), secure deletion (s), synchronous updates (S), no tail-merging (t), top of directory hierarchy (T), and undeletable (u).

示例

[root@VM_0_171_centos tmp]# chattr -V +i acl
chattr 1.42.9 (28-Dec-2013)
acl的标志被设为 ----i-----------
[root@VM_0_171_centos tmp]#

6.2 lsattr:查看文件的隐藏权限

用法

lsattr [ -RVadv ] [ files...  ]

OPTIONS

-R     递归
-V     显示lsattr程序版本号
-a     List all files in directories, including files that  start  with '.'
-d     查询目录本身
-v     显示文件版本号

示例

[root@VM_0_171_centos tmp]# lsattr -v
  123 suS-iadAcj-t---- ./acl
687539122 ---------------- ./attr
7. 文件访问控制列表facl

指定的特定用户或用户组对某个文件的操作权限(在原来的u、g、o之外,另一层对用户或用户组的赋权机制)

7.1 setfacl
用法:

# 赋权给用户
setfacl  -m  u:USERNAME:MODE  FILE...
# 赋权给用户组
setfacl  -m  g:GROUPNAME:MODE FILE...
# 撤销赋权
setfacl  -x u:USERNAME  FILE...
setfacl  -x  g:GROUPNAME  FILE...

7.2 getfacl
用法:

getfacl FILE...

示例:

# 对acl文件为gentoo用户赋予rwx选项
[root@VM_0_171_centos tmp]# setfacl -m u:gentoo:rwx acl
# 查询文件的访问控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
user:gentoo:rwx
group::r--
mask::rwx
other::r--
# 撤销acl文件对gentoo用户的赋权
[root@VM_0_171_centos tmp]# setfacl -x u:gentoo acl
# 再次查询访问控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
# 设置访问控制列表后,文件的权限位后会增加一个+
[root@VM_0_171_centos tmp]# ls -l acl
-rw-r--r--+ 1 root root 35 5月   6 16:31 acl
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容