查看信息查看文件和文件夹的文件系统元数据#查看**单个**文件和文件夹权限信息statfilename#或者使用如下命令查看当前目录**所有**文件和文件夹权限信息ls-la#显示用户名、组名ls-na#显示用户id、组idls-l各栏含义:本博客。查询用户和组信息#查看当前用户(准确的说是当前bash进程的所有者)的信息:id#查看指定用户的信息:idusernameiduserid#查看当前的用户(准确的说是当前bash进程的所有者)当前bash进程)用户的所有组:groups#查看指定用户的所有组(注意命令必须输入username,不是userid):groupsusername#查看**所有**用户信息:cat/etc/passwd#查看**所有**组信息:cat/etc/groupcurrentgroup执行id命令后,会看到返回的结果,包括gid和groups。关于gid和groups的区别:gid只是当前登录的组,而groups列出了用户所属的所有组。一个用户所属的组可以有多个,但在同一时刻,一个用户只能登录一个组。后面会介绍newgrp命令,使用它,用户可以切换到其他组。主要组和补充组用户所属的组可以有多个,可以指定其中一个为主要组,其余为补充组。main组是GUI登录、命令行窗口打开、ssh登录后的默认登录组。下面会提到修改主组和补充组的usermod命令。Ubuntu中的主要组和次要组有什么区别?RealUserID、EffectiveUserID、SavedUserID在查看某些命令(如id)的手册时,可能会注意到userid也分为RealUserID、EffectiveUserID、SavedUserID三种。这三个UID保存在每个进程的进程描述符表中。Linux进程权限研究——realuserid,effectiveuserid,savedset-user-idUser_identifier-wikipediaRealUserID,EffectiveUserID,SavedUserID的区别查看系统中所有进程和进程所有者psauxps命令非常强大,它可以给你几乎所有你需要的进程信息!设置几个参数可以让它输出我们想要的进程信息:ps--pid25138-Ouid,uname,gid,group,ppid以上参数表示我要查看pid为6685的进程,默认的除外除了列之外,还会显示几个列:uid、uname、gid、group、ppid。输出结果如下:在ps手册中,可以找到该命令的更多用法和可以显示的更多栏目:在docker容器中使用ps命令在docker容器中的bash中使用ps命令时,非常很可能会提示你ps命令不存在,这是因为docker镜像往往会简化ps程序(毕竟docker容器中运行的进程一般只有一个)。这时候使用apt-getupdate&&apt-getinstallprocps安装ps。在国内连接国外的Ubuntu软件源服务器可能会很慢。这时候就应该更改ubuntu的软件源(可以通过系统设置来更改)。如果在docker容器内使用apt,则需要手动更改软件源。首先通过UbuntuSourcesListGenerator自定义满足你需求的sources.list文件(至少选择“Main-Officiallysupportedsoftware.”项),然后将这个文件放在路径/etc/apt/sources.list中容器(可以使用命令dockercp./sources.list容器名称:/etc/apt/sources.list或Dockerfile的COPY./sources.list/etc/apt/sources.list命令)。修改文件元信息chmodmodifyfileandfolderpermissions#修改文件和文件夹权限(如果要修改不属于当前用户的文件,还需要使用sudo)chmod755filename#递归修改文件夹和所有文件文件夹权限(注意sudo和-R的使用)sudochmod777-R/path/to/directorychown修改文件的所有者,所有者组执行此修改时必须使用sudo。#修改文件/文件夹的所有者sudochownusernamefilename#修改文件/文件夹所属的组sudochown:groupnamefilename#同时修改文件/文件夹的所有者和所属组sudochownusername:groupnamefilename#添加-R参数递归修改文件夹,文件夹内所有文件!上面的username和groupname也可以换成userid和groupid。使用userid和groupid有一个非常方便的地方:userid和groupid在当前系统中可能不存在,这在使用dockerbind-mountvolume时非常有用!请参阅ubuntu文档。修改用户和组信息,新建和删除新的用户和组,分配如下两个命令:adduseraddgroupadduser和addgroup的手册页其实一模一样,功能也很相似,只不过adduser对应user,addgroup对应组。使用这两个命令来做这些事情:Createanewnormaluseradduser[options][--homeDIR][--shellSHELL][--no-create-home][--uidID][--firstuidID][--lastuidID][--ingroupGROUP|--gidID][--disabled-password][--disabled-login][--gecosGECOS][--add_extra_groups][--encrypt-home]usercreateanewsystemuseradduser--system[options][--homeDIR][--shellSHELL][--no-create-home][--uidID][--group|--ingroup组|--gidID][--disabled-password][--disabled-login][--gecosGECOS]用户创建新用户groupaddgroup[options][--gidID]group创建新系统groupaddgroup--system[options][--gidID]group添加现有用户到现有组adduser[options]usergroup五个功能的解释,以及每个功能可以使用的参数,在手册中有详细说明.同样,对于用户和组的删除,分别有deluser和delgroup,他们的手册完全一样。修改现有用户和用户组修改现有用户和用户组相关的工作交给了以下两个命令:,加入的其他组,用户ID。对于groupmod,常用的参数是--gid--new-name,分别修改组id和组名。切换用户,切换组切换用户在bash中切换用户后,通过这个bash执行的子程序将以新用户身份完成。请注意,只有当前bash进程的所有者发生了变化。不像Windows那样退出整个系统,重新登录为新用户!在这个回答中提到,只需要在命令行使用如下命令切换用户即可:su-usernameswitchgroup前面说过,一个用户可以加入多个组,但任何时候只能登录一个组。要切换当前用户登录的组,请使用newgrp命令。newgrp-groupname创建新用户并加入sudo用户组的实践教程
