1*4882a593SmuzhiyunSUMMARY = "Example recipe for using inherit useradd" 2*4882a593SmuzhiyunDESCRIPTION = "This recipe serves as an example for using features from useradd.bbclass" 3*4882a593SmuzhiyunSECTION = "examples" 4*4882a593SmuzhiyunPR = "r1" 5*4882a593SmuzhiyunLICENSE = "MIT" 6*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunSRC_URI = "file://file1 \ 9*4882a593Smuzhiyun file://file2 \ 10*4882a593Smuzhiyun file://file3 \ 11*4882a593Smuzhiyun file://file4" 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunS = "${WORKDIR}" 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunPACKAGES =+ "${PN}-user3" 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunEXCLUDE_FROM_WORLD = "1" 18*4882a593Smuzhiyun 19*4882a593Smuzhiyuninherit useradd 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun# You must set USERADD_PACKAGES when you inherit useradd. This 22*4882a593Smuzhiyun# lists which output packages will include the user/group 23*4882a593Smuzhiyun# creation code. 24*4882a593SmuzhiyunUSERADD_PACKAGES = "${PN} ${PN}-user3" 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun# You must also set USERADD_PARAM and/or GROUPADD_PARAM when 27*4882a593Smuzhiyun# you inherit useradd. 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun# USERADD_PARAM specifies command line options to pass to the 30*4882a593Smuzhiyun# useradd command. Multiple users can be created by separating 31*4882a593Smuzhiyun# the commands with a semicolon. Here we'll create two users, 32*4882a593Smuzhiyun# user1 and user2: 33*4882a593SmuzhiyunUSERADD_PARAM:${PN} = "-u 1200 -d /home/user1 -r -s /bin/bash user1; -u 1201 -d /home/user2 -r -s /bin/bash user2" 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun# user3 will be managed in the useradd-example-user3 pacakge: 36*4882a593Smuzhiyun# As an example, we use the -P option to set clear text password for user3 37*4882a593SmuzhiyunUSERADD_PARAM:${PN}-user3 = "-u 1202 -d /home/user3 -r -s /bin/bash -P 'user3' user3" 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun# GROUPADD_PARAM works the same way, which you set to the options 40*4882a593Smuzhiyun# you'd normally pass to the groupadd command. This will create 41*4882a593Smuzhiyun# groups group1 and group2: 42*4882a593SmuzhiyunGROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2" 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun# Likewise, we'll manage group3 in the useradd-example-user3 package: 45*4882a593SmuzhiyunGROUPADD_PARAM:${PN}-user3 = "-g 900 group3" 46*4882a593Smuzhiyun 47*4882a593Smuzhiyundo_install () { 48*4882a593Smuzhiyun install -d -m 755 ${D}${datadir}/user1 49*4882a593Smuzhiyun install -d -m 755 ${D}${datadir}/user2 50*4882a593Smuzhiyun install -d -m 755 ${D}${datadir}/user3 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun install -p -m 644 file1 ${D}${datadir}/user1/ 53*4882a593Smuzhiyun install -p -m 644 file2 ${D}${datadir}/user1/ 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun install -p -m 644 file2 ${D}${datadir}/user2/ 56*4882a593Smuzhiyun install -p -m 644 file3 ${D}${datadir}/user2/ 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun install -p -m 644 file3 ${D}${datadir}/user3/ 59*4882a593Smuzhiyun install -p -m 644 file4 ${D}${datadir}/user3/ 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun # The new users and groups are created before the do_install 62*4882a593Smuzhiyun # step, so you are now free to make use of them: 63*4882a593Smuzhiyun chown -R user1 ${D}${datadir}/user1 64*4882a593Smuzhiyun chown -R user2 ${D}${datadir}/user2 65*4882a593Smuzhiyun chown -R user3 ${D}${datadir}/user3 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun chgrp -R group1 ${D}${datadir}/user1 68*4882a593Smuzhiyun chgrp -R group2 ${D}${datadir}/user2 69*4882a593Smuzhiyun chgrp -R group3 ${D}${datadir}/user3 70*4882a593Smuzhiyun} 71*4882a593Smuzhiyun 72*4882a593SmuzhiyunFILES:${PN} = "${datadir}/user1/* ${datadir}/user2/*" 73*4882a593SmuzhiyunFILES:${PN}-user3 = "${datadir}/user3/*" 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun# Prevents do_package failures with: 76*4882a593Smuzhiyun# debugsources.list: No such file or directory: 77*4882a593SmuzhiyunINHIBIT_PACKAGE_DEBUG_SPLIT = "1" 78