linux附属组
❶ linux中用户怎么加入附属组
可以使用usermod命令。usermod可用来修改用户帐号的各项设定。
需要使用的参数:
-G|--groups
##把用户追加到某些附属组中,仅与-a选项一起使用
用法示例:
将user1用户加入到group1组当中
$
usermode
-aG
group1
user1
❷ linux一个用户可以有主组和附属组,那么该用户创建的文件所属组只能是主组吗
可以实现
setfacl
设置文件访问控制列表
❸ Linux系统-文件系统&用户组管理-问题解答
1)ls
ls -l /home/ #显示home目录下文件或文件夹的包括访问权限、所属用户、所属主组、文件大小等信息, ls -l 也是别名ll的命令与选项部分。
ls -a /root #显示root目录下包括隐藏文件在内的所有文件
ls -d /etc/* #显示etc目录下所有子目录(不包括文件)
ls -S /root #按文件从大到小排列显示root目录下各文件
ls -Sr /root #按文件从小到大排列显示root目录下各文件
ls -U /root #按文件创建时间从新到旧排列显示root目录下各文件
ls -X /root #按文件后缀排序显示root目录下各文件
ls -R /root #递归显示root目录下所有文件
ls -t /root #按修改数据内容的时间(mtime)从新到旧排列显示root目录下各文件
2)touch
touch /data/file1 #在data目录下创建file1文件,如果目录下已经有同名文件,则不会覆盖同名文件
touch -t 201910200830.50 /etc/hosts #修改/etc/hosts文件的atime以及mtime的时间戳为2019年10月20日8点30分50秒
touch -c /data/f2 #刷新data目录下f2文件的atime、mtime、ctime,如果f2文件不存在,则不会创建f2
3)cp
cp etc/hosts /home/ #复制/etc/hosts文件到 /home目录下,如果home目录下没有hosts文件,则自动创建同名文件;如果有,则会直接覆盖。
cp -i etc/hosts /home/ #复制/etc/hosts文件到 /home目录下,如果home目录下没有hosts文件,则自动创建同名文件;如果有,则会询问用户是否覆盖。
cp -r /etc/ntp /root #复制/etc/ntp目录下所有子目录以及文件到root目录下
cp -a /home/* /data/ #复制/home/目录下所有子目录以及文件到data目录下,所有文件的类型、软链接、文件所属关系、时间戳等信息都一并复制(但是home目录下的隐藏文件不会被复制到data目录下)
cp -av /home/* /data/ #在实现cp -a /home/* /data/ 复制的基础上,在终端上显示复制过程
cp -u /etc/* /data/ #将etc目录下的文件复制到data目录下,如果etc目录的文件比data目录下的同名文件新,则覆盖data目录下的同名文件,如果etc目录下的文件比data目录里的与之同名文件旧,则不覆盖。
cp --backup=numbered etc/hosts /home/hosts #将etc目录下hosts文件复制到home目录下的hosts,在复制之前,会先对home目录的hosts文件进行备份,避免被覆盖后,原文件内容丢失。
4)mv
mv /etc/hosts /data/ #将etc目录下hosts文件转移到data目录下,如果data目录有同名文件,则直接覆盖
mv -i /etc/hosts /data/ #将etc目录下hosts文件转移到data目录下,如果data目录有同名文件,则询问是否覆盖
mv f1 f2 #将当前目录下的f1文件修改名字为f2
mv -t /data/ /etc/hosts #将etc目录下hosts文件转移到data目录下,如果data目录有同名文件,则直接覆盖 。功能实现上与mv /etc/hosts /data/ 相同,但是移出路径参数与移入路径参数的位置发生了互换
mv downloads/ D #将当前目录下的downloads目录的名字改成D
5)rm
rm /data/f1 #删除data目录下的f1文件
rm -r /data/* #递归删除data目录下的所有文件
rm -rf /data/* #强制递归删除data目录下的所有文件
6)file
file /etc/hosts #查看etc目录下hosts文件的文件类型,如文本文件、压缩文件、可执行程序等
7)stat
stat /data/f1 #查看/data/f1文件的三个时间,内容数据修改时间mtime,读取时间atime,元数据修改时间ctime
8)pwd
#在当前目录下输入pwd回车,查看当前所在目录路径
pwd -P #显示当前目录或文件夹的真实路径
9)cd
cd /data #进入data目录
cd ~root #进入root的家目录
cd - #回到刚才离开的目录
10)mkdir
mkdir /data/dir #在data目录下创建dir目录
mkdir -p /data/dir1/dir2/dir3/dir4 #在data目录下创建子目录dir1/dir2/dir3/dir4,若dir1、dir2、dir3都不存在,则递归创建
11)rmdir
rmdir /data/dir #删除data目录下的dir目录,如果dir里面有文件,则dir不能被删除
rmdir -p /data/dir1/dir2/dir3/dir4 #若dir1、dir2、dir3、dir4都是空目录,则递归删除data目录下的dir1、dir2、dir3、dir4目录
12)ln
ln /data/f1 /data/f2 #在data目录下创建文件f1的硬链接f2
ln -s f1 f1.link #在当前目录下创建文件f1的软链接f1.link
#当软链接路径与原文件路径不同时,如软链接位置是:/root/f1.link ,而原文件路径是:/data/f1 。 则在创建软链接时需要相对于软链接的路径,对原文件路径补完相对路径,具体如下:
ln -s ../data/f1 /root/f1.link
答:
1)创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b
mkdir /tmp/a{1,2}
touch /tmp/a1/{a,b}
2)在/tmp目录下创建目录:x_y, x_z, q_y, q_z
mkdir /tmp/{x,q}_{y,z}
答:文件的元数据信息包括:
文件类型: 指文件所属的类型,包括目录、文本文件、压缩文件、可执行程序等。系统实际上查看文件的头部信息,magic number。
节点编号: 每个文件、文件夹在同一个磁盘分区内,都有一个唯一的节点编号inode,用于识别磁盘分区内的文件。节点编号的数量在一个磁盘分区内是有限的,如果节点编号耗尽,无论磁盘空间是否真的占满,都会显示磁盘空间已满。
硬链接数: 是指指向该文件节点编号inode的文件名称数量。
所属用户UID: 创建该文件的用户的uid
所属主组GID: 创建该文件的用户的主组gid
文件大小: 表示该文件的磁盘空间占用大小
mtime时间戳: 指文件的内容数据发生修改时的时间点
atime时间戳: 指文件被访问时的时间点
ctime时间戳: 指文件的元数据发生变化时的时间点
访问权限: 指不同用户对文件的访问、修改、执行等操作的权限
指向磁盘数据块的直接指针: 直接指向磁盘数据块的指针,一个文件最多有12个直接指针,每个直接指针指向一个4k大小的数据块
指向磁盘数据块的间接指针: 间接指向磁盘数据块的指针,一个间接指针会先指向一个4k大小数据块作为次阶指针表,该数据块又分成1024个4字节大小的区间,一个区间存储一个次阶的指针,次阶指针指向一个4k的磁盘数据块存储真正的文件数据,若依然不能满足空间要求,则可继续嵌套次阶指针表,直到满足文件存储要求为止。
查看元数据信息方式:
1)ls -l /data #可查看data目录下非隐藏文件的访问权限、所属用户UID、所属用户主组GID、mtime时间戳、文件大小、硬链接数。
2)stat /root/bin #可查看root目录下bin目录的atime时间戳、mtime时间戳、ctime时间戳
3)ls -lc /root/ #查看root目录下非隐藏文件的ctime时间戳
4)ls -lu /root/ #查看root目录下非隐藏文件的atime时间戳
5)ls -i /root #查看root目录下所有非隐藏文件的节点编号
6)file /root/.bashrc #查看root目录下.bashrc文件的文件类型
修改文件的时间戳信息:
touch -t 201910200830.50 /etc/hosts #将etc目录下hosts文件的atime和mtime时间戳修改成2019年10月2日8时30分50秒
touch -a /etc/hosts #更新etc目录下hosts文件的atime和ctime为当前时间
touch -m /etc/hosts #更新etc目录下hosts文件的mtime和ctime为当前时间
答: touch /tmp/tfile-`date +"%F-%H-%M-%S"`
答:
mkdir /tmp/mytest1 #先创建mytest1目录
cp -a /etc/p*[^0-9] /tmp/mytest1/
或:
cp -a /etc/p*[^[:digit:]] /tmp/mytest1/
答:
useradd -u 5001 -md /tmp/tom -s /bin/zsh -G jack tom
1)useradd
useradd jack #创建用户jack,用户策略采用系统默认配置
useradd -u 1008 jack #创建用户jack,指定用户的UID为1008
useradd -d /data/jack jack #创建用户jack,指定用户家目录路径为/data/jack
useradd -g 1111 jack #创建用户jack,指定用户主组是GID=1111的组,但GID=1111的组需要事先存在,否则无法创建
useradd -G tom jack #创建用户jack,指定用户jack加入附加组tom,但tom组需要事先存在,否则无法创建
useradd -s /bin/zsh jack #创建用户jack,制定用户jack的shell类型是zsh
useradd -r jack #创建系统用户jack,系统用户默认不创建家目录
useradd -r -md /data/jack jack #配合-d选项,创建系统用户jack,指定该系统用户创建家目录/data/jack,并在家目录中载入默认配置文件
useradd -N jack #创建用户jack,不创建jack同名主组,将jack主组默认为users
useradd -M jack #创建用户jack,强制用户jack不创建家目录
2)usermod
usermod -G wang jack #将jack用户的附加组更改为wang,原有附加组删除
usermod -aG wang jack #在不退出原有附加组情况下,jack用户增加附加组wang
usermod -l jacky jack #修改用户名称为jacky
usermod -e 20181212 jack #将用户jack的账号过期日期修改为2018年12月12日
usermod -s /bin/csh jack #修改用户jack的shell类型为csh,与命令: chsh -s /bin/csh jack 相等
usermod -c 'abcdefg' jack #编辑用户jack的注释为abcdefg
3)userdel
userdel jack #删除用户jack
userdel -r jack #删除用户jack,包括用户的家目录、邮箱
4)groupadd
groupadd -g 1010 leo #创建组leo,指定GID为1010
groupadd -r leo #创建系统组leo
5)groupmod
groupmod -n lee leo #修改组leo名字为lee
groupmod -g 1111 leo #修改组leo的GID为1111
6)groupdel
groupdel wang #删除wang组,但是wang组必须不是任何用户的主组,否则不可以删除
7)su
su jack #当前用户非登录切换到jack账号,不读取jack账号配置文件
su - jack #当前用户登录切换到jack账号,读取jack账号配置文件
8)groupmems
groupmems -l -g root #查看所有属于root组的用户
9)id
id #查看当前用户的UID名称 、 主组名称GID 、 附属组名称GID
id root #查看root用户的UID名称、 主组名称GID 、附属组名称GID
id -u root #查看root用户的UID名称
id -g root #查看root用户的主组名称GID
id -G root #查看root用户的主组名称GID 、 附属组名称GID
id -nG root #只查看root用户的主组名称 、 附属组名称
10)chfn
chfn jack #编辑修改用户jack的注释 ,与命令:usermod -c 'abcdefg' jack 类似
11)chsh
chsh -s /bin/csh jack #修改用户jack的shell类型为csh
12)chage
chage jack # 交互式修改用户jack的密码策略,包括修改:密码创建时间、最小密码修改期、密码有效期、过期通知、过期宽限期、账户有效时间
chage -l jack #查看用户jack的密码策略
chage -d 0 jack #让用户jack密码期限立即过期,重新登录需要更换密码
13)passwd
passwd #修改当前用户的账号密码
passwd jack #修改jack账号密码 (仅限root账号)
passwd -e jack #强制jack用户下次登录修改密码 (仅限root账号)
echo hello | passwd --stdin jack #利用管道标准输入,快速将jack用户密码修改成hello,无需输入两次新密码,不检验密码的复杂度
14)newgrp
newgrp root #将当前用户的主组切换成root,原主组切换成附属组,如果当前用户的附属组没有root组,切换时需要输入root组密码;如果当前用户的附属组包含root组,则无需输入组密码,直接切换
15)gpasswd
gpasswd jack #创建jack组密码
gpasswd -a wang jack #将wang用户添加至jack组里
16)groups
groups jack #查看用户jack所属的组列表
❹ Linux 中附属组和主组的区别
在使用useradd命令创建用户的时侯可以用-g 和-G 指定用户所属组和附属组。
基本组:如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名同名的组,这个组就是基本组,不可以把用户从基本组中删除。在创建文件时,文件的所属组就是用户的基本组。
附加组:除了基本组之外,用户所在的其他组,都是附加组。用户是可以从附加组中被删除的。
用户不论为与基本组中还是附加组中,就会拥有该组的权限。一个用户可以属于多个附加组。但是一个用户只能有一个基本组。
❺ Linux的介绍与应用
体系结构主要分为用户态的内核态。所谓内核本质上是一段管理计算机硬件设备的程序。所谓用户态上层应用程序的活动空间。内核必须为上层应用提供资源,CPU,存储,IO资源,这被称为系统调用,系统调用是不能被简化的操作,其他复杂调用都是多个系统调用组合的结果。
我们要查看所有的系统调用,可以使用命令
所得到的列表如下
其中 2 代表的意思是系统调用, 3 指的是公共库函数。公共库函数是封装系统调用,一组定义好的系统调用的组合。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Linux 的 Shell 常见的有:
在指定目录下查找文件。
find + 路径 + -name + “文件名”
之上的命令使用递归查找的方式查找到了 test 文件。如果我们想全局搜索则使用
当然find指令也支持表达式如果要查找所有以test开头的问题,查找方式可以使用
* 表示通配符,可以实现模糊查询。
如果要忽略大小写查询可以使用
对于grep使用过Linux的人基本都有接触过。下面列举一下grep的一些常用操作。
Linux系统用户是根据用户ID来识别的,默认ID长度为32位,用户ID限制在60000以下。
linux系统中的用户组(group)就是具有相同特性的用户(user)集合,通过组可以更加方便的管理用户,每个组拥有一个GroupID,每个用户属于一个主组,属于一个或多个附属组,一个用户最多有31个附属组。
Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作,Linux权限授权,默认是授权给三种角色,分别是user、group、other(其他用户)。
test目录详解如下:
d 表示目录,同一位置如果为-则表示普通文件;
rwxr-xr-x 表示三种角色的权限,每三位为一种角色,依次为u,g,o权限,如上则表示user的权限为rwx,group的权限为r-x,other的权限为r-x;
2表示文件夹的链接数量,可理解为该目录下子目录的数量;
4096表示该文件夹占据的字节数;
+、-、=代表加入、删除和等于对应权限
授予用户、组、其他人对test目录拥有rwx权限
撤销用户、组、其他人对test目录拥有x权限
Linux权限可以将rwx用二进制来表示,其中有权限用1表示,没有权限用0表示。
Linux权限用二进制显示如下:
rwx=111
r-x=101
rw-=110
r--=100
依次类推,转化为十进制,对应十进制结果显示如下:
rwx=111=4+2+1=7
r-x=101=4+0+1=5
rw-=110=4+4+0=6
r--=100=4+0+0=4
得出结论,用r=4,w=2,x=1来表示权限。
所以我们有时候使用
为文件赋予所有权限。
除了普通权限,Linux还有三个特殊权限
❻ 基本组和附属组有什么区别 Linux
Linux系统以组Group方式管理用户,用户和组的对应关系为多对多,即某个用户可加入/属于一个或多个组,某个组可以有0个、1个或多个用户。
组的分类
从用户的角度,分为主组和附属组。
主组:也被称为primary group、first group或initial login group,用户的默认组,用户的gid所标识的组。
附属组:也被称为Secondary group或supplementary group,用户的附加组。
通过id命令可查看当前用户的主组和附属组
[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[root@localhost ~]# id gg
uid=503(gg) gid=503(gg) groups=503(gg)
[root@localhost ~]# id mm
uid=502(mm) gid=500(jww) groups=500(jww)
gid标识主组,groups表示用户所属的全部组(主组和附属组)
1. 用户必须有且只能有一个主组,可以有0个、1个或多个附属组,就如我们一定会有一个用来安家的房子(类同主组),还可以有n个用于投资或其他打算的房子(附属组)。
2. 主组也为默认组,当用户own某个文件或目录时,默认该文件或目录的group owner为该用户的主组(当然,可以通过chgrp修改group owner)。
3. 在/etc/passwd文件中,记录行第四个字段为gid,即用户的主组id。
4. 在/etc/group文件中,记录行第四个字段为组的成员,不显示将该组作为主组的组成员,只显示将该组作为附属组的组成员,因此,/etc/group的记录行的第四个字段没有完整地列出该组的全部成员。
5. 当通过useradd命令创建新用户时,可以通过-g参数指定已存在的某个组为其主组,若没有使用-g参数,
则系统自动创建名称和用户名相同的组作为该用户的主组(前提是variable in /etc/login.defs的USERGROUPS_ENAB属性值为yes),如命令手册的useradd关于-g参数的描述所示:
-g, --gid GROUP
The group name or number of the user′s initial login group. The
group name must exist. A group number must refer to an already
existing group.
If not specified, the bahavior of useradd will depend on the
USERGROUPS_ENAB variable in /etc/login.defs. If this variable is
set to yes (or -U/--user-group is specified on the command line), a
group will be created for the user, with the same name as her
loginname. If the variable is set to no (or -N/--no-user-group is
specified on the command line), useradd will set the primary group
of the new user to the value specified by the GROUP variable in
/etc/default/useradd, or 100 by default.
另外,可通过usermod -g 将普通用户的主组/gid设置为系统中存在的任意某个组(永久性);
也可以通过newgrp暂时性变更当前用户的主组/gid(只对于当前login session有效,非永久性)。
通过usermod -G 设置普通用户的附属组。
❼ linux下基本组和附属组有什么区别
基本组:创建用户的时候系统会同时创建一个和这个用户名同名的组,这个组就是基本组,不可以把用户从基本组中删除。
附加组:除了基本组之外,用户所在的其他组,都是附加组。用户是可以从附加组中被删除的。
一个用户可以属于多个附加组。但是一个用户只能有一个基本组。
就像楼上说的,一个孩子诞生了,他的基本组就是亲生父母;他的附加组就是其他的干爹干妈。就这个意思。
❽ linux中的目录只有一个所属组吧有没有附数组
目录文件的属性分:所属用户、所属组、其他用户,这三类,其他组属于其他用户的范畴。
❾ Linux用户组管理
在创建用户时不会创建附属组,附属组只能通过命令创建
使用命令groupadd创建一个附属组,也可以在命令中添加参数 -g 指定组id,组id设置的时候应该大于1000,不能重复,重复有可能导致系统无法启动
groupadd这个命令并不能将用户添加进用户组中去,我们如何把用户添加进用户组中呢?
使用命令gpasswd加参数-a向一个用户组中添加用户,如果不加-a的话默认是修改或者设置组密码,使用到组密码的场景很少,至少我没有碰见过。
使用命令gpasswd和参数-d把一个用户从一个用户组中移除
删除组可以使用groupdel删除组
用户有自己的配置文件,组也有自己的配置文件,组的配置文件主要保存了组名称,组密码、组ID和组成员,这个配置文件统一保存在/etc/group文件中并以: 作为分隔符
❿ linux 查看文件的附属组,不是所属组,用groups 用户名只是查看用户,我想具体看某个文件的附属组
我试了试,文件只有一个所属组,不能有附属组,用户可以有多个组,文件所属组ls -l 就能看到